Integrated Campaign Registry (ICR) Implementation Guide
0.1.0 - ci-build
Integrated Campaign Registry (ICR) Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://icr.healthcampaigns.org/StructureDefinition/ICRFacilityOrganization | Version: 0.1.0 | |||
| Draft as of 2026-08-07 | Computable Name: ICRFacilityOrganization | |||
The accountable facility entity — the mCSD-style pairing partner of a facility ICRLocation. A health facility is two things: an Organization (the conceptual/legal entity that owns registry codes, classification, and accountability) and a Location (the physical place where care happens), linked Location.managingOrganization → Organization. Organization.type is the source of truth for the national facility classification (ICRFacilityTypeVS) and ownership (ICROwnershipVS) alongside the generic 'prov' provider coding; Location.type carries the generic 'facility' functional code and MAY additionally carry copies of the classification codings — the mCSD-sanctioned duplication for consumers that only query Locations (geospatial exports, map layers). On any disagreement the Organization is authoritative. Organization.partOf carries the administrative reporting hierarchy (facility → LGA/district health office → state agency), which is deliberately distinct from — and need not mirror — the geographic hierarchy on Location.partOf: a facility can report to one authority while sitting in territory that authority does not govern. Per the georegistry rule this profile still holds only identify/classify/contact data (working doc 5.3, 5.3,
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Organization | A grouping of people or organizations with a common purpose Constraints: org-1 |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣC | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. |
![]() ![]() |
?!SΣ | 0..1 | boolean | Whether the organization's record is still in active use |
![]() ![]() |
SΣ | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. Binding: OrganizationType (example): Used to categorize the organization. |
![]() ![]() |
SΣC | 1..1 | string | The facility's registered name |
![]() ![]() |
SC | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity Constraints: org-3 |
![]() ![]() |
SΣ | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Organization.type | Base | example | Organization type | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Organization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Organization | 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 |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Organization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| org-1 | error | Organization | The organization SHALL at least have a name or an identifier, and possibly more than one |
(identifier.count() + name.count()) > 0
|
| org-3 | error | Organization.telecom | The telecom of an organization can never be of use 'home' |
where(use = 'home').empty()
|
This structure is derived from Organization
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Organization | A grouping of people or organizations with a common purpose | |
![]() ![]() |
S | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. |
![]() ![]() |
S | 0..1 | boolean | Whether the organization's record is still in active use |
![]() ![]() |
S | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. |
![]() ![]() |
S | 1..1 | string | The facility's registered name |
![]() ![]() |
S | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity |
![]() ![]() |
S | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. |
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Organization | A grouping of people or organizations with a common purpose Constraints: org-1 | ||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
SΣC | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. | ||||
![]() ![]() |
?!SΣ | 0..1 | boolean | Whether the organization's record is still in active use | ||||
![]() ![]() |
SΣ | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. Binding: OrganizationType (example): Used to categorize the organization. | ||||
![]() ![]() |
SΣC | 1..1 | string | The facility's registered name | ||||
![]() ![]() |
0..* | string | A list of alternate names that the organization is known as, or was known as in the past | |||||
![]() ![]() |
SC | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity Constraints: org-3 | ||||
![]() ![]() |
C | 0..* | Address | An address for the organization Constraints: org-2 | ||||
![]() ![]() |
SΣ | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. | ||||
![]() ![]() |
0..* | BackboneElement | Contact for the organization for a certain purpose | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | The type of contact Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party. | |||||
![]() ![]() ![]() |
0..1 | HumanName | A name associated with the contact | |||||
![]() ![]() ![]() |
0..* | ContactPoint | Contact details (telephone, email, etc.) for a contact | |||||
![]() ![]() ![]() |
0..1 | Address | Visiting or postal addresses for the contact | |||||
![]() ![]() |
0..* | Reference(Endpoint) | Technical endpoints providing access to services operated for the organization | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Organization.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Organization.type | Base | example | Organization type | 📍4.0.1 | FHIR Std. |
| Organization.contact.purpose | Base | extensible | Contact entity type | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Organization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Organization | 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 |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Organization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| org-1 | error | Organization | The organization SHALL at least have a name or an identifier, and possibly more than one |
(identifier.count() + name.count()) > 0
|
| org-2 | error | Organization.address | An address of an organization can never be of use 'home' |
where(use = 'home').empty()
|
| org-3 | error | Organization.telecom | The telecom of an organization can never be of use 'home' |
where(use = 'home').empty()
|
This structure is derived from Organization
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Organization | A grouping of people or organizations with a common purpose Constraints: org-1 |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣC | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. |
![]() ![]() |
?!SΣ | 0..1 | boolean | Whether the organization's record is still in active use |
![]() ![]() |
SΣ | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. Binding: OrganizationType (example): Used to categorize the organization. |
![]() ![]() |
SΣC | 1..1 | string | The facility's registered name |
![]() ![]() |
SC | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity Constraints: org-3 |
![]() ![]() |
SΣ | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Organization.type | Base | example | Organization type | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Organization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Organization | 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 |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Organization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| org-1 | error | Organization | The organization SHALL at least have a name or an identifier, and possibly more than one |
(identifier.count() + name.count()) > 0
|
| org-3 | error | Organization.telecom | The telecom of an organization can never be of use 'home' |
where(use = 'home').empty()
|
Differential View
This structure is derived from Organization
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Organization | A grouping of people or organizations with a common purpose | |
![]() ![]() |
S | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. |
![]() ![]() |
S | 0..1 | boolean | Whether the organization's record is still in active use |
![]() ![]() |
S | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. |
![]() ![]() |
S | 1..1 | string | The facility's registered name |
![]() ![]() |
S | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity |
![]() ![]() |
S | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. |
Documentation for this format | ||||
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Organization | A grouping of people or organizations with a common purpose Constraints: org-1 | ||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
SΣC | 0..* | Identifier | The facility-registry identity: national MFL/registry codes (e.g. Nigeria NHFR facility code and uid), GERS place ID. Registry codes identify the entity, so they live here rather than on the paired Location. | ||||
![]() ![]() |
?!SΣ | 0..1 | boolean | Whether the organization's record is still in active use | ||||
![]() ![]() |
SΣ | 1..* | CodeableConcept | Three coding axes: 'prov' (healthcare provider), the national classification tier (ICRFacilityTypeVS — primary/secondary/tertiary, country kind as display/text), and ownership (ICROwnershipVS). Organization.type — not Location.type — is authoritative for facility classification. Formal per-axis slicing is deferred to the mCSD-alignment pass. Binding: OrganizationType (example): Used to categorize the organization. | ||||
![]() ![]() |
SΣC | 1..1 | string | The facility's registered name | ||||
![]() ![]() |
0..* | string | A list of alternate names that the organization is known as, or was known as in the past | |||||
![]() ![]() |
SC | 0..* | ContactPoint | Facility contact (phone, email) — contact data belongs to the entity Constraints: org-3 | ||||
![]() ![]() |
C | 0..* | Address | An address for the organization Constraints: org-2 | ||||
![]() ![]() |
SΣ | 0..1 | Reference(ICR Facility Organization | Organization) | Administrative reporting hierarchy: facility → LGA/district health office → state/national agency. Reporting structure, not geography — it need not mirror the Location partOf chain. | ||||
![]() ![]() |
0..* | BackboneElement | Contact for the organization for a certain purpose | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | The type of contact Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party. | |||||
![]() ![]() ![]() |
0..1 | HumanName | A name associated with the contact | |||||
![]() ![]() ![]() |
0..* | ContactPoint | Contact details (telephone, email, etc.) for a contact | |||||
![]() ![]() ![]() |
0..1 | Address | Visiting or postal addresses for the contact | |||||
![]() ![]() |
0..* | Reference(Endpoint) | Technical endpoints providing access to services operated for the organization | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Organization.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Organization.type | Base | example | Organization type | 📍4.0.1 | FHIR Std. |
| Organization.contact.purpose | Base | extensible | Contact entity type | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Organization | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Organization | 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 |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Organization | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Organization | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| org-1 | error | Organization | The organization SHALL at least have a name or an identifier, and possibly more than one |
(identifier.count() + name.count()) > 0
|
| org-2 | error | Organization.address | An address of an organization can never be of use 'home' |
where(use = 'home').empty()
|
| org-3 | error | Organization.telecom | The telecom of an organization can never be of use 'home' |
where(use = 'home').empty()
|
This structure is derived from Organization
Other representations of profile: CSV, Excel, Schematron