/
API Structure: Locations / Organization Units near me

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

Parameter

dhis2 Attribute

Description

Example

coordinates

 

(String)
User's location in the format of Latitude, Longitude. This is used to find nearby organization units.

Format: "latitude,longitude"

coordinates=-0.1663,35.5924

points

 

(Array of Decimals)
An array of coordinates. Available only for the POST method.

{ "ancestor": { "id": 1234 }, "points": [-1.286389, 36.817223], "distance": 10, "unit": "KM" }

latitude

 

(Decimal)
Latitude component of the user's location.

latitude=-26.18

longitude

 

(Decimal)
Longitude component of the user's location.

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

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:
m (meters),
km (kilometers), mi (miles)

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.

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.
Returns all the organization which has at least one of the tags provided.

Text
(separated by &)

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
(separated by &)

 

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.

whatsapp

Text (phone Number)

N/A

Indicates the WhatsApp number of the location.

facebook

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

  1. FHIR Response: POSTMAN

Related content