National Directory of Healthcare Providers & Services (NDH) Implementation Guide
1.0.0 - STU1 United States of America flag

National Directory of Healthcare Providers & Services (NDH) Implementation Guide, published by HL7 International / Patient Administration. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-us-ndh/ and changes regularly. See the Directory of published versions

Resource Profile: NDH Base Location Profile

Official URL: http://hl7.org/fhir/us/ndh/StructureDefinition/ndh-Location Version: 1.0.0
Standards status: Trial-use Computable Name: NdhLocation

Copyright/Legal: HL7 International

A Location is the physical place where healthcare services are provided, practitioners are employed, organizations are based, etc. Locations can range in scope from a room in a building to a geographic region/area.

Background & Scope

Traditionally, a location refers to the physical place where healthcare services are provided, practitioners are employed, and organizations are based. This information is captured by the position element. For the National Directory, there is a need to address insurance plan coverage areas and insurance provider network coverage areas. This information is defined by the location-boundary-geojson extension element.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Location 0..* USCoreLocation(6.1.0) Details and position information for a physical place
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:location-boundary-geojson 0..1 Attachment Associated Region (GeoJSON)
URL: http://hl7.org/fhir/StructureDefinition/location-boundary-geojson
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:accessibility 0..* CodeableConcept Accessibility
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-accessibility
Binding: Accessibility Value Set (extensible)
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:newpatients C 0..* (Complex) New Patients
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-newpatients
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
new-patients-characteristics: If no new patients are accepted, no characteristics are allowed
.... extension:usage-restriction 0..* Reference(NDH Base Restriction) {c} Restriction
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-usage-restriction
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:verification-status 0..1 CodeableConcept NDH Verification Status
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-verification-status
Binding: NDH Verification Status Value Set (extensible)
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... name SΣ 1..1 string Name of the location as used by humans
ele-1: All FHIR elements must have a @value or children
... type SΣ 0..* CodeableConcept Type of function performed
Binding: ServiceDeliveryLocationRoleType (extensible): Indicates the type of function performed at the location.


ele-1: All FHIR elements must have a @value or children
... telecom S 0..* ContactPoint Contact details of the location
ele-1: All FHIR elements must have a @value or children
.... Slices for extension Content/Rules for all slices
..... extension:contactpoint-availabletime 0..* (Complex) NDH Contactpoint Availabletime
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-contactpoint-availabletime
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... extension:via-intermediary 0..1 Reference(NDH Base PractitionerRole | NDH Base OrganizationAffiliation Profile | NDH Base Location Profile | NDH Base Organization Profile) Via Intermediary
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-via-intermediary
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... extension:language-speak 0..* code Language Speak
URL: http://hl7.org/fhir/us/ndh/StructureDefinition/base-ext-language-speak
Binding: CommonLanguages (extensible)
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... use ?!Σ 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.


ele-1: All FHIR elements must have a @value or children
... address S 0..1 Address Physical location
ele-1: All FHIR elements must have a @value or children
.... use ?!Σ 0..1 code home | work | temp | old | billing - purpose of this address
Binding: AddressUse (required): The use of an address.


ele-1: All FHIR elements must have a @value or children
Example General: home
.... line SΣ 0..4 string Street name, number, direction & P.O. Box etc.
ele-1: All FHIR elements must have a @value or children
This repeating element order: The order in which lines should appear in an address label
Example General: 137 Nowhere Street
.... city SΣ 0..1 string Name of city, town etc.
ele-1: All FHIR elements must have a @value or children
Example General: Erewhon
.... state SΣ 0..1 string Sub-unit of country (abbreviations ok)
Binding: USPS Two Letter Alphabetic Codes (extensible): Two letter USPS alphabetic codes.


ele-1: All FHIR elements must have a @value or children
.... postalCode SΣ 0..1 string US Zip Codes
ele-1: All FHIR elements must have a @value or children
Example General: 9132
.... country SΣ 0..1 string Country (e.g. can be ISO 3166 2 or 3 letter code)
ele-1: All FHIR elements must have a @value or children
... managingOrganization SΣ 0..1 Reference(NDH Base Organization Profile) Organization responsible for provisioning and upkeep
ele-1: All FHIR elements must have a @value or children
... partOf S 0..1 Reference(NDH Base Location Profile) Another Location this one is physically a part of
ele-1: All FHIR elements must have a @value or children
... endpoint S 0..* Reference(NDH Base Endpoint Profile) Technical endpoints providing access to services operated for the location
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Location.statusrequiredFixed Value: active
http://hl7.org/fhir/ValueSet/location-status|4.0.1
from the FHIR Standard
Location.typeextensibleServiceDeliveryLocationRoleType
http://terminology.hl7.org/ValueSet/v3-ServiceDeliveryLocationRoleType
Location.telecom.userequiredContactPointUse
http://hl7.org/fhir/ValueSet/contact-point-use|4.0.1
from the FHIR Standard
Location.address.userequiredAddressUse
http://hl7.org/fhir/ValueSet/address-use|4.0.1
from the FHIR Standard
Location.address.stateextensibleUspsTwoLetterAlphabeticCodes (a valid code from https://www.usps.com/)
http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Search Parameters

Search Parameter defined by the NDH IG

SearchParameter Name Type Example
accessibility token GET [base]/Location?accessibility=cultcomp
contains special GET [base]/Location?contains=41.809006\|-71.41177
new-patient-from-network reference GET [base]/Location?new-patient-from-network=newpt
new-patient token GET [base]/Location?=new-patient=newpt
verification-status token GET [base]/Location?verification-status=complete

Search Parameter defined by FHIR Search Parameter Registry and used by the NDH IG

Since there is no direct individual url for each Search Parameter defined by FHIR Serach Parameter Registry, we have provided the following links for you to access more information about them.

SearchParameter Name Type Example
address string GET [base]/Location?address=123 Ravissant ST
address-city string GET [base]/Location?address-city=Coconut Creek
address-country string GET [base]/Location?address-country=USA
address-postalcode string GET [base]/Location?address-postalcode=34997
address-state string GET [base]/Location?address-state=FL
address-use token GET [base]/Location?address-use=work
organization reference GET [base]/Location?organization.address-state=FL
type token GET [base]/Location?type=RH

_include Search Parameter

_include Example
Location:endpoint GET [base]/Location?_include=Location:endpoint
Location:new-patient-from-network GET [base]/Location?_include=Location:new-patient-from-network
Location:organization GET [base]/Location?_include=Location:organization
Location:partof GET [base]/Location?_include=Location:partof

_revinclude Search Parameter

_revinclude
CareTeam:careteam-location
HealthcareService:coverage-area
HealthcareService:location
InsurancePlan:coverage-area
OrganizationAffiliation:location
PractitionerRole:location

Special Search Parameters

The search parameters outlined above are straightforward for basic scenarios but have limitations in handling complex combination queries. To enhance these capabilities, employing the special search parameters _filter is recommended.

Search for locations with managing organization

The FHIR path for the managing organization is Location.managingOrganization, but the search parameter is organization. For example, to search for all locations assoicated with an managingOrganization has ID Hospital should write as:

GET [base]/Location?organization=Organization/Hospital

You can also search for locations associated with the managing organizations by name or other criteria. For example, to search for all locations associated with an organization with the name of Hartford General Hospital:

GET [base]/Location?organization:Organization.name=Hartford General Hospital

You can add additional search criteria to further narrow down your search results. For example, to search for all locations associated with the Hartford General Hospital organization that have a status of active:

GET [base]/Location?organization:Organization.name=Hartford General Hospital&status=active

Including other resources in search result

You can search for all Locations and their associated related resources (in this case, organization) which are managering some of locations. The _include parameter to indicate that the managingOrganization resources be included in the result.

GET [base]//Location?_include=Location:organization

Search location-boundary-geojson

GeoJSON encodes spatial data structures, including points, lines, polygons, and multi-part collections of these types. It is a common format for representing simple geographic features along with their non-spatial attributes. For example, a polygon area for Washington, D.C. is represented as:

{
  "type"": ""Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [-77.119759, 38.934343],
        [-77.041697, 38.99511],
        [-76.910535, 38.892912],
        [-77.038088, 38.791015],
        [-77.119759, 38.934343]
      ]
    ]
  },
  "properties": {
    "name"": "Washington, D.C."
  }
}
How to populate the location-boundary-geojson data in Location resource

The data type of the location-boundary-geojson is Attachment, with the contentType set to application/geo+json and the data formatted as base64Binary. To represent a polygon area for Washington, D.C., you can use a JSON to Base64 converter to transform the JSON data into base64Binary format, which will look like this:

{
  "resourceType" : "Location",
  "id" : "wash-dc-metro",
  "meta" : {
    "profile" : ["http://hl7.org/fhir/uv/vhdir/StructureDefinition/vhdir-location"]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative: Location</b><a name=\"wash-dc-metro\"> </a></p><div style=\"display: inline-block; background-color: #d9e0e7; padding: 6px; margin: 4px; border: 1px solid #8da1b4; border-radius: 5px; line-height: 60%\"><p style=\"margin-bottom: 0px\">Resource Location &quot;wash-dc-metro&quot; </p><p style=\"margin-bottom: 0px\">Profile: <code>http://hl7.org/fhir/uv/vhdir/StructureDefinition/vhdir-location</code></p></div><p><b>Location Boundary (GeoJSON)</b>: </p><p><b>status</b>: active</p><p><b>name</b>: <span title=\"  this record is active  \">Washington, DC metro area</span></p><p><b>form</b>: Area <span style=\"background: LightGoldenRodYellow; margin: 4px; border: 1px solid khaki\"> (<a href=\"http://terminology.hl7.org/5.3.0/CodeSystem-location-physical-type.html\">Location type</a>#area)</span></p></div>"
  },
  "extension" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/location-boundary-geojson",
    "valueAttachment" : {
      "contentType" : "application/geo+json",
      "data" : "VGhlbWU6IA0KUmF3UGFyc2VkDQp7InR5cGUiOiJGZWF0dXJlQ29sbGVjdGlvbiIsInByb3BlcnRpZXMiOnsia2luZCI6InN0YXRlIiwic3RhdGUiOiJEQyJ9LCJmZWF0dXJlcyI6Ww0KeyJ0eXBlIjoiRmVhdHVyZSIsInByb3BlcnRpZXMiOnsia2luZCI6ImNvdW50eSIsIm5hbWUiOiJEaXN0cmljdCBvZiBDb2x1bWJpYSIsInN0YXRlIjoiREMifSwiZ2VvbWV0cnkiOnsidHlwZSI6Ik11bHRpUG9seWdvbiIsImNvb3JkaW5hdGVzIjpbW1tbLTc3LjAzNTMsMzguOTkzOV0sWy03Ny4wMDI0LDM4Ljk2NjVdLFstNzYuOTA5MywzOC44OTUzXSxbLTc3LjA0MDcsMzguNzkxMl0sWy03Ny4wNDYyLDM4Ljg0MDVdLFstNzcuMDQwNywzOC44NzM0XSxbLTc3LjExNzQsMzguOTMzNl1dXV19fQ0KXX0=",
      "url" : "https://github.com/OpenDataDE/State-zip-code-GeoJSON/raw/master/dc_district_of_columbia_zip_codes_geo.min.json",
      "size" : "389"
    }
  }],
  "status" : "active",
  "name" : "Washington, DC metro area",
  "form" : {
    "coding" : [{
      "system" : "http://terminology.hl7.org/CodeSystem/location-physical-type",
      "code" : "area",
      "display" : "Area"
    }]
  }
}
How to search location-boundary-geojson

The special contains search parameter tests whether the provided geocoded point(s) (expressed as [latitude]|[longitude] using the WGS84 datum) are within the defined boundary. Support for multiple points can also be provided using the , syntax, which is interpreted as the location returned in the search containing at least one of the provided coordinates. For example, for the Washington, D.C. polygon area:

GET [base]/Location?contains=-77.119759|38.934343,-77.041697|38.99511,-76.910535|38.892912,-77.038088|38.791015,-77.119759|38.934343