This is the continuous build for version 1.0.0. This version is based on the current content of https://github.com/WorldHealthOrganization/ddcc and changes regularly.
Draft as of 2024-01-19 |
{
"resourceType" : "StructureMap",
"id" : "ddcc-qresp-to-coredataset",
"meta" : {
"versionId" : "1",
"lastUpdated" : "2021-12-14T19:11:42.812+00:00"
},
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><pre>map "http://smart.who.int/ddcc/StructureMap/QRespToCoreDataSet" = "QRespToCoreDataSet"\r\n\r\n\r\nuses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QResp as source\r\nuses "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetPoV" alias DDCCPoV as target\r\n\r\ngroup QRespToCoreDataSet(source qr : QResp, target ddcc : DDCCPoV) {\r\n // qr.item as item where item.linkId = 'name' -> ddcc.name as name then {\r\n // log 'got answer';\r\n // item.answer first as answer -> name = answer.valueString;\r\n // };\r\n qr as src then QRespToHeader(src, ddcc) "set header content";\r\n qr as src -> ddcc.vaccination as vaccination then QRespToVaccination(src, vaccination) "set vaccination content";\r\n qr as src -> ddcc.certificate as certificate then QRespToCertificate(src, certificate) "set certificate content";\r\n}\r\n\r\ngroup QRespToHeader(source qr, target ddcc) {\r\n qr.item as item then {\r\n item.answer first as answer where item.linkId = 'name' then {\r\n answer.valueString as content -> ddcc.name = content "set name";\r\n } "first answser for name";\r\n item.answer first as answer where item.linkId = 'birthDate' then {\r\n answer.valueDate as content -> ddcc.birthDate = content "set birthDate";\r\n } "first answer for birthDate";\r\n item.answer first as answer where item.linkId = 'identifier' -> ddcc.identifier as identifier then {\r\n answer.valueString as content -> identifier.value = content "set identifier";\r\n } "first answer for identifier";\r\n item.answer first as answer where item.linkId = 'sex' then {\r\n answer.valueCoding as coding then {\r\n coding.code as content -> ddcc.sex = content "set sex";\r\n } "process coding";\r\n } "first answer for sex";\r\n } "header items";\r\n}\r\n\r\ngroup QRespToVaccination(source qr, target vaccination) {\r\n qr.item as item then {\r\n item.answer first as answer where item.linkId = 'vaccine' then {\r\n answer.valueCoding as content -> vaccination.vaccine = content "set vaccine";\r\n } "first answer for vaccine";\r\n item.answer first as answer where item.linkId = 'brand' then {\r\n answer.valueCoding as content -> vaccination.brand = content "set brand";\r\n } "first answer for brand";\r\n item.answer first as answer where item.linkId = 'manufacturer' then {\r\n answer.valueCoding as content -> vaccination.manufacturer = content "set manufacturer";\r\n } "first answer for manufacturer";\r\n item.answer first as answer where item.linkId = 'ma_holder' then {\r\n answer.valueCoding as content -> vaccination.maholder = content "set maholder";\r\n } "first answer for maholder";\r\n item.answer first as answer where item.linkId = 'lot' then {\r\n answer.valueString as content -> vaccination.lot = content "set lot";\r\n } "first answser for lot";\r\n item.answer first as answer where item.linkId = 'date' then {\r\n answer.valueDate as content -> vaccination.date = content "set date";\r\n } "first answer for date";\r\n item.answer first as answer where item.linkId = 'vaccine_valid' then {\r\n answer.valueDate as content -> vaccination.validFrom = content "set validFrom";\r\n } "first answer for validFrom";\r\n item.answer first as answer where item.linkId = 'dose' then {\r\n answer.valueInteger as content -> vaccination.dose = content "set dose";\r\n } "first answer for dose";\r\n item.answer first as answer where item.linkId = 'total_doses' then {\r\n answer.valueInteger as content -> vaccination.totalDoses = content "set totalDoses";\r\n } "first answer for totalDoses";\r\n item.answer first as answer where item.linkId = 'country' then {\r\n answer.valueCoding as content -> vaccination.country = content "set country";\r\n } "first answer for country";\r\n item.answer first as answer where item.linkId = 'centre' then {\r\n answer.valueString as content -> vaccination.centre = content "set centre";\r\n } "first answser for centre";\r\n item.answer first as answer where item.linkId = 'hw' -> vaccination.practitioner as identifier then {\r\n answer.valueString as content -> identifier.value = content "set practitioner";\r\n } "first answser for practitioner";\r\n item.answer first as answer where item.linkId = 'disease' then {\r\n answer.valueCoding as content -> vaccination.disease = content "set disease";\r\n } "first answer for disease";\r\n item.answer first as answer where item.linkId = 'due_date' then {\r\n answer.valueDate as content -> vaccination.nextDose = content "set nextDose";\r\n } "first answer for nextDose";\r\n } "vaccination items";\r\n qr as src -> vaccination.period as period then QRespToVaccinePeriod(src, period) "set vaccination period";\r\n}\r\n\r\ngroup QRespToVaccinePeriod(source qr, target period) {\r\n qr.item as item then {\r\n item.answer first as answer where item.linkId = 'valid_from' then {\r\n answer.valueDate as content -> period.start = content "set valid_from";\r\n } "first answer for valid_from";\r\n item.answer first as answer where item.linkId = 'valid_until' then {\r\n answer.valueDate as content -> period.end = content "set valid_until";\r\n } "first answer for valid_until";\r\n } "vaccination validity items";\r\n}\r\n\r\ngroup QRespToCertificate(source qr, target certificate) {\r\n qr.item as item then {\r\n item.answer first as answer where item.linkId = 'pha' -> certificate.issuer as issuer then {\r\n answer.valueString as content -> issuer.identifier as identifier then {\r\n content as value -> identifier.value = value "set issuer identifier";\r\n } "set issuer";\r\n } "first answser for hcid";\r\n item.answer first as answer where item.linkId = 'hcid' -> certificate.hcid as hcid then {\r\n answer.valueString as content -> hcid.value = content, certificate.version = 'RC2' "set hcid and version";\r\n } "first answser for hcid";\r\n } "certificate items";\r\n}\r\n\r\n</pre></div>"
},
"url" : "http://smart.who.int/ddcc/StructureMap/QRespToCoreDataSet",
"version" : "1.0.0",
"name" : "QRespToCoreDataSet",
"status" : "draft",
"date" : "2024-01-19T16:18:21+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://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
"mode" : "source",
"alias" : "QResp"
},
{
"url" : "http://smart.who.int/ddcc/StructureDefinition/DDCCCoreDataSetPoV",
"mode" : "target",
"alias" : "DDCCPoV"
}
],
"group" : [
{
"name" : "QRespToCoreDataSet",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"type" : "QResp",
"mode" : "source"
},
{
"name" : "ddcc",
"type" : "DDCCPoV",
"mode" : "target"
}
],
"rule" : [
{
"name" : "set header content",
"source" : [
{
"context" : "qr",
"variable" : "src"
}
],
"dependent" : [
{
"name" : "QRespToHeader",
"variable" : [
"src",
"ddcc"
]
}
],
"documentation" : "qr.item as item where item.linkId = 'name' -> ddcc.name as name then {\r\n log 'got answer';\r\n item.answer first as answer -> name = answer.valueString;\r\n };"
},
{
"name" : "set vaccination content",
"source" : [
{
"context" : "qr",
"variable" : "src"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "vaccination",
"variable" : "vaccination"
}
],
"dependent" : [
{
"name" : "QRespToVaccination",
"variable" : [
"src",
"vaccination"
]
}
]
},
{
"name" : "set certificate content",
"source" : [
{
"context" : "qr",
"variable" : "src"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "certificate",
"variable" : "certificate"
}
],
"dependent" : [
{
"name" : "QRespToCertificate",
"variable" : [
"src",
"certificate"
]
}
]
}
]
},
{
"name" : "QRespToHeader",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"mode" : "source"
},
{
"name" : "ddcc",
"mode" : "target"
}
],
"rule" : [
{
"name" : "header items",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item"
}
],
"rule" : [
{
"name" : "first answser for name",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'name'"
}
],
"rule" : [
{
"name" : "set name",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "name",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for birthDate",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'birthDate'"
}
],
"rule" : [
{
"name" : "set birthDate",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "birthDate",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for identifier",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'identifier'"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "identifier",
"variable" : "identifier"
}
],
"rule" : [
{
"name" : "set identifier",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for sex",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'sex'"
}
],
"rule" : [
{
"name" : "process coding",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "coding"
}
],
"rule" : [
{
"name" : "set sex",
"source" : [
{
"context" : "coding",
"element" : "code",
"variable" : "content"
}
],
"target" : [
{
"context" : "ddcc",
"contextType" : "variable",
"element" : "sex",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "QRespToVaccination",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"mode" : "source"
},
{
"name" : "vaccination",
"mode" : "target"
}
],
"rule" : [
{
"name" : "vaccination items",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item"
}
],
"rule" : [
{
"name" : "first answer for vaccine",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'vaccine'"
}
],
"rule" : [
{
"name" : "set vaccine",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "vaccine",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for brand",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'brand'"
}
],
"rule" : [
{
"name" : "set brand",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "brand",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for manufacturer",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'manufacturer'"
}
],
"rule" : [
{
"name" : "set manufacturer",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "manufacturer",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for maholder",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'ma_holder'"
}
],
"rule" : [
{
"name" : "set maholder",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "maholder",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answser for lot",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'lot'"
}
],
"rule" : [
{
"name" : "set lot",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "lot",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for date",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'date'"
}
],
"rule" : [
{
"name" : "set date",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "date",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for validFrom",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'vaccine_valid'"
}
],
"rule" : [
{
"name" : "set validFrom",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "validFrom",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for dose",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'dose'"
}
],
"rule" : [
{
"name" : "set dose",
"source" : [
{
"context" : "answer",
"element" : "valueInteger",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "dose",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for totalDoses",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'total_doses'"
}
],
"rule" : [
{
"name" : "set totalDoses",
"source" : [
{
"context" : "answer",
"element" : "valueInteger",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "totalDoses",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for country",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'country'"
}
],
"rule" : [
{
"name" : "set country",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "country",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answser for centre",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'centre'"
}
],
"rule" : [
{
"name" : "set centre",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "centre",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answser for practitioner",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'hw'"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "practitioner",
"variable" : "identifier"
}
],
"rule" : [
{
"name" : "set practitioner",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for disease",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'disease'"
}
],
"rule" : [
{
"name" : "set disease",
"source" : [
{
"context" : "answer",
"element" : "valueCoding",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "disease",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for nextDose",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'due_date'"
}
],
"rule" : [
{
"name" : "set nextDose",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "nextDose",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
}
]
},
{
"name" : "set vaccination period",
"source" : [
{
"context" : "qr",
"variable" : "src"
}
],
"target" : [
{
"context" : "vaccination",
"contextType" : "variable",
"element" : "period",
"variable" : "period"
}
],
"dependent" : [
{
"name" : "QRespToVaccinePeriod",
"variable" : [
"src",
"period"
]
}
]
}
]
},
{
"name" : "QRespToVaccinePeriod",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"mode" : "source"
},
{
"name" : "period",
"mode" : "target"
}
],
"rule" : [
{
"name" : "vaccination validity items",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item"
}
],
"rule" : [
{
"name" : "first answer for valid_from",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'valid_from'"
}
],
"rule" : [
{
"name" : "set valid_from",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "period",
"contextType" : "variable",
"element" : "start",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
},
{
"name" : "first answer for valid_until",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'valid_until'"
}
],
"rule" : [
{
"name" : "set valid_until",
"source" : [
{
"context" : "answer",
"element" : "valueDate",
"variable" : "content"
}
],
"target" : [
{
"context" : "period",
"contextType" : "variable",
"element" : "end",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "QRespToCertificate",
"typeMode" : "none",
"input" : [
{
"name" : "qr",
"mode" : "source"
},
{
"name" : "certificate",
"mode" : "target"
}
],
"rule" : [
{
"name" : "certificate items",
"source" : [
{
"context" : "qr",
"element" : "item",
"variable" : "item"
}
],
"rule" : [
{
"name" : "first answser for hcid",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'pha'"
}
],
"target" : [
{
"context" : "certificate",
"contextType" : "variable",
"element" : "issuer",
"variable" : "issuer"
}
],
"rule" : [
{
"name" : "set issuer",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "issuer",
"contextType" : "variable",
"element" : "identifier",
"variable" : "identifier"
}
],
"rule" : [
{
"name" : "set issuer identifier",
"source" : [
{
"context" : "content",
"variable" : "value"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "value"
}
]
}
]
}
]
}
]
},
{
"name" : "first answser for hcid",
"source" : [
{
"context" : "item",
"element" : "answer",
"listMode" : "first",
"variable" : "answer",
"condition" : "item.linkId = 'hcid'"
}
],
"target" : [
{
"context" : "certificate",
"contextType" : "variable",
"element" : "hcid",
"variable" : "hcid"
}
],
"rule" : [
{
"name" : "set hcid and version",
"source" : [
{
"context" : "answer",
"element" : "valueString",
"variable" : "content"
}
],
"target" : [
{
"context" : "hcid",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "content"
}
]
},
{
"context" : "certificate",
"contextType" : "variable",
"element" : "version",
"transform" : "copy",
"parameter" : [
{
"valueString" : "RC2"
}
]
}
]
}
]
}
]
}
]
}
]
}
IG © 2021+ WHO. Package who.ddcc#1.0.0 based on FHIR 4.0.1. Generated 2024-01-19
Links: Table of Contents |
QA Report
| Issues
| Version History | License