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 Campaign Cost

Official URL: https://icr.healthcampaigns.org/StructureDefinition/ICRCampaignCost Version: 0.1.0
Draft as of 2026-09-05 Computable Name: ICRCampaignCost

One cost line item of a campaign — a budgeted or actual amount for one cost category, attributed to one place and (optionally) one team. Joined TO the campaign via basedOn (native on Observation — the only ICR event resource that needs no campaign extension), in the same direction as every other record, so the CarePlan is never rewritten as costs accumulate. Recorded at the grain the source document states (a national vaccine invoice is one national line on the umbrella; a district expenditure return is district lines on the round) and NEVER allocated downward — apportionment is a report-level statement on ICRCostReport. Budget vs expenditure is the cost-lineage axis, not status; status carries preliminary → final → amended for actuals, as the data-lineage axis does for coverage. Consumers read the newest final/amended line per (campaign, place, category, lineage, perspective). Ratios (cost per person) are NOT this profile — they are ICRCostReport (cost-v1).

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
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, icr-cost-currency, icr-cost-driver-product
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
Binding: ObservationStatus (required): Codes providing the status of an observation.
... code SΣ 1..1 CodeableConcept WHAT the money is for — the cost category (personnel, per-diem-incentive, transport, cold-chain, commodities, social-mobilization …)
Binding: ICR Cost Category (extensible)
... subject SΣ 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus SΣ 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... effective[x] SΣ 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... performer SΣ 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] SΣC 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... value SΣ 1..1 decimal Numerical value (with implicit precision)
.... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
.... system SΣC 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code SΣ 1..1 code Coded form of the unit
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... derivedFrom SΣ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component Σ 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:All Slices Content/Rules for all slices
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
.... component:units SΣ 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
.... component:unitCost SΣ 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... component:amountUsd SΣ 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
Required Pattern: USD

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG
Observation.value[x].​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:units.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)

This structure is derived from Observation

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: icr-cost-currency, icr-cost-driver-product
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... basedOn S 1..1 Reference(ICR Campaign) The campaign this cost belongs to — the round for round-specific costs, the umbrella for costs shared across rounds (national vaccine, national training)
... status S 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
... subject S 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus S 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... effective[x] S 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... performer S 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] S 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... value S 1..1 decimal Numerical value (with implicit precision)
.... system S 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code S 1..1 code Coded form of the unit
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... derivedFrom S 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:units S 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
..... value[x] 1..1 Quantity Actual component result
.... component:unitCost S 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
..... value[x] 1..1 Quantity Actual component result
...... system 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... component:amountUsd S 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
..... value[x] 1..1 Quantity Actual component result
...... system 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code 0..1 code Coded form of the unit
Required Pattern: USD

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, icr-cost-currency, icr-cost-driver-product
... 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
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business Identifier for observation
... basedOn SΣ 1..1 Reference(ICR Campaign) The campaign this cost belongs to — the round for round-specific costs, the umbrella for costs shared across rounds (national vaccine, national training)
... partOf Σ 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
... status ?!SΣ 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
Binding: ObservationStatus (required): Codes providing the status of an observation.
... category 0..* CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
... code SΣ 1..1 CodeableConcept WHAT the money is for — the cost category (personnel, per-diem-incentive, transport, cold-chain, commodities, social-mobilization …)
Binding: ICR Cost Category (extensible)
... subject SΣ 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus SΣ 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... encounter Σ 0..1 Reference(Encounter) Healthcare event during which this observation is made
... effective[x] SΣ 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... issued Σ 0..1 instant Date/Time this version was made available
... performer SΣ 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] SΣC 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... value SΣ 1..1 decimal Numerical value (with implicit precision)
.... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
.... unit Σ 0..1 string Unit representation
.... system SΣC 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code SΣ 1..1 code Coded form of the unit
... dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... bodySite 0..1 CodeableConcept Observed body part
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
... method 0..1 CodeableConcept How it was done
Binding: ObservationMethods (example): Methods for simple observations.
... specimen 0..1 Reference(Specimen) Specimen used for this observation
... device 0..1 Reference(Device | DeviceMetric) (Measurement) Device
... referenceRange C 0..* BackboneElement Provides guide for interpretation
Constraints: obs-3
.... 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
.... low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
.... high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
.... type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
.... appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
.... age 0..1 Range Applicable age range, if relevant
.... text 0..1 string Text based reference range in an observation
... hasMember Σ 0..* Reference(Observation | QuestionnaireResponse | MolecularSequence) Related resource that belongs to the Observation group
... derivedFrom SΣ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component Σ 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:All Slices Content/Rules for all slices
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
..... value[x] Σ 0..1 Actual component result
...... valueQuantity Quantity
...... valueCodeableConcept CodeableConcept
...... valueString string
...... valueBoolean boolean
...... valueInteger integer
...... valueRange Range
...... valueRatio Ratio
...... valueSampledData SampledData
...... valueTime time
...... valueDateTime dateTime
...... valuePeriod Period
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:units SΣ 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:unitCost SΣ 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value Σ 0..1 decimal Numerical value (with implicit precision)
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:amountUsd SΣ 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value Σ 0..1 decimal Numerical value (with implicit precision)
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
Required Pattern: USD
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG
Observation.value[x].​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.bodySite Base example SNOMED CT Body Structures 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:units.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:units.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:units.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:unitCost.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:unitCost.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)

This structure is derived from Observation

Summary

Mandatory: 9 elements(3 nested mandatory elements)
Must-Support: 19 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Observation.component

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, icr-cost-currency, icr-cost-driver-product
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
Binding: ObservationStatus (required): Codes providing the status of an observation.
... code SΣ 1..1 CodeableConcept WHAT the money is for — the cost category (personnel, per-diem-incentive, transport, cold-chain, commodities, social-mobilization …)
Binding: ICR Cost Category (extensible)
... subject SΣ 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus SΣ 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... effective[x] SΣ 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... performer SΣ 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] SΣC 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... value SΣ 1..1 decimal Numerical value (with implicit precision)
.... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
.... system SΣC 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code SΣ 1..1 code Coded form of the unit
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... derivedFrom SΣ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component Σ 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:All Slices Content/Rules for all slices
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
.... component:units SΣ 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
.... component:unitCost SΣ 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... component:amountUsd SΣ 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
Required Pattern: USD

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG
Observation.value[x].​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:units.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)

Differential View

This structure is derived from Observation

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: icr-cost-currency, icr-cost-driver-product
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... basedOn S 1..1 Reference(ICR Campaign) The campaign this cost belongs to — the round for round-specific costs, the umbrella for costs shared across rounds (national vaccine, national training)
... status S 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
... subject S 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus S 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... effective[x] S 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... performer S 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] S 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... value S 1..1 decimal Numerical value (with implicit precision)
.... system S 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code S 1..1 code Coded form of the unit
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... derivedFrom S 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:units S 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
..... value[x] 1..1 Quantity Actual component result
.... component:unitCost S 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
..... value[x] 1..1 Quantity Actual component result
...... system 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... component:amountUsd S 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... code 1..1 CodeableConcept Type of component observation (code / type)
Required Pattern: At least the following
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
..... value[x] 1..1 Quantity Actual component result
...... system 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code 0..1 code Coded form of the unit
Required Pattern: USD

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, icr-cost-currency, icr-cost-driver-product
... 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
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:costLineage S 1..1 code budgeted | actual — required: the two are never summed
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-lineage
Binding: ICR Cost Lineage (required)
.... extension:costPerspective S 0..1 code financial | economic; absent ⇒ financial
URL: https://icr.healthcampaigns.org/StructureDefinition/cost-perspective
Binding: ICR Cost Perspective (required)
.... extension:fundingSource S 0..1 CodeableConcept Who paid (government, gavi, gpei, unicef …) — the envelope, not the spender
URL: https://icr.healthcampaigns.org/StructureDefinition/funding-source
Binding: ICR Funding Source (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business Identifier for observation
... basedOn SΣ 1..1 Reference(ICR Campaign) The campaign this cost belongs to — the round for round-specific costs, the umbrella for costs shared across rounds (national vaccine, national training)
... partOf Σ 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
... status ?!SΣ 1..1 code final; preliminary for in-flight expenditure; amended when restated — a newer final/amended line supersedes
Binding: ObservationStatus (required): Codes providing the status of an observation.
... category 0..* CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
... code SΣ 1..1 CodeableConcept WHAT the money is for — the cost category (personnel, per-diem-incentive, transport, cold-chain, commodities, social-mobilization …)
Binding: ICR Cost Category (extensible)
... subject SΣ 1..1 Reference(ICR Location) WHERE the cost is attributed — an admin unit or operational area, at the grain the source states (country / district / ward). Must lie within the campaign's target geography. A place, not a population estimate: the denominator is chosen and declared in the cost report
... focus SΣ 0..1 Reference(ICR Care Team) Optional: the team, for team-level microplan budget lines (subject stays the team's area)
... encounter Σ 0..1 Reference(Encounter) Healthcare event during which this observation is made
... effective[x] SΣ 1..1 Period The period the amount covers — the round period for a budget line; the expenditure window for an actual
... issued Σ 0..1 instant Date/Time this version was made available
... performer SΣ 0..* Reference(Organization) Who budgeted / spent / reported the line: the DHMT, the MoH programme, the UNICEF country office — the spending organization, as distinct from the funding source
... value[x] SΣC 1..1 Quantity The amount in the currency incurred — Quantity with system urn:iso:std:iso:4217 and code = the ISO 4217 currency (SLE, NGN, USD …)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... value SΣ 1..1 decimal Numerical value (with implicit precision)
.... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
.... unit Σ 0..1 string Unit representation
.... system SΣC 1..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
.... code SΣ 1..1 code Coded form of the unit
... dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
... note S 0..* Annotation Free-text detail (the named donor for other-donor, the country budget line label)
... bodySite 0..1 CodeableConcept Observed body part
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
... method 0..1 CodeableConcept How it was done
Binding: ObservationMethods (example): Methods for simple observations.
... specimen 0..1 Reference(Specimen) Specimen used for this observation
... device 0..1 Reference(Device | DeviceMetric) (Measurement) Device
... referenceRange C 0..* BackboneElement Provides guide for interpretation
Constraints: obs-3
.... 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
.... low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
.... high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
.... type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
.... appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
.... age 0..1 Range Applicable age range, if relevant
.... text 0..1 string Text based reference range in an observation
... hasMember Σ 0..* Reference(Observation | QuestionnaireResponse | MolecularSequence) Related resource that belongs to the Observation group
... derivedFrom SΣ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) The evidentiary trail — the budget form response (ICRCampaignFormResponse) or the finance-system document the line came from
... Slices for component Σ 0..* BackboneElement Optional decomposition: driver units × unit cost (so a budget can be generated from the microplan — workload-target days × roster × per-diem norm) and the USD-normalised amount
Slice: Unordered, Open by pattern:code
.... component:All Slices Content/Rules for all slices
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
..... value[x] Σ 0..1 Actual component result
...... valueQuantity Quantity
...... valueCodeableConcept CodeableConcept
...... valueString string
...... valueBoolean boolean
...... valueInteger integer
...... valueRange Range
...... valueRatio Ratio
...... valueSampledData SampledData
...... valueTime time
...... valueDateTime dateTime
...... valuePeriod Period
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:units SΣ 0..1 BackboneElement Driver quantity: 3,200 person-days, 12 vehicle-days, 50,000 doses
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: units
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:unitCost SΣ 0..1 BackboneElement The norm — rate per driver unit in the line's currency; units × unit-cost = the amount (icr-cost-driver-product)
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: unit-cost
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value Σ 0..1 decimal Numerical value (with implicit precision)
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result
.... component:amountUsd SΣ 0..1 BackboneElement USD-normalised amount for cross-country comparison — the conversion date defaults to the end of effectivePeriod (open decision §13.4)
..... 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
..... code Σ 1..1 CodeableConcept Type of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
....... system 1..1 uri Identity of the terminology system
Fixed Value: https://icr.healthcampaigns.org/CodeSystem/icr-cost-component-cs
....... version 0..1 string Version of the system - if relevant
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: amount-usd
....... display 0..1 string Representation defined by the system
....... userSelected 0..1 boolean If this coding was chosen directly by the user
...... text 0..1 string Plain text representation of the concept
..... value[x] Σ 1..1 Quantity Actual component result
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value Σ 0..1 decimal Numerical value (with implicit precision)
...... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
Required Pattern: urn:iso:std:iso:4217
...... code Σ 0..1 code Coded form of the unit
Required Pattern: USD
..... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
..... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
..... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible ICR Cost Category 📦0.1.0 This IG
Observation.value[x].​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.bodySite Base example SNOMED CT Body Structures 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:units.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:units.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:units.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:unitCost.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:unitCost.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:unitCost.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​value[x].comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component:amountUsd.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
icr-cost-currency error Observation The amount's Quantity.code must be an ISO 4217 currency code (three upper-case letters) under system urn:iso:std:iso:4217. value.ofType(Quantity).system = 'urn:iso:std:iso:4217' and value.ofType(Quantity).code.matches('^[A-Z]{3}$')
icr-cost-driver-product warning Observation When both the driver units and the unit cost are given, the amount should equal units × unit-cost (within 1%). Warning severity — a gap is a reconciliation signal (rounding, partial payment), not always a recording error. component.where(code.coding.code = 'units').exists() and component.where(code.coding.code = 'unit-cost').exists() implies ((component.where(code.coding.code = 'units').value.ofType(Quantity).value * component.where(code.coding.code = 'unit-cost').value.ofType(Quantity).value) - value.ofType(Quantity).value).abs() <= (value.ofType(Quantity).value * 0.01)

This structure is derived from Observation

Summary

Mandatory: 9 elements(3 nested mandatory elements)
Must-Support: 19 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Observation.component

 

Other representations of profile: CSV, Excel, Schematron