WHO Digital Documentation of COVID-19 Certificates (DDCC)
1.0.0 - CI Build
WHO Digital Documentation of COVID-19 Certificates (DDCC), published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/ddcc/ and changes regularly. See the Directory of published versions
Draft as of 2024-10-17 |
{
"resourceType" : "StructureMap",
"id" : "DDCCtoCoredataset",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap DDCCtoCoredataset</b></p><a name=\"DDCCtoCoredataset\"> </a><a name=\"hcDDCCtoCoredataset\"> </a><a name=\"DDCCtoCoredataset-en-US\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>http://smart.who.int/ddcc/StructureMap/DDCCtoCoredataset<span style=\"color: navy\">" = "</span>DDCCtoCoredataset<span style=\"color: navy\">"\r\n\r\n</span><b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCVSComposition.html\" title=\"DDCC:VS Composition\">http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition</a><span style=\"color: navy\">" </span><b>alias </b>DDCC <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCDocument.html\" title=\"DDCC Document\">http://smart.who.int/ddcc/StructureDefinition/DDCCDocument</a><span style=\"color: navy\">" </span><b>alias </b>DDCCDocument <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCPatient.html\" title=\"DDCC Patient\">http://smart.who.int/ddcc/StructureDefinition/DDCCPatient</a><span style=\"color: navy\">" </span><b>alias </b>DDCCPatient <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCVSComposition.html\" title=\"DDCC:VS Composition\">http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition</a><span style=\"color: navy\">" </span><b>alias </b>DDCCVSComposition <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span>http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination<span style=\"color: navy\">" </span><b>alias </b>DDCCCountryOfVaccination <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span>http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand<span style=\"color: navy\">" </span><b>alias </b>DDCCVaccineBrand <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCOrganization.html\" title=\"DDCC Organization\">http://smart.who.int/ddcc/StructureDefinition/DDCCOrganization</a><span style=\"color: navy\">" </span><b>alias </b>DDCCOrganization <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-DDCCImmunization.html\" title=\"DDCC Immunization\">http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization</a><span style=\"color: navy\">" </span><b>alias </b>DDCCImmunization <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span>http://smart.who.int/ddcc/DDCCCoreDataSetVSPoV<span style=\"color: navy\">" </span><b>alias </b>DDCCCoreDataSetPoV <b>as </b><b>target</b>\r\n\r\n<b>group </b>DecodeDDCCtoQR<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">ddcc</span><span style=\"color: navy\"> : </span>DDCCDocument, <b>target</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>DDCCCoreDataSetPoV<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> ddcc.entry<b> as </b><span style=\"color: maroon\">entry</span><b> then</b><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">entry.resource : DDCCPatient as patient</span>\r\n entry.resource<span style=\"color: navy\"> : </span>Patient<b> as </b><span style=\"color: maroon\">patient</span><b> then </b>DecodePatientToQR<span style=\"color: navy\">(</span><span style=\"color: maroon\">patient</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">)</span> <i>"Patient"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n ddcc.entry<b> as </b><span style=\"color: maroon\">entry</span><b> then</b><span style=\"color: navy\"> {\r\n</span> entry.resource<span style=\"color: navy\"> : </span>Immunization<b> as </b><span style=\"color: maroon\">immunization</span><b> then </b>DecodeImmunizationToQR<span style=\"color: navy\">(</span><span style=\"color: maroon\">ddcc</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">immunization</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">qr</span><span style=\"color: navy\">)</span> <i>"Immunization"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>DecodePatientToQR<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">patient</span><span style=\"color: navy\"> : </span>DDCCPatient, <b>target</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>DDCCCoreDataSetPoV<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> patient.birthDate<b> as </b><span style=\"color: maroon\">birthDate</span><span style=\"color: navy\"><b> -> </b></span>qr.birthDate = <span style=\"color: maroon\">birthDate</span><span style=\"color: navy\">;</span>\r\n patient.name<b> as </b><span style=\"color: maroon\">name</span><b> then</b><span style=\"color: navy\"> {\r\n</span> name.text<b> as </b><span style=\"color: maroon\">text</span><span style=\"color: navy\"><b> -> </b></span>qr.name = <span style=\"color: maroon\">text</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span><b>group </b>DecodeImmunizationToQR<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">ddcc</span><span style=\"color: navy\"> : </span>DDCCDocument, <b>source</b> <span style=\"color: maroon\">immunization</span><span style=\"color: navy\"> : </span>DDCCImmunization, <b>target</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>DDCCCoreDataSetPoV<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> immunization<span style=\"color: navy\"><b> -> </b></span>qr.vaccination = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'BackboneElement'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">vacEvent</span><b> then</b><span style=\"color: navy\"> {\r\n</span> immunization.protocolApplied<b> as </b><span style=\"color: maroon\">protocol</span><b> then</b><span style=\"color: navy\"> {\r\n</span> protocol.doseNumberPositiveInt<b> as </b><span style=\"color: maroon\">dose</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.dose = <span style=\"color: maroon\">dose</span><span style=\"color: navy\">;</span>\r\n protocol.seriesDosesPositiveInt<b> as </b><span style=\"color: maroon\">doseNum</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.totalDoses = <span style=\"color: maroon\">doseNum</span><span style=\"color: navy\">;</span>\r\n protocol.targetDisease<b> as </b><span style=\"color: maroon\">targetDisease</span><b> then</b><span style=\"color: navy\"> {\r\n</span> targetDisease.valueCodableConcept<b> as </b><span style=\"color: maroon\">valueCodableConcept</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.disease = <span style=\"color: maroon\">valueCodableConcept</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"TargetDisease"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span><span style=\"color: navy\">;</span>\r\n immunization.occurrenceDateTime<b> as </b><span style=\"color: maroon\">date</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.date = <span style=\"color: maroon\">date</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">TODO: need to populate vacEvent.maholder</span>\r\n <span style=\"color: #b36b00\" title=\"This element was not defined prior to R5\">// immunization.extension : DDCCCountryOfVaccination as country</span>\r\n immunization.extension<b> as </b><span style=\"color: maroon\">country</span><b> where </b>(url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfEvent')<b> then</b><span style=\"color: navy\"> {\r\n</span> country.valueCode<b> as </b><span style=\"color: maroon\">code</span><span style=\"color: navy\"><b> -> </b></span> vacEvent.country = <b>create</b><span style=\"color: navy\">(</span><span style=\"color: blue\">'Coding'</span><span style=\"color: navy\">)</span><b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\">, </span> coding.code = <span style=\"color: maroon\">code</span><span style=\"color: navy\">, </span> coding.system = <span style=\"color: blue\">'http://hl7.org/fhir/ValueSet/iso3166-1-3'</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"Country"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: #b36b00\" title=\"This element was not defined prior to R5\">// immunization.extension : DDCCBrand as brand</span>\r\n immunization.extension<b> as </b><span style=\"color: maroon\">brand</span><b> where </b>(url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCEventBrand')<b> then</b><span style=\"color: navy\"> {\r\n</span> brand.valueCoding<b> as </b><span style=\"color: maroon\">valueCoding</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.brand = <span style=\"color: maroon\">valueCoding</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"VaccineBrand"</i><span style=\"color: navy\">;</span>\r\n immunization.vaccineCode<b> as </b><span style=\"color: maroon\">vaccineCode</span><b> then</b><span style=\"color: navy\"> {\r\n</span> vaccineCode.coding<b> as </b><span style=\"color: maroon\">coding</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.vaccine = <span style=\"color: maroon\">coding</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"VaccineCode"</i><span style=\"color: navy\">;</span>\r\n ddcc.entry<b> as </b><span style=\"color: maroon\">entry</span><b> then</b><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">entry.resource : DDCCOrganization as organization</span>\r\n entry.resource<span style=\"color: navy\"> : </span>Organization<b> as </b><span style=\"color: maroon\">organization</span><b> then</b><span style=\"color: navy\"> {\r\n</span> organization.name<b> as </b><span style=\"color: maroon\">name</span><span style=\"color: navy\"><b> -> </b></span>vacEvent.centre = <span style=\"color: maroon\">name</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"CentreName"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"VaccinationCentre"</i><span style=\"color: navy\">;</span>\r\n ddcc.entry<b> as </b><span style=\"color: maroon\">entry</span><b> then</b><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">entry.resource : DDCCVSComposition as composition</span>\r\n entry.resource<span style=\"color: navy\"> : </span>Composition<b> as </b><span style=\"color: maroon\">composition</span><b> then</b><span style=\"color: navy\"> {\r\n</span> composition.identifier<b> as </b><span style=\"color: maroon\">identifier</span><span style=\"color: navy\"><b> -> </b></span>qr.identifier = <span style=\"color: maroon\">identifier</span><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"VaccinationEventID"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"VaccinationEvent"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"Vaccination"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "http://smart.who.int/ddcc/StructureMap/DDCCtoCoredataset",
"version" : "1.0.0",
"name" : "DDCCtoCoredataset",
"status" : "draft",
"date" : "2024-10-17T05:03:04+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"jurisdiction" : [
{
"coding" : [
{
"system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
"code" : "001"
}
]
}
],
"structure" : [
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition",
"mode" : "source",
"alias" : "DDCC"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCDocument",
"mode" : "source",
"alias" : "DDCCDocument"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCPatient",
"mode" : "source",
"alias" : "DDCCPatient"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCVSComposition",
"mode" : "source",
"alias" : "DDCCVSComposition"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfVaccination",
"mode" : "source",
"alias" : "DDCCCountryOfVaccination"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCVaccineBrand",
"mode" : "source",
"alias" : "DDCCVaccineBrand"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCOrganization",
"mode" : "source",
"alias" : "DDCCOrganization"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCImmunization",
"mode" : "source",
"alias" : "DDCCImmunization"
},
{
"url" : "http://smart.who.int/ddcc/DDCCCoreDataSetVSPoV",
"mode" : "target",
"alias" : "DDCCCoreDataSetPoV"
}
],
"group" : [
{
"name" : "DecodeDDCCtoQR",
"typeMode" : "none",
"input" : [
{
"name" : "ddcc",
"type" : "DDCCDocument",
"mode" : "source"
},
{
"name" : "qr",
"type" : "DDCCCoreDataSetPoV",
"mode" : "target"
}
],
"rule" : [
{
"name" : "entry",
"source" : [
{
"context" : "ddcc",
"element" : "entry",
"variable" : "entry"
}
],
"rule" : [
{
"name" : "Patient",
"source" : [
{
"context" : "entry",
"type" : "Patient",
"element" : "resource",
"variable" : "patient"
}
],
"dependent" : [
{
"name" : "DecodePatientToQR",
"variable" : [
"patient",
"qr"
]
}
]
}
]
},
{
"name" : "entry",
"source" : [
{
"context" : "ddcc",
"element" : "entry",
"variable" : "entry"
}
],
"rule" : [
{
"name" : "Immunization",
"source" : [
{
"context" : "entry",
"type" : "Immunization",
"element" : "resource",
"variable" : "immunization"
}
],
"dependent" : [
{
"name" : "DecodeImmunizationToQR",
"variable" : [
"ddcc",
"immunization",
"qr"
]
}
]
}
]
}
]
},
{
"name" : "DecodePatientToQR",
"typeMode" : "none",
"input" : [
{
"name" : "patient",
"type" : "DDCCPatient",
"mode" : "source"
},
{
"name" : "qr",
"type" : "DDCCCoreDataSetPoV",
"mode" : "target"
}
],
"rule" : [
{
"name" : "birthDate",
"source" : [
{
"context" : "patient",
"element" : "birthDate",
"variable" : "birthDate"
}
],
"target" : [
{
"context" : "qr",
"contextType" : "variable",
"element" : "birthDate",
"transform" : "copy",
"parameter" : [
{
"valueId" : "birthDate"
}
]
}
]
},
{
"name" : "name",
"source" : [
{
"context" : "patient",
"element" : "name",
"variable" : "name"
}
],
"rule" : [
{
"name" : "text",
"source" : [
{
"context" : "name",
"element" : "text",
"variable" : "text"
}
],
"target" : [
{
"context" : "qr",
"contextType" : "variable",
"element" : "name",
"transform" : "copy",
"parameter" : [
{
"valueId" : "text"
}
]
}
]
}
]
}
]
},
{
"name" : "DecodeImmunizationToQR",
"typeMode" : "none",
"input" : [
{
"name" : "ddcc",
"type" : "DDCCDocument",
"mode" : "source"
},
{
"name" : "immunization",
"type" : "DDCCImmunization",
"mode" : "source"
},
{
"name" : "qr",
"type" : "DDCCCoreDataSetPoV",
"mode" : "target"
}
],
"rule" : [
{
"name" : "Vaccination",
"source" : [
{
"context" : "immunization"
}
],
"target" : [
{
"context" : "qr",
"contextType" : "variable",
"element" : "vaccination",
"variable" : "vacEvent",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
}
],
"rule" : [
{
"name" : "protocolApplied",
"source" : [
{
"context" : "immunization",
"element" : "protocolApplied",
"variable" : "protocol"
}
],
"rule" : [
{
"name" : "doseNumberPositiveInt",
"source" : [
{
"context" : "protocol",
"element" : "doseNumberPositiveInt",
"variable" : "dose"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "dose",
"transform" : "copy",
"parameter" : [
{
"valueId" : "dose"
}
]
}
]
},
{
"name" : "seriesDosesPositiveInt",
"source" : [
{
"context" : "protocol",
"element" : "seriesDosesPositiveInt",
"variable" : "doseNum"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "totalDoses",
"transform" : "copy",
"parameter" : [
{
"valueId" : "doseNum"
}
]
}
]
},
{
"name" : "TargetDisease",
"source" : [
{
"context" : "protocol",
"element" : "targetDisease",
"variable" : "targetDisease"
}
],
"rule" : [
{
"name" : "valueCodableConcept",
"source" : [
{
"context" : "targetDisease",
"element" : "valueCodableConcept",
"variable" : "valueCodableConcept"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "disease",
"transform" : "copy",
"parameter" : [
{
"valueId" : "valueCodableConcept"
}
]
}
]
}
]
}
]
},
{
"name" : "occurrenceDateTime",
"source" : [
{
"context" : "immunization",
"element" : "occurrenceDateTime",
"variable" : "date"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "date",
"transform" : "copy",
"parameter" : [
{
"valueId" : "date"
}
]
}
]
},
{
"name" : "Country",
"source" : [
{
"context" : "immunization",
"element" : "extension",
"variable" : "country",
"condition" : "(url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCCountryOfEvent')"
}
],
"rule" : [
{
"name" : "valueCode",
"source" : [
{
"context" : "country",
"element" : "valueCode",
"variable" : "code"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "country",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueId" : "code"
}
]
},
{
"context" : "coding",
"contextType" : "variable",
"element" : "system",
"transform" : "copy",
"parameter" : [
{
"valueString" : "http://hl7.org/fhir/ValueSet/iso3166-1-3"
}
]
}
]
}
]
},
{
"name" : "VaccineBrand",
"source" : [
{
"context" : "immunization",
"element" : "extension",
"variable" : "brand",
"condition" : "(url = 'http://smart.who.int/ddcc/StructureDefinition/DDCCEventBrand')"
}
],
"rule" : [
{
"name" : "valueCoding",
"source" : [
{
"context" : "brand",
"element" : "valueCoding",
"variable" : "valueCoding"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "brand",
"transform" : "copy",
"parameter" : [
{
"valueId" : "valueCoding"
}
]
}
]
}
]
},
{
"name" : "VaccineCode",
"source" : [
{
"context" : "immunization",
"element" : "vaccineCode",
"variable" : "vaccineCode"
}
],
"rule" : [
{
"name" : "coding",
"source" : [
{
"context" : "vaccineCode",
"element" : "coding",
"variable" : "coding"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "vaccine",
"transform" : "copy",
"parameter" : [
{
"valueId" : "coding"
}
]
}
]
}
]
},
{
"name" : "VaccinationCentre",
"source" : [
{
"context" : "ddcc",
"element" : "entry",
"variable" : "entry"
}
],
"rule" : [
{
"name" : "CentreName",
"source" : [
{
"context" : "entry",
"type" : "Organization",
"element" : "resource",
"variable" : "organization"
}
],
"rule" : [
{
"name" : "name",
"source" : [
{
"context" : "organization",
"element" : "name",
"variable" : "name"
}
],
"target" : [
{
"context" : "vacEvent",
"contextType" : "variable",
"element" : "centre",
"transform" : "copy",
"parameter" : [
{
"valueId" : "name"
}
]
}
]
}
]
}
]
},
{
"name" : "VaccinationEvent",
"source" : [
{
"context" : "ddcc",
"element" : "entry",
"variable" : "entry"
}
],
"rule" : [
{
"name" : "VaccinationEventID",
"source" : [
{
"context" : "entry",
"type" : "Composition",
"element" : "resource",
"variable" : "composition"
}
],
"rule" : [
{
"name" : "identifier",
"source" : [
{
"context" : "composition",
"element" : "identifier",
"variable" : "identifier"
}
],
"target" : [
{
"context" : "qr",
"contextType" : "variable",
"element" : "identifier",
"transform" : "copy",
"parameter" : [
{
"valueId" : "identifier"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}