SMART Verifiable IPS for Pilgrimage
2.0.3 - release

SMART Verifiable IPS for Pilgrimage, published by WHO. This guide is not an authorized publication; it is the continuous build for version 2.0.3 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-ips-pilgrimage/tree/main and changes regularly. See the Directory of published versions

Resource Profile: HajjConsent

Official URL: http://smart.who.int/ips-pilgrimage/StructureDefinition/HajjConsent Version: 2.0.3
Draft as of 2025-04-07 Computable Name: HajjConsent

A profile of the consent resource to track consent of a pilgrim to participate

FHIR R5 upgrade notes (need this implemented as a structure map):

  • make cardinality of decision 1.. and should stop using it in lieu of verification.verified
  • use verification.verifiedBy instead of Consent.organization
  • the period extenion should be replaced by Consent.period
  • the Consent.patient should be replaced by Consent.subject
  • Consent.verification.verifiedBy should be used instead of Consent.organization

Usage:

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraintsdoco
.. Consent C 0..* IntermediateConsent A healthcare consumer's choices to permit or deny recipients or roles to perform actions for specific purposes and periods of time
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
ppc-1: Either a Policy or PolicyRule
ppc-2: IF Scope=privacy, there must be a patient
ppc-3: IF Scope=research, there must be a patient
ppc-4: IF Scope=adr, there must be a patient
ppc-5: IF Scope=treatment, there must be a patient
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... status ?!Σ 1..1 code draft | proposed | active | rejected | inactive | entered-in-error
Binding: ConsentState (required): Indicates the state of the consent.


ele-1: All FHIR elements must have a @value or children
.... coding 1..* Coding Code defined by a terminology system
Fixed Value: (complex)
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/consentscope
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: patient-privacy
... category Σ 1..* CodeableConcept Classification of the consent statement - for indexing/retrieval
Binding: ConsentCategoryCodes (extensible): A classification of the type of consents found in a consent statement.


ele-1: All FHIR elements must have a @value or children
... patient Σ 1..1 Reference(Patient) Who the consent applies to
ele-1: All FHIR elements must have a @value or children
... dateTime Σ 1..1 dateTime When this Consent was created or indexed
ele-1: All FHIR elements must have a @value or children
... performer Σ 1..* Reference(Organization | Patient | Practitioner | RelatedPerson | PractitionerRole) Who is agreeing to the policy and rules
ele-1: All FHIR elements must have a @value or children
... organization Σ 1..* Reference(HajjOrganization) Custodian of the consent
ele-1: All FHIR elements must have a @value or children
... source[x] Σ 1..1 Source from which this consent is taken
ele-1: All FHIR elements must have a @value or children
.... sourceAttachment Attachment
.... sourceReference Reference(Consent | DocumentReference | Contract | QuestionnaireResponse)
... provision SΣ 1..1 BackboneElement Constraints to the base Consent.policyRule
ele-1: All FHIR elements must have a @value or children
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... type Σ 1..1 code deny | permit
Binding: ConsentProvisionType (required): How a rule statement is applied, such as adding additional consent or removing consent.


ele-1: All FHIR elements must have a @value or children
.... period SΣ 1..1 Period Timeframe for this rule
ele-1: All FHIR elements must have a @value or children
.... actor S 0..* BackboneElement Who|what controlled by this rule (or group, by role)
ele-1: All FHIR elements must have a @value or children
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... role 1..1 CodeableConcept How the actor is involved
Binding: SecurityRoleType (extensible): How an actor is involved in the consent considerations.


ele-1: All FHIR elements must have a @value or children
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: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
....... code 1..1 code Symbol in syntax defined by the system
Fixed Value: IRCP
..... reference 1..1 Reference(Device | Group | CareTeam | Organization | Patient | Practitioner | RelatedPerson | PractitionerRole) Resource for the actor (or group, by role)
ele-1: All FHIR elements must have a @value or children
.... purpose SΣ 1..* Coding Context of activities covered by this rule
Binding: IPS.HAJJ.CONSENT ValueSet of consent policies (required)
ele-1: All FHIR elements must have a @value or children
.... dataPeriod SΣ 0..1 Period Timeframe for data controlled by this rule
ele-1: All FHIR elements must have a @value or children
.... Slices for data SΣ 0..* BackboneElement Data controlled by this rule
Slice: Unordered, Closed by value:meaning
ele-1: All FHIR elements must have a @value or children
..... data:All Slices Content/Rules for all slices
...... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
...... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
...... reference Σ 1..1 Reference(Resource) The actual data reference
ele-1: All FHIR elements must have a @value or children
..... data:iData Σ 0..* BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
...... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
...... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: instance
...... reference Σ 1..1 Reference(Resource) The actual data reference
ele-1: All FHIR elements must have a @value or children
..... data:rData Σ 0..* BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
...... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
...... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: related
...... reference Σ 1..1 Reference(Encounter | CarePlan | EpisodeOfCare) The actual data reference
ele-1: All FHIR elements must have a @value or children
..... data:aData Σ 0..* BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
...... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
...... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: authoredby
...... reference Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | Device | Group | CareTeam | Patient | RelatedPerson) The actual data reference
ele-1: All FHIR elements must have a @value or children
.... provision S 0..* BackboneElement Nested Exception Rules
ele-1: All FHIR elements must have a @value or children
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... purpose SΣ 0..* Coding Context of activities covered by this rule
Binding: PurposeOfUse (extensible): What purposes of use are controlled by this exception. If more than one label is specified, operations must have all the specified labels.


ele-1: All FHIR elements must have a @value or children
..... dataPeriod SΣ 0..1 Period Timeframe for data controlled by this rule
ele-1: All FHIR elements must have a @value or children
..... Slices for data SΣ 0..* BackboneElement Data controlled by this rule
Slice: Unordered, Closed by value:meaning
ele-1: All FHIR elements must have a @value or children
...... data:All Slices Content/Rules for all slices
....... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
....... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
....... reference Σ 1..1 Reference(Resource) The actual data reference
ele-1: All FHIR elements must have a @value or children
...... data:iDataP Σ 0..1 BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
....... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
....... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: instance
....... reference Σ 1..1 Reference(Resource) The actual data reference
ele-1: All FHIR elements must have a @value or children
...... data:rDataP Σ 0..1 BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
....... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
....... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: related
....... reference Σ 1..1 Reference(Encounter | CarePlan | EpisodeOfCare) The actual data reference
ele-1: All FHIR elements must have a @value or children
...... data:aDataP Σ 0..1 BackboneElement Data controlled by this rule
ele-1: All FHIR elements must have a @value or children
....... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
....... meaning Σ 1..1 code instance | related | dependents | authoredby
Binding: ConsentDataMeaning (required): How a resource reference is interpreted when testing consent restrictions.


ele-1: All FHIR elements must have a @value or children
Required Pattern: authoredby
....... reference Σ 1..1 Reference(Practitioner | PractitionerRole | Organization | Device | Group | CareTeam | Patient | RelatedPerson) The actual data reference
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Consent.statusrequiredConsentState
http://hl7.org/fhir/ValueSet/consent-state-codes|4.0.1
from the FHIR Standard
Consent.scopeextensiblePattern: patient-privacy
http://hl7.org/fhir/ValueSet/consent-scope
from the FHIR Standard
Consent.categoryextensibleConsentCategoryCodes
http://hl7.org/fhir/ValueSet/consent-category
from the FHIR Standard
Consent.provision.typerequiredConsentProvisionType
http://hl7.org/fhir/ValueSet/consent-provision-type|4.0.1
from the FHIR Standard
Consent.provision.actor.roleextensiblePattern: IRCP
http://hl7.org/fhir/ValueSet/security-role-type
from the FHIR Standard
Consent.provision.purposerequiredIPS_HAJJ_CONSENT (a valid code from IPS.HAJJ.CONSENT CodeSystem)
http://smart.who.int/ips-pilgrimage/ValueSet/IPS.HAJJ.CONSENT
from this IG
Consent.provision.data.meaningrequiredConsentDataMeaning
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.data:iData.meaningrequiredPattern: instance
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.data:rData.meaningrequiredPattern: related
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.data:aData.meaningrequiredPattern: authoredby
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.provision.purposeextensiblePurposeOfUse
http://terminology.hl7.org/ValueSet/v3-PurposeOfUse
Consent.provision.provision.data.meaningrequiredConsentDataMeaning
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.provision.data:iDataP.meaningrequiredPattern: instance
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.provision.data:rDataP.meaningrequiredPattern: related
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard
Consent.provision.provision.data:aDataP.meaningrequiredPattern: authoredby
http://hl7.org/fhir/ValueSet/consent-data-meaning|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorConsentIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorConsentIf 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-4errorConsentIf 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-5errorConsentIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceConsentA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ppc-1errorConsentEither a Policy or PolicyRule
: policy.exists() or policyRule.exists()
ppc-2errorConsentIF Scope=privacy, there must be a patient
: patient.exists() or scope.coding.where(system='something' and code='patient-privacy').exists().not()
ppc-3errorConsentIF Scope=research, there must be a patient
: patient.exists() or scope.coding.where(system='something' and code='research').exists().not()
ppc-4errorConsentIF Scope=adr, there must be a patient
: patient.exists() or scope.coding.where(system='something' and code='adr').exists().not()
ppc-5errorConsentIF Scope=treatment, there must be a patient
: patient.exists() or scope.coding.where(system='something' and code='treatment').exists().not()

 

Other representations of profile: CSV, Excel, Schematron