FHIR © HL7.org  |  Server Home  |  XIG Home  |  XIG Stats  |  Server Source  |  FHIR  

FHIR IG Statistics: StructureMap/ExtractComplexSmap

Packagehl7.fhir.uv.sdc
Resource TypeStructureMap
IdExtractComplexSmap
FHIR VersionR4
Sourcehttp://hl7.org/fhir/uv/sdc/https://build.fhir.org/ig/HL7/sdc/StructureMap-ExtractComplexSmap.html
URLhttp://hl7.org/fhir/uv/sdc/StructureMap/ExtractComplexSmap
Version4.0.0-ballot
Statusdraft
Date2025-07-14T18:38:59+00:00
NameExtractComplexSmap
Realmuv
Authorityhl7

Resources that use this resource

No resources found


Resources that this resource uses

No resources found


Narrative

Note: links and images are rebased to the (stated) source

/// url = "http://hl7.org/fhir/uv/sdc/StructureMap/ExtractComplexSmap"
/// name = "ExtractComplexSmap"
/// status = "active"
/// title = "Complex extraction structure map example"
/// description = "An example of a StructureMap used to support extraction from a QuestionnaireResponse"
/// experimental = "true"

map "http://hl7.org/fhir/uv/sdc/StructureMap/ExtractComplexSmap" = "ExtractComplexSmap"

uses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" as source
uses "http://hl7.org/fhir/StructureDefinition/Bundle" as target
uses "http://hl7.org/fhir/StructureDefinition/Patient" as target
uses "http://hl7.org/fhir/StructureDefinition/RelatedPerson" as target
uses "http://hl7.org/fhir/StructureDefinition/Observation" as target
uses "http://hl7.org/fhir/StructureDefinition/Coding" as target

group ExtractBundle(source src : QuestionnaireResponse, target tgt : Bundle) {

  // Patient
    src.item as patientItem where (linkId = 'patient') -> tgt.entry as patientEntry, uuid() as patientFullUrl then {
      src -> patientEntry.resource = create('Patient') as pat //, pat.id = (%patientFullUrl)
        then PopulatePatient(src, patientItem, pat), PopulateBundleEntry(src, patientEntry, patientFullUrl) "popPatient";
  
  // Related Person(s)
    src.item as rpItem where (linkId = 'contacts') -> tgt.entry as entry, uuid() as fullUrl then {
      src -> entry.resource = create('RelatedPerson') as rp //, rp.id = (%fullUrl)
        then PopulateRelatedPerson(src, rpItem, rp, patientFullUrl), PopulateBundleEntry(src, entry, fullUrl) "popRelatedPerson";
    } "CreateRelatedPersonEntry";
  
  src.item as obsItems where (linkId = 'obs') -> tgt then {
    // Height Observation
    obsItems.item as heightItem where (linkId = 'height') -> tgt.entry as entry, uuid() as fullUrl then {
      src -> entry.resource = create('Observation') as obs,
        cc('http://loinc.org', '8302-2', 'Body height') as coding,
        obs.value = create('Quantity') as q, q.value = (%heightItem.answer.value.first()), q.unit = 'm'
        then PopulateObservation(src, heightItem, obs, coding, patientFullUrl), 
             PopulateBundleEntry(src, entry, fullUrl) "popObs";
    } "CreateHeightObsEntry";
  
    // Weight Observation
    obsItems.item as weightItem where (linkId = 'weight') -> tgt.entry as entry, uuid() as fullUrl then {
      src -> entry.resource = create('Observation') as obs,
        cc('http://loinc.org', '29463-7', 'Weight') as coding,
        obs.value = create('Quantity') as q, q.value = (%weightItem.answer.value.first()), q.unit = 'kg'
        then PopulateObservation(src, weightItem, obs, coding, patientFullUrl), 
             PopulateBundleEntry(src, entry, fullUrl) "popObs";
    } "CreateWeightObsEntry";

    // Prepare the bundle entry
    obsItems.item as complicationItem where (linkId = 'complication') -> tgt.entry as entry, uuid() as fullUrl then {
      src -> entry.resource = create('Observation') as obs,
        cc('http://example.org/sdh/demo/CodeSystem/cc-screening-codes', 'sigmoidoscopy-complication') as coding,
        obs.value = (%complicationItem.answer.value.first())
        then PopulateObservation(src, complicationItem, obs, coding, patientFullUrl), 
             PopulateBundleEntry(src, entry, fullUrl) "popObs";
    } "CreateComplicationObsEntry";
  };
    } "CreatePatientEntry";
}

group PopulateBundleEntry(source src : QuestionnaireResponse, target entry, target fullUrl) {
    src -> entry.fullUrl = ('urn:uuid:' & %fullUrl) "SetFullUrl";
    src -> entry.request as req then {
      src -> req.method = 'POST' "setMethod";
    } "SetRequest";
}

group PopulatePatient(source src: QuestionnaireResponse, source patientItem, target pat : Patient) {
  patientItem.item as gender where (linkId = 'gender') -> pat.gender = (%gender.answer.value.first().code) "SetGender";
  patientItem.item as dob where (linkId = 'dob') -> pat.birthDate = (%dob.answer.value) "SetBirthDate";
  
  // name
  patientItem.item as name where (linkId = 'name') -> pat.name as tgtName then {
    name -> tgtName.text = (%name.item.where(linkId='given' or linkId='family').answer.value.join(' ')) "SetNameText";
    name.item as family where (linkId = 'family') -> tgtName.family = (%family.answer.value) "SetFamily";
    name.item as given where (linkId = 'given') then { 
      given.answer as answer -> tgtName.given = (%answer.value) "AnswerValue";
    }  "SetGiven";
  } "SetName";
  
  // identifier
  patientItem.item as itemIdentifier where (linkId = 'ihi') -> pat.identifier as tgtIdentifier then {
    itemIdentifier -> tgtIdentifier.type as t, t.text = 'National Identifier (IHI)' "SetIdentifierType";
    itemIdentifier -> tgtIdentifier.system = 'http://example.org/nhio' "SetIdentifierSystem";
    itemIdentifier -> tgtIdentifier.value = (%itemIdentifier.answer.value) "SetIdentifierValue";
  } "SetIdentifier";
  
  // telecom
  patientItem.item as itemMobile where (linkId = 'mobile-phone') -> pat.telecom as t, t.system='phone', t.value = (%itemMobile.answer.value), t.use = 'mobile' "SetTelecom";
}

group PopulateRelatedPerson(source src: QuestionnaireResponse, source rpItem, target rp : RelatedPerson, target patientFullUrl) {
  rpItem -> rp.patient as p, p.reference = (%patientFullUrl) "SetPatientRef";
  rpItem.item as name where (linkId = 'contact-name') -> rp.name as n, n.text = (%name.answer.value) "SetName";
  rpItem.item as rel where (linkId = 'relationship') -> rp.relationship as r, r.coding = (%rel.answer.value) "SetRelationship";
  rpItem.item as phone where (linkId = 'phone') -> rp.telecom as t, t.system = 'phone', t.value = (%phone.answer.value), t.use = 'mobile' "SetPhone";
}

group PopulateObservation(source src : QuestionnaireResponse, source complicationItem, target tgt : Observation, target coding : Coding, target patientFullUrl) {
  src -> tgt.code = (%coding) "SetObservationCode";
  src -> tgt.status = 'final' "SetStatus";
  // src.subject as s -> tgt.subject = s; // not using the the subject, as this is intended to be created from the data instead (as is outgoing referral)
  src.subject as s -> tgt.subject as p, p.reference = (%patientFullUrl) "SetSubjectRef";
  src.authored as s -> tgt.issued = s "SetAuthored";
  src.authored as s -> tgt.effective = s "SetEffective";
  src.author as s -> tgt.performer = s;
  src.id -> tgt.derivedFrom as df, df.reference = ('QuestionnaireResponse/' & %src.id) "SetDerivedFrom";
}

Source

{
  "resourceType": "StructureMap",
  "id": "ExtractComplexSmap",
  "text": {
    "status": "additional",
    "div": "<!-- snip (see above) -->"
  },
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode": "fhir"
    }
  ],
  "url": "http://hl7.org/fhir/uv/sdc/StructureMap/ExtractComplexSmap",
  "identifier": [
    {
      "system": "urn:ietf:rfc:3986",
      "value": "urn:oid:2.16.840.1.113883.4.642.40.17.43.3"
    }
  ],
  "version": "4.0.0-ballot",
  "name": "ExtractComplexSmap",
  "status": "draft",
  "date": "2025-07-14T18:38:59+00:00",
  "publisher": "HL7 International / FHIR Infrastructure",
  "contact": [
    {
      "name": "HL7 International / FHIR Infrastructure",
      "telecom": [
        {
          "system": "url",
          "value": "http://www.hl7.org/Special/committees/fiwg"
        }
      ]
    },
    {
      "telecom": [
        {
          "system": "url",
          "value": "http://www.hl7.org/Special/committees/fiwg"
        }
      ]
    }
  ],
  "jurisdiction": [
    {
      "coding": [
        {
          "system": "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code": "001",
          "display": "World"
        }
      ]
    }
  ],
  "structure": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
      "mode": "source"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Bundle",
      "mode": "target"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Patient",
      "mode": "target"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/RelatedPerson",
      "mode": "target"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Observation",
      "mode": "target"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Coding",
      "mode": "target"
    }
  ],
  "group": [
    {
      "name": "ExtractBundle",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "type": "QuestionnaireResponse",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "Bundle",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "CreatePatientEntry",
          "source": [
            {
              "context": "src",
              "element": "item",
              "variable": "patientItem",
              "condition": "(linkId = 'patient')"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "entry",
              "variable": "patientEntry"
            },
            {
              "contextType": "variable",
              "variable": "patientFullUrl",
              "transform": "uuid"
            }
          ],
          "rule": [
            {
              "name": "popPatient",
              "source": [
                {
                  "context": "src"
                }
              ],
              "target": [
                {
                  "context": "patientEntry",
                  "contextType": "variable",
                  "element": "resource",
                  "variable": "pat",
                  "transform": "create",
                  "parameter": [
                    {
                      "valueString": "Patient"
                    }
                  ]
                }
              ],
              "dependent": [
                {
                  "name": "PopulatePatient",
                  "variable": [
                    "src",
                    "patientItem",
                    "pat"
                  ]
                },
                {
                  "name": "PopulateBundleEntry",
                  "variable": [
                    "src",
                    "patientEntry",
                    "patientFullUrl"
                  ]
                }
              ]
            },
            {
              "name": "CreateRelatedPersonEntry",
              "source": [
                {
                  "context": "src",
                  "element": "item",
                  "variable": "rpItem",
                  "condition": "(linkId = 'contacts')"
                }
              ],
              "target": [
                {
                  "context": "tgt",
                  "contextType": "variable",
                  "element": "entry",
                  "variable": "entry"
                },
                {
                  "contextType": "variable",
                  "variable": "fullUrl",
                  "transform": "uuid"
                }
              ],
              "rule": [
                {
                  "name": "popRelatedPerson",
                  "source": [
                    {
                      "context": "src"
                    }
                  ],
                  "target": [
                    {
                      "context": "entry",
                      "contextType": "variable",
                      "element": "resource",
                      "variable": "rp",
                      "transform": "create",
                      "parameter": [
                        {
                          "valueString": "RelatedPerson"
                        }
                      ]
                    }
                  ],
                  "dependent": [
                    {
                      "name": "PopulateRelatedPerson",
                      "variable": [
                        "src",
                        "rpItem",
                        "rp",
                        "patientFullUrl"
                      ]
                    },
                    {
                      "name": "PopulateBundleEntry",
                      "variable": [
                        "src",
                        "entry",
                        "fullUrl"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "item",
              "source": [
                {
                  "context": "src",
                  "element": "item",
                  "variable": "obsItems",
                  "condition": "(linkId = 'obs')"
                }
              ],
              "target": [
                {
                  "contextType": "variable",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueId": "tgt"
                    }
                  ]
                }
              ],
              "rule": [
                {
                  "name": "CreateHeightObsEntry",
                  "source": [
                    {
                      "context": "obsItems",
                      "element": "item",
                      "variable": "heightItem",
                      "condition": "(linkId = 'height')"
                    }
                  ],
                  "target": [
                    {
                      "context": "tgt",
                      "contextType": "variable",
                      "element": "entry",
                      "variable": "entry"
                    },
                    {
                      "contextType": "variable",
                      "variable": "fullUrl",
                      "transform": "uuid"
                    }
                  ],
                  "rule": [
                    {
                      "name": "popObs",
                      "source": [
                        {
                          "context": "src"
                        }
                      ],
                      "target": [
                        {
                          "context": "entry",
                          "contextType": "variable",
                          "element": "resource",
                          "variable": "obs",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Observation"
                            }
                          ]
                        },
                        {
                          "contextType": "variable",
                          "variable": "coding",
                          "transform": "cc",
                          "parameter": [
                            {
                              "valueString": "http://loinc.org"
                            },
                            {
                              "valueString": "8302-2"
                            },
                            {
                              "valueString": "Body height"
                            }
                          ]
                        },
                        {
                          "context": "obs",
                          "contextType": "variable",
                          "element": "value",
                          "variable": "q",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        },
                        {
                          "context": "q",
                          "contextType": "variable",
                          "element": "value",
                          "transform": "evaluate",
                          "parameter": [
                            {
                              "valueString": "%heightItem.answer.value.first()"
                            }
                          ]
                        },
                        {
                          "context": "q",
                          "contextType": "variable",
                          "element": "unit",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "m"
                            }
                          ]
                        }
                      ],
                      "dependent": [
                        {
                          "name": "PopulateObservation",
                          "variable": [
                            "src",
                            "heightItem",
                            "obs",
                            "coding",
                            "patientFullUrl"
                          ]
                        },
                        {
                          "name": "PopulateBundleEntry",
                          "variable": [
                            "src",
                            "entry",
                            "fullUrl"
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "CreateWeightObsEntry",
                  "source": [
                    {
                      "context": "obsItems",
                      "element": "item",
                      "variable": "weightItem",
                      "condition": "(linkId = 'weight')"
                    }
                  ],
                  "target": [
                    {
                      "context": "tgt",
                      "contextType": "variable",
                      "element": "entry",
                      "variable": "entry"
                    },
                    {
                      "contextType": "variable",
                      "variable": "fullUrl",
                      "transform": "uuid"
                    }
                  ],
                  "rule": [
                    {
                      "name": "popObs",
                      "source": [
                        {
                          "context": "src"
                        }
                      ],
                      "target": [
                        {
                          "context": "entry",
                          "contextType": "variable",
                          "element": "resource",
                          "variable": "obs",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Observation"
                            }
                          ]
                        },
                        {
                          "contextType": "variable",
                          "variable": "coding",
                          "transform": "cc",
                          "parameter": [
                            {
                              "valueString": "http://loinc.org"
                            },
                            {
                              "valueString": "29463-7"
                            },
                            {
                              "valueString": "Weight"
                            }
                          ]
                        },
                        {
                          "context": "obs",
                          "contextType": "variable",
                          "element": "value",
                          "variable": "q",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        },
                        {
                          "context": "q",
                          "contextType": "variable",
                          "element": "value",
                          "transform": "evaluate",
                          "parameter": [
                            {
                              "valueString": "%weightItem.answer.value.first()"
                            }
                          ]
                        },
                        {
                          "context": "q",
                          "contextType": "variable",
                          "element": "unit",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "kg"
                            }
                          ]
                        }
                      ],
                      "dependent": [
                        {
                          "name": "PopulateObservation",
                          "variable": [
                            "src",
                            "weightItem",
                            "obs",
                            "coding",
                            "patientFullUrl"
                          ]
                        },
                        {
                          "name": "PopulateBundleEntry",
                          "variable": [
                            "src",
                            "entry",
                            "fullUrl"
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "CreateComplicationObsEntry",
                  "source": [
                    {
                      "context": "obsItems",
                      "element": "item",
                      "variable": "complicationItem",
                      "condition": "(linkId = 'complication')"
                    }
                  ],
                  "target": [
                    {
                      "context": "tgt",
                      "contextType": "variable",
                      "element": "entry",
                      "variable": "entry"
                    },
                    {
                      "contextType": "variable",
                      "variable": "fullUrl",
                      "transform": "uuid"
                    }
                  ],
                  "rule": [
                    {
                      "name": "popObs",
                      "source": [
                        {
                          "context": "src"
                        }
                      ],
                      "target": [
                        {
                          "context": "entry",
                          "contextType": "variable",
                          "element": "resource",
                          "variable": "obs",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Observation"
                            }
                          ]
                        },
                        {
                          "contextType": "variable",
                          "variable": "coding",
                          "transform": "cc",
                          "parameter": [
                            {
                              "valueString": "http://example.org/sdh/demo/CodeSystem/cc-screening-codes"
                            },
                            {
                              "valueString": "sigmoidoscopy-complication"
                            }
                          ]
                        },
                        {
                          "context": "obs",
                          "contextType": "variable",
                          "element": "value",
                          "transform": "evaluate",
                          "parameter": [
                            {
                              "valueString": "%complicationItem.answer.value.first()"
                            }
                          ]
                        }
                      ],
                      "dependent": [
                        {
                          "name": "PopulateObservation",
                          "variable": [
                            "src",
                            "complicationItem",
                            "obs",
                            "coding",
                            "patientFullUrl"
                          ]
                        },
                        {
                          "name": "PopulateBundleEntry",
                          "variable": [
                            "src",
                            "entry",
                            "fullUrl"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "PopulateBundleEntry",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "type": "QuestionnaireResponse",
          "mode": "source"
        },
        {
          "name": "entry",
          "mode": "target"
        },
        {
          "name": "fullUrl",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "SetFullUrl",
          "source": [
            {
              "context": "src"
            }
          ],
          "target": [
            {
              "context": "entry",
              "contextType": "variable",
              "element": "fullUrl",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "'urn:uuid:' & %fullUrl"
                }
              ]
            }
          ]
        },
        {
          "name": "SetRequest",
          "source": [
            {
              "context": "src"
            }
          ],
          "target": [
            {
              "context": "entry",
              "contextType": "variable",
              "element": "request",
              "variable": "req"
            }
          ],
          "rule": [
            {
              "name": "setMethod",
              "source": [
                {
                  "context": "src"
                }
              ],
              "target": [
                {
                  "context": "req",
                  "contextType": "variable",
                  "element": "method",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "POST"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "PopulatePatient",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "type": "QuestionnaireResponse",
          "mode": "source"
        },
        {
          "name": "patientItem",
          "mode": "source"
        },
        {
          "name": "pat",
          "type": "Patient",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "SetGender",
          "source": [
            {
              "context": "patientItem",
              "element": "item",
              "variable": "gender",
              "condition": "(linkId = 'gender')"
            }
          ],
          "target": [
            {
              "context": "pat",
              "contextType": "variable",
              "element": "gender",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%gender.answer.value.first().code"
                }
              ]
            }
          ]
        },
        {
          "name": "SetBirthDate",
          "source": [
            {
              "context": "patientItem",
              "element": "item",
              "variable": "dob",
              "condition": "(linkId = 'dob')"
            }
          ],
          "target": [
            {
              "context": "pat",
              "contextType": "variable",
              "element": "birthDate",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%dob.answer.value"
                }
              ]
            }
          ]
        },
        {
          "name": "SetName",
          "source": [
            {
              "context": "patientItem",
              "element": "item",
              "variable": "name",
              "condition": "(linkId = 'name')"
            }
          ],
          "target": [
            {
              "context": "pat",
              "contextType": "variable",
              "element": "name",
              "variable": "tgtName"
            }
          ],
          "rule": [
            {
              "name": "SetNameText",
              "source": [
                {
                  "context": "name"
                }
              ],
              "target": [
                {
                  "context": "tgtName",
                  "contextType": "variable",
                  "element": "text",
                  "transform": "evaluate",
                  "parameter": [
                    {
                      "valueString": "%name.item.where((linkId = 'given') or (linkId = 'family')).answer.value.join(' ')"
                    }
                  ]
                }
              ]
            },
            {
              "name": "SetFamily",
              "source": [
                {
                  "context": "name",
                  "element": "item",
                  "variable": "family",
                  "condition": "(linkId = 'family')"
                }
              ],
              "target": [
                {
                  "context": "tgtName",
                  "contextType": "variable",
                  "element": "family",
                  "transform": "evaluate",
                  "parameter": [
                    {
                      "valueString": "%family.answer.value"
                    }
                  ]
                }
              ]
            },
            {
              "name": "SetGiven",
              "source": [
                {
                  "context": "name",
                  "element": "item",
                  "variable": "given",
                  "condition": "(linkId = 'given')"
                }
              ],
              "rule": [
                {
                  "name": "AnswerValue",
                  "source": [
                    {
                      "context": "given",
                      "element": "answer",
                      "variable": "answer"
                    }
                  ],
                  "target": [
                    {
                      "context": "tgtName",
                      "contextType": "variable",
                      "element": "given",
                      "transform": "evaluate",
                      "parameter": [
                        {
                          "valueString": "%answer.value"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "SetIdentifier",
          "source": [
            {
              "context": "patientItem",
              "element": "item",
              "variable": "itemIdentifier",
              "condition": "(linkId = 'ihi')"
            }
          ],
          "target": [
            {
              "context": "pat",
              "contextType": "variable",
              "element": "identifier",
              "variable": "tgtIdentifier"
            }
          ],
          "rule": [
            {
              "name": "SetIdentifierType",
              "source": [
                {
                  "context": "itemIdentifier"
                }
              ],
              "target": [
                {
                  "context": "tgtIdentifier",
                  "contextType": "variable",
                  "element": "type",
                  "variable": "t"
                },
                {
                  "context": "t",
                  "contextType": "variable",
                  "element": "text",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "National Identifier (IHI)"
                    }
                  ]
                }
              ]
            },
            {
              "name": "SetIdentifierSystem",
              "source": [
                {
                  "context": "itemIdentifier"
                }
              ],
              "target": [
                {
                  "context": "tgtIdentifier",
                  "contextType": "variable",
                  "element": "system",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "http://example.org/nhio"
                    }
                  ]
                }
              ]
            },
            {
              "name": "SetIdentifierValue",
              "source": [
                {
                  "context": "itemIdentifier"
                }
              ],
              "target": [
                {
                  "context": "tgtIdentifier",
                  "contextType": "variable",
                  "element": "value",
                  "transform": "evaluate",
                  "parameter": [
                    {
                      "valueString": "%itemIdentifier.answer.value"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "SetTelecom",
          "source": [
            {
              "context": "patientItem",
              "element": "item",
              "variable": "itemMobile",
              "condition": "(linkId = 'mobile-phone')"
            }
          ],
          "target": [
            {
              "context": "pat",
              "contextType": "variable",
              "element": "telecom",
              "variable": "t"
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "system",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "phone"
                }
              ]
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "value",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%itemMobile.answer.value"
                }
              ]
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "mobile"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "PopulateRelatedPerson",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "type": "QuestionnaireResponse",
          "mode": "source"
        },
        {
          "name": "rpItem",
          "mode": "source"
        },
        {
          "name": "rp",
          "type": "RelatedPerson",
          "mode": "target"
        },
        {
          "name": "patientFullUrl",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "SetPatientRef",
          "source": [
            {
              "context": "rpItem"
            }
          ],
          "target": [
            {
              "context": "rp",
              "contextType": "variable",
              "element": "patient",
              "variable": "p"
            },
            {
              "context": "p",
              "contextType": "variable",
              "element": "reference",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%patientFullUrl"
                }
              ]
            }
          ]
        },
        {
          "name": "SetName",
          "source": [
            {
              "context": "rpItem",
              "element": "item",
              "variable": "name",
              "condition": "(linkId = 'contact-name')"
            }
          ],
          "target": [
            {
              "context": "rp",
              "contextType": "variable",
              "element": "name",
              "variable": "n"
            },
            {
              "context": "n",
              "contextType": "variable",
              "element": "text",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%name.answer.value"
                }
              ]
            }
          ]
        },
        {
          "name": "SetRelationship",
          "source": [
            {
              "context": "rpItem",
              "element": "item",
              "variable": "rel",
              "condition": "(linkId = 'relationship')"
            }
          ],
          "target": [
            {
              "context": "rp",
              "contextType": "variable",
              "element": "relationship",
              "variable": "r"
            },
            {
              "context": "r",
              "contextType": "variable",
              "element": "coding",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%rel.answer.value"
                }
              ]
            }
          ]
        },
        {
          "name": "SetPhone",
          "source": [
            {
              "context": "rpItem",
              "element": "item",
              "variable": "phone",
              "condition": "(linkId = 'phone')"
            }
          ],
          "target": [
            {
              "context": "rp",
              "contextType": "variable",
              "element": "telecom",
              "variable": "t"
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "system",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "phone"
                }
              ]
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "value",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%phone.answer.value"
                }
              ]
            },
            {
              "context": "t",
              "contextType": "variable",
              "element": "use",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "mobile"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "PopulateObservation",
      "typeMode": "none",
      "input": [
        {
          "name": "src",
          "type": "QuestionnaireResponse",
          "mode": "source"
        },
        {
          "name": "complicationItem",
          "mode": "source"
        },
        {
          "name": "tgt",
          "type": "Observation",
          "mode": "target"
        },
        {
          "name": "coding",
          "type": "Coding",
          "mode": "target"
        },
        {
          "name": "patientFullUrl",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "SetObservationCode",
          "source": [
            {
              "context": "src"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "code",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%coding"
                }
              ]
            }
          ]
        },
        {
          "name": "SetStatus",
          "source": [
            {
              "context": "src"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "status",
              "transform": "copy",
              "parameter": [
                {
                  "valueString": "final"
                }
              ]
            }
          ]
        },
        {
          "name": "SetSubjectRef",
          "source": [
            {
              "context": "src",
              "element": "subject",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "subject",
              "variable": "p"
            },
            {
              "context": "p",
              "contextType": "variable",
              "element": "reference",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "%patientFullUrl"
                }
              ]
            }
          ]
        },
        {
          "name": "SetAuthored",
          "source": [
            {
              "context": "src",
              "element": "authored",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "issued",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "s"
                }
              ]
            }
          ]
        },
        {
          "name": "SetEffective",
          "source": [
            {
              "context": "src",
              "element": "authored",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "effective",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "s"
                }
              ]
            }
          ]
        },
        {
          "name": "author",
          "source": [
            {
              "context": "src",
              "element": "author",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "performer",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "s"
                }
              ]
            }
          ]
        },
        {
          "name": "SetDerivedFrom",
          "source": [
            {
              "context": "src",
              "element": "id"
            }
          ],
          "target": [
            {
              "context": "tgt",
              "contextType": "variable",
              "element": "derivedFrom",
              "variable": "df"
            },
            {
              "context": "df",
              "contextType": "variable",
              "element": "reference",
              "transform": "evaluate",
              "parameter": [
                {
                  "valueString": "'QuestionnaireResponse/' & %src.id"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}