Social Care Interoperability Platform FHIR Implementation Guide
Version: 0.1.0, Status: draft

Social Care Interoperability Platform FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: PatientToTrace

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Patient-Trace Version: 0.1.0
Draft as of 2026-03-24 Computable Name: PatientToTrace

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Patient-Trace" = "PatientToTrace"

uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Patient" alias Patient as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Trace" alias Trace as target

group Trace(source src : Patient, target tgt : Trace) {
  src -> tgt.name as name then {
    src.name as humanName then {
      src -> name.given = evaluate(humanName, given[0]) "aa821d4a-9a93-4951-bc86-1ca39c9866b6";
      src -> name.family = evaluate(humanName, family) "f85c1e52-2d5e-41af-8705-cda0c77ed7eb";
    } "setFamilyAndGivenName";
  } "setName";
  src.gender as genderCode then {
    src -> src.genderIdentity = create('Coding') as givt then {
      src -> givt.system = 'http://hl7.org/fhir/administrative-gender' "158e25ef-bcac-4d1e-89f8-7831401efedc";
      src -> givt.code = genderCode "d1e01564-ff83-4638-8b81-2938239ed7d2";
      src -> tgt.sex = translate(givt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRBirthSex-1', 'Coding') "be811ab8-eb0f-4eea-b100-733b00d6ec2a";
    } "8e9a5cd3-897c-458a-823d-dccb0fd65be8";
  } "setGender";
  src -> tgt.nhsNumber as nhsNumber then {
    src.identifier as nhsNumberIdentifier where $this.system='https://fhir.nhs.uk/Id/nhs-number', nhsNumberIdentifier.value as nhsNumberValue, nhsNumberIdentifier.extension as nhsNumberTraceStatusExt then {
      src -> nhsNumber.value = nhsNumberValue "ccd3bd86-d59f-4e10-82b3-4716d2d3f798";
      src -> nhsNumber.statusIndicator as statusIndicator then {
        src -> statusIndicator.code = evaluate(nhsNumberTraceStatusExt, valueCodeableConcept.coding[0].code) "f3235a2e-ef0c-4e92-a4cc-17d5700d52ec";
        src -> statusIndicator.display = evaluate(nhsNumberTraceStatusExt, valueCodeableConcept.coding[0].display) "e70645af-fedf-466d-9298-b2c8252fcbf4";
      } "6551dd2a-8e4e-45bb-9c66-b7299b55b8d4";
    } "setNHSNumber";
    src -> tgt.dateOfBirth = evaluate(src, birthDate) "setDateOfBirth";
    src.address as address -> tgt.homeAddress as addr then {
      src -> addr.addressEntry1 = evaluate(address, line[0]) "ea927ea0-93e5-421a-9ac4-baebfdc60aa5";
      src -> addr.addressEntry2 = evaluate(address, line[1]) "f598ba7d-16cc-4828-b6f6-67763ba00c13";
      src -> addr.addressEntry3 = evaluate(address, line[2]) "3ba21f91-72d9-4796-bc72-a85af895a3c4";
      src -> addr.addressEntry4 = evaluate(address, line[3]) "ba7f1aec-482b-4d62-b79b-bbab6631e065";
      src -> addr.postCode = evaluate(address, postalCode) "7131afd6-19d1-4885-8269-ff9aa797ad29";
      address.extension as countryExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-AddressCountry' then {
        src -> addr.country as country then {
          src -> country.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/country' "319f4d41-dfd9-4bca-aa41-9170dda9bedf";
          src -> country.code = evaluate(countryExt, valueCoding.code) "b4cb57f6-61a5-4aa4-bf0a-6fef30a9d70a";
          src -> country.display = evaluate(countryExt, valueCoding.display) "a03430f9-3648-46a4-94e8-29df2ec31351";
        } "010a9a1f-aa2b-48cd-a447-0a34ea40d7ef";
      };
    } "setAddress";
  } "e0998579-28eb-48bb-8b61-85f0f325e01b";
}