API Structure: Locations / Organization Units near me
This endpoint retrieves a list of organization units in proximity to the provided geographic coordinates.
URL : api/v2/locator
Method: GET / POST
Authorization: Managed via Spring Framework Security (See: Link)
Note:
For PSI implementation, authorization is handled by OpenHIM, and Spring Boot security is disabled by default.
Request Parameters
Required Parameters
You must provide at least one of the following parameters
Parameter | dhis2 Attribute | Description | Example |
---|---|---|---|
coordinates |
| (String) Format: "latitude,longitude" | coordinates=-0.1663,35.5924 |
points |
| (Array of Decimals) | {
"ancestor": {
"id": 1234
},
"points": [-1.286389, 36.817223],
"distance": 10,
"unit": "KM"
} |
latitude |
| (Decimal) | latitude=-26.18 |
longitude |
| (Decimal) | longitude=28.31 |
Please consider either using coordinates or latitude & longitude. Points parameter is only available for POST request. | |||
Organization Unit | |||
uid | core | OrgUnit UID | (String) Unique identifier (UID) generated by DHIS2 for an organization unit. |
|
code | core | Org Unit Code | (String) Code assigned to the organization unit. |
|
shortName | core | Org Unit shortName | (String) Short name of the organization unit. |
|
Ancestor (Organization Unit) |
| ||
ancestor.uid | core | OrgUnit UID for ancestor | (String) OrgUnit UID / code for ancestor. When provided, all locators/facilities under it are populated. Represents the DHIS2 parent that represents the country. |
|
ancestor.code | core | OrgUnit code for ancestor |
|
Please Note
Either of these three category of filters is required to get the API response
Consider using OrganisationUnit filter if you are looking for specific Location / organisation unit
You can use Ancestor and coordinates / (lat,lng) to get locations within the specific country.
Optional parameters
Parameter | Option Value | Default Option | Description |
---|---|---|---|
paging | Boolean | true | Specifies whether pagination is required. |
page | Number | 1 | Determines the page number to be returned. |
pageSize | Number | 10 | Sets the total number of items per page. |
distance | Number | 10 | Specifies the radius (in unit specified) within which to generate the organization units. |
unit | Options: | km | Defines the unit of measurement for distance. |
level | Number | 7 | Indicates the hierarchy level of the organization unit. |
Filters
type | Text |
| Specifies the type of the location. |
---|---|---|---|
phoneNumber | Text (Phone Number) | N/A | DHIS2 core element that defines the phone number of the location. |
tags | Text (Separated by ',' or '|') | N/A | Defines the tags the locations are associated with. |
Text | NA | Returns all the organization which has all of the tags provided. | |
services | Text (Separated by ',' or '|') | N/A | Defines the services offered by the locations. Returns all the organization which has at least one of the service provided. |
Text |
| Returns all the organization which has all of the services provided. | |
area | Text | N/A | Defines the broader area where the location is situated. |
subArea | Text | N/A | Specifies the subarea of the location. |
Text (phone Number) | N/A | Indicates the WhatsApp number of the location. | |
Text or URL | N/A | Provides the Facebook URL for the location. | |
responseFhir | Boolean | No | Determines if the response should be in FHIR or DHIS2 format. |
URL (for GET request):
https://{{host}}/api/v2/locator?paging=false&coordinates=lat,lng&distance=5&unit=km
Payload (for POST request):
{
"paging": true,
"page": 1,
"pageSize": 10,
"ancestor": {
"id": "a23acb2452xyz",
"code": "KE"
},
"organisationunit": {
"id", "q13we2452wsd",
"shortName": "Sub Hospital"
},
"coordinates": lat,lng,
"points": [lat,lng],
"distance": 5,
"unit": "km",
"level": 7,
"phoneNumber": "180999093107",
"area": "Managua",
"subArea": "Ciudad Sandino",
"type": "Public",
"tags": "tag1,tag2",
"services": "service1,service2",
"whatsapp": "977984123145",
"facebook": "https://fb.me/facility1",
"latitude": lat,
"longitude": lon,
"responseFhir": false
}
Response (In DHIS2):
{
"pager": {...}
"organisationUnits": [
{
"id": "xkcEJARvo2O",
"parentId": "15561086",
"code": "KE-CODE-123",
"name": "Facility Clinic (KE-CODE-123)",
"shortName": "Facility Clinic",
"description": null,
"openingDate": "2023-02-11",
"closedDate": null,
"comment": null,
"url": null,
"contactPerson": null,
"address": "street1, city, subarea, area",
"email": "mymail@gmail.com",
"phoneNumber": "+254541483334",
"path": "",
"level": "7",
"area": "Nairobi",
"subArea": "Starehe",
"latitude": "-1.28575",
"longitude": "39.81234",
"geometry": "{\"type\":\"Point\",\"coordinates\":[39.81234,-1.28575]}",
"distance": 0.0,
"openingHours": "Mon-Fri,8:00,17:00;Sat,9:00,14:00;Public Holiday,9:00,14:00;Sun,Closed",
"services": "CCS,CNT,ANC,STI,HVS,HVT",
"locationType": "OUT",
"type": "Public",
"tags": "KEUNV",
"fb": null,
"whatsapp": null,
"showContactInfo": "TLF"
}
]
}
Note: The attributes sequence might be different from the sequence listed above.
Response (in FHIR):
You can also find the POSTMAN examples below:
1. DHIS2 Response: POSTMAN
FHIR Response: POSTMAN