SGHI FHIR Profile Implementation Guide
0.1.0 - ci-build

SGHI FHIR Profile Implementation Guide, published by Kathurima Kimathi. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/savannahghi/sil_fhir_profile_ig/ and changes regularly. See the Directory of published versions

Resource Profile: SGHIComposition - Mappings

Draft as of 2025-09-04

Mappings for the sghi-composition resource profile.

Mappings to Structures in this Implementation Guide

No Mappings Found

Mappings to other Structures

No Mappings Found

Other Mappings

NameWorkflow PatternFiveWs Pattern MappingRIM MappingCDA (R2)FHIR DocumentReferencedoco
.. Composition
Event
infrastructure.documents
  • Entity
  • Role
  • or Act
  • Document[classCode="DOC" and moodCode="EVN" and isNormalAct()]
ClinicalDocument
when described by DocumentReference
... id
... meta
... implicitRules
... language
... text
Act.text?
... contained
N/A
... extension
N/A
... modifierExtension
N/A
... url
FiveWs.identifier
... identifier
Event.identifier
FiveWs.identifier
Document.id / Document.setId
.setId
DocumentReference.identifier
.... id
n/a
.... extension
n/a
.... use
Role.code or implied by context
.... type
Role.code or implied by context
.... system
II.root or Role.id.root
.... value
II.extension or II.root if system indicates OID or GUID (Or Role.id.extension or root)
.... period
Role.effectiveTime or implied by context
.... assigner
II.assigningAuthorityName but note that this is an improper use by the definition of the field. Also Role.scoper
... version
FiveWs.version
.versionNumber
DocumentReference.version
... status
Event.status
FiveWs.status
  • .completionCode="IN" & ./statusCode[isNormalDatatype()]="active"; final: .completionCode="AU" && ./statusCode[isNormalDatatype()]="complete" and not(./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseComposition"
  • .completionCode="AU" && ./statusCode[isNormalDatatype()]="complete" and ./inboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]/source[subsumesCode("ActClass#CACT") and moodCode="EVN" and domainMember("ReviseComposition"
  • .completionCode=NI && ./statusCode[isNormalDatatype()]="obsolete"
n/a
DocumentReference.docStatus
... type
Event.code
FiveWs.class
./code
.code
DocumentReference.type
... category
FiveWs.class
  • .outboundRelationship[typeCode="COMP].target[classCode="LIST"
  • moodCode="EVN"].code
n/a
DocumenttReference.category
... subject
Event.subject
FiveWs.subject[x]
.participation[typeCode="SBJ"].role[typeCode="PAT"]
.recordTarget
DocumentReference.subject
... encounter
Event.encounter
FiveWs.context
  • unique(highest(./outboundRelationship[typeCode="SUBJ" and isNormalActRelationship()]
  • priorityNumber)/target[moodCode="EVN" and classCode=("ENC"
  • "PCPR") and isNormalAct])
.componentOf.encompassingEncounter
DocumentReference.context
... date
Event.occurrence[x]
FiveWs.done[x]
.effectiveTime[type="TS"]
.effectiveTime
  • DocumentReference.content.attachment.date
  • DocumentReference.date
... useContext
... author
Event.performer
FiveWs.author
.participation[typeCode="AUT"].role[classCode="ASSIGNED"]
.author.assignedAuthor
DocumentReference.author
... name
... title
./title
.title
  • DocumentReference.description
  • DocumentReference.content.attachment.title
... note
... attester
.participation[typeCode="AUTHEN"].role[classCode="ASSIGNED"]
.authenticator/.legalAuthenticator
DocumentReference.attester
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... mode
unique(./modeCode)
implied by .authenticator/.legalAuthenticator
DocumentReference.attester.mode
.... time
./time[type="TS" and isNormalDatatype()]
.authenticator.time
DocumentReference.attester.time
.... party
FiveWs.witness
  • ./role[classCode="ASSIGNED" and isNormalRole]/player[determinerCode="INST" and classCode=("DEV"
  • "PSN") and isNormalEntity()] or ./role[classCode="ASSIGNED" and isNormalRole and not(player)]/scoper[determinerCode="INST" and classCode="ORG" and isNormalEntity()]
.authenticator.assignedEnttty
DocumentReference.attester.party
... custodian
.participation[typeCode="RCV"].role[classCode="CUST"].scoper[classCode="ORG" and determinerCode="INST"]
.custodian.assignedCustodian
DocumentReference.custodian
... relatesTo
.outboundRelationship
.relatedDocument
DocumentReference.relatesTo
... event
outboundRelationship[typeCode="SUBJ"].target[classCode<'ACT']
.documentationOf.serviceEvent
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... period
.effectiveTime
.effectiveTime
DocumentReference.period
.... detail
.outboundRelationship[typeCode="SUBJ"].target
n/a
DocumentReference.event
... section
./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[moodCode="EVN" and classCode="DOCSECT" and isNormalAct]
.component.structuredBody.component.section
.... id
n/a
.... extension
n/a
.... modifierExtension
N/A
.... title
./title
.title
.... code
./code
.code
.... author
FiveWs.author
.participation[typeCode="AUT"].role[classCode="ASSIGNED"]
.author.assignedAuthor
.... focus
.subject? (CDA did not differentiate between subject and focus)
.... text
.text
.text
.... orderedBy
.outboundRelationship[typeCode=COMP].sequenceNumber > 1
n/a
.... entry
.outboundRelationship[typeCode=COMP] or .participation[typeCode=SBJ]
.entry
.... emptyReason
  • .inboundRelationship[typeCode=SUBJ
  • code<ListEmptyReason].value[type=CD]
n/a
.... section
./outboundRelationship[typeCode="COMP" and isNormalActRelationship()]/target[moodCode="EVN" and classCode="DOCSECT" and isNormalAct]
.component.section

doco Documentation for this format