WHO Immunization Implementation Guide
0.2.0 - ci-build
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/ and changes regularly. See the Directory of published versions
Draft as of 2025-09-10 |
{
"resourceType" : "StructureMap",
"id" : "IMMZ.C4.QRToLM",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap IMMZ.C4.QRToLM</b></p><a name=\"IMMZ.C4.QRToLM\"> </a><a name=\"hcIMMZ.C4.QRToLM\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>http://smart.who.int/immunizations/StructureMap/IMMZ.C4.QRToLM<span style=\"color: navy\">" = "</span>IMMZ.C4.QRToLM<span style=\"color: navy\">"\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">Immunization Client Registry - Transform QuestionnaireResponse to Logical Model</span>\r\n\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"http://hl7.org/fhir/R4/questionnaireresponse.html\" title=\"QuestionnaireResponse\">http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse</a><span style=\"color: navy\">" </span><b>alias </b>QResp <b>as </b><b>source</b>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-IMMZC4.html\" title=\"IMMZ.C4.Create client record\">http://smart.who.int/immunizations/StructureDefinition/IMMZC4</a><span style=\"color: navy\">" </span><b>alias </b>immz <b>as </b><b>target</b>\r\n\r\n<b>imports</b><span style=\"color: navy\"> "</span><a href=\"StructureMap-IMMZ.Helpers.html\" title=\"IMMZ.Helpers\">http://smart.who.int/immunizations/StructureMap/IMMZ.Helpers</a><span style=\"color: navy\">"\r\n</span>\r\n<b>group </b>QRespToIMMZC<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">qr</span><span style=\"color: navy\"> : </span>QResp, <b>target</b> <span style=\"color: maroon\">immz</span><span style=\"color: navy\"> : </span>IMMZC<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'uniqueIdentifier'<span style=\"color: navy\"><b> -> </b></span>immz.uniqueIdentifier<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"uniqueIdentifier"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'name'<span style=\"color: navy\"><b> -> </b></span>immz.name<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"name"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'firstName'<span style=\"color: navy\"><b> -> </b></span>immz.firstName<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"firstName"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'familyName'<span style=\"color: navy\"><b> -> </b></span>immz.familyName<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"familyName"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'sex'<span style=\"color: navy\"><b> -> </b></span>immz.sex<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToCode<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"sex"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'dateOfBirth'<span style=\"color: navy\"><b> -> </b></span>immz.dateOfBirth<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"dateOfBirth"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'age'<span style=\"color: navy\"><b> -> </b></span>immz.age<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"age"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">caregiver</span><b> where </b>caregiver.linkId = 'caregiversMultiple'<span style=\"color: navy\"><b> -> </b></span>immz.caregiversMultiple<b> as </b><span style=\"color: maroon\">caretgt</span><b> then</b><span style=\"color: navy\"> {\r\n</span> caregiver.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'caregiversFullName'<span style=\"color: navy\"><b> -> </b></span>caretgt.caregiversFullName<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"caregiversFullName"</i><span style=\"color: navy\">;</span>\r\n caregiver.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'caregiversFirstName'<span style=\"color: navy\"><b> -> </b></span>caretgt.caregiversFirstName<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"caregiversFirstName"</i><span style=\"color: navy\">;</span>\r\n caregiver.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'caregiversFamilyName'<span style=\"color: navy\"><b> -> </b></span>caretgt.caregiversFamilyName<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"caregiversFamilyName"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">}</span> <i>"caregiversMultiple"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'contactPhoneNumber'<span style=\"color: navy\"><b> -> </b></span>immz.contactPhoneNumber<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"contactPhoneNumber"</i><span style=\"color: navy\">;</span>\r\n qr.item<b> as </b><span style=\"color: maroon\">item</span><b> where </b>linkId = 'address'<span style=\"color: navy\"><b> -> </b></span>immz.address<b> as </b><span style=\"color: maroon\">field</span><b> then </b>ItemToValue<span style=\"color: navy\">(</span><span style=\"color: maroon\">item</span><span style=\"color: navy\">, </span><span style=\"color: maroon\">field</span><span style=\"color: navy\">)</span> <i>"address"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "http://smart.who.int/immunizations/StructureMap/IMMZ.C4.QRToLM",
"version" : "0.2.0",
"name" : "IMMZ.C4.QRToLM",
"status" : "draft",
"date" : "2025-09-10T05:58:29+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"description" : "Immunization Client Registry - Transform QuestionnaireResponse to Logical Model",
"structure" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
"mode" : "source",
"alias" : "QResp"
},
{
"url" : "http://smart.who.int/immunizations/StructureDefinition/IMMZC4",
"mode" : "target",
"alias" : "immz"
}
],
"import" : [
🔗 "http://smart.who.int/immunizations/StructureMap/IMMZ.Helpers"
],
"group" : [
{
"name" : "QRespToIMMZC",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"type" : "QResp",
"mode" : "source"
},
{
"name" : "immz",
"type" : "IMMZC",
"mode" : "target"
}
],
"rule" : [
{
"name" : "uniqueIdentifier",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'uniqueIdentifier'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "uniqueIdentifier",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "name",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'name'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "name",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "firstName",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'firstName'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "firstName",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "familyName",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'familyName'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "familyName",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "sex",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'sex'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "sex",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToCode",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "dateOfBirth",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'dateOfBirth'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "dateOfBirth",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "age",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'age'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "age",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "caregiversMultiple",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "caregiver",
"condition" : "caregiver.linkId = 'caregiversMultiple'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "caregiversMultiple",
"variable" : "caretgt"
}
],
"rule" : [
{
"name" : "caregiversFullName",
"source" : [
{
"context" : "caregiver",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'caregiversFullName'"
}
],
"target" : [
{
"context" : "caretgt",
"contextType" : "variable",
"element" : "caregiversFullName",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "caregiversFirstName",
"source" : [
{
"context" : "caregiver",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'caregiversFirstName'"
}
],
"target" : [
{
"context" : "caretgt",
"contextType" : "variable",
"element" : "caregiversFirstName",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "caregiversFamilyName",
"source" : [
{
"context" : "caregiver",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'caregiversFamilyName'"
}
],
"target" : [
{
"context" : "caretgt",
"contextType" : "variable",
"element" : "caregiversFamilyName",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
}
]
},
{
"name" : "contactPhoneNumber",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'contactPhoneNumber'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "contactPhoneNumber",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
},
{
"name" : "address",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item",
"condition" : "linkId = 'address'"
}
],
"target" : [
{
"context" : "immz",
"contextType" : "variable",
"element" : "address",
"variable" : "field"
}
],
"dependent" : [
{
"name" : "ItemToValue",
"variable" : [
"item",
"field"
]
}
]
}
]
}
]
}