Integrated Campaign Registry (ICR) Implementation Guide
0.1.0 - ci-build International flag

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

Resource Profile: ICR Facility Organization

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

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 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.
... type 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.
... name SΣC 1..1 string The facility's registered name
... telecom SC 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
Constraints: org-3
... partOf 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.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Organization.type Base example Organization type 📍4.0.1 FHIR Std.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization 0..* Organization A grouping of people or organizations with a common purpose
... identifier 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.
... active S 0..1 boolean Whether the organization's record is still in active use
... type 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.
... telecom S 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
... partOf 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.

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 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.
... active ?!SΣ 0..1 boolean Whether the organization's record is still in active use
... type 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.
... name SΣC 1..1 string The facility's registered name
... alias 0..* string A list of alternate names that the organization is known as, or was known as in the past
... telecom SC 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
Constraints: org-3
... address C 0..* Address An address for the organization
Constraints: org-2
... partOf 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.
... contact 0..* BackboneElement Contact for the organization for a certain purpose
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... purpose 0..1 CodeableConcept The type of contact
Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party.
.... name 0..1 HumanName A name associated with the contact
.... telecom 0..* ContactPoint Contact details (telephone, email, etc.) for a contact
.... address 0..1 Address Visiting or postal addresses for the contact
... endpoint 0..* Reference(Endpoint) Technical endpoints providing access to services operated for the organization

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

Summary

Mandatory: 2 elements
Must-Support: 6 elements

Structures

This structure refers to these other structures:

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 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.
... type 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.
... name SΣC 1..1 string The facility's registered name
... telecom SC 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
Constraints: org-3
... partOf 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.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Organization.type Base example Organization type 📍4.0.1 FHIR Std.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization 0..* Organization A grouping of people or organizations with a common purpose
... identifier 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.
... active S 0..1 boolean Whether the organization's record is still in active use
... type 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.
... telecom S 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
... partOf 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.

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier 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.
... active ?!SΣ 0..1 boolean Whether the organization's record is still in active use
... type 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.
... name SΣC 1..1 string The facility's registered name
... alias 0..* string A list of alternate names that the organization is known as, or was known as in the past
... telecom SC 0..* ContactPoint Facility contact (phone, email) — contact data belongs to the entity
Constraints: org-3
... address C 0..* Address An address for the organization
Constraints: org-2
... partOf 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.
... contact 0..* BackboneElement Contact for the organization for a certain purpose
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... purpose 0..1 CodeableConcept The type of contact
Binding: ContactEntityType (extensible): The purpose for which you would contact a contact party.
.... name 0..1 HumanName A name associated with the contact
.... telecom 0..* ContactPoint Contact details (telephone, email, etc.) for a contact
.... address 0..1 Address Visiting or postal addresses for the contact
... endpoint 0..* Reference(Endpoint) Technical endpoints providing access to services operated for the organization

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

Summary

Mandatory: 2 elements
Must-Support: 6 elements

Structures

This structure refers to these other structures:

 

Other representations of profile: CSV, Excel, Schematron