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-06-10 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]) "fcbb409d-21ec-496b-aea5-7358bde14e62";
      src -> name.family = evaluate(humanName, family) "99e9a33d-5dc2-4ad5-9bf2-0a669a2500a2";
    } "setFamilyAndGivenName";
  } "setName";
  src.gender as genderCode then {
    src -> src.genderIdentity = create('Coding') as givt then {
      src -> givt.system = 'http://hl7.org/fhir/administrative-gender' "98fd9b68-935b-44f5-8d24-4b0d5272f4a3";
      src -> givt.code = genderCode "82830d28-4053-45cd-ac5d-f1f5d4e3110a";
      src -> tgt.sex = translate(givt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRBirthSex-1', 'Coding') "de9ffcd4-3fa6-4208-8e22-e5fadeef0ab5";
    } "f41fbaac-b651-4235-89ff-ddf86260b8d1";
  } "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 "10b379ad-ddee-45f1-beec-5ad7e11f2cf8";
      src -> nhsNumber.statusIndicator as statusIndicator then {
        src -> statusIndicator.code = evaluate(nhsNumberTraceStatusExt, valueCodeableConcept.coding[0].code) "f906c0f5-d7ce-46ea-b5e5-9b4ffc57d4dd";
        src -> statusIndicator.display = evaluate(nhsNumberTraceStatusExt, valueCodeableConcept.coding[0].display) "00034db1-5bfc-44eb-a092-7a5be2fe18f9";
      } "dd9e7695-c4df-4d80-a2ee-7d9a08af0fd1";
    } "setNHSNumber";
    src -> tgt.dateOfBirth = evaluate(src, birthDate) "setDateOfBirth";
    src.address as address -> tgt.homeAddress as addr then {
      src -> addr.addressEntry1 = evaluate(address, line[0]) "d42d1e07-79a8-43d9-b389-efb86f1d8025";
      src -> addr.addressEntry2 = evaluate(address, line[1]) "722cbb0f-b508-42da-b16e-091a41bb913d";
      src -> addr.addressEntry3 = evaluate(address, line[2]) "311243b0-203e-4194-b184-2a4dc9278a41";
      src -> addr.addressEntry4 = evaluate(address, line[3]) "5fe54941-5b14-45c5-8290-1479c42485ba";
      src -> addr.postCode = evaluate(address, postalCode) "cdce6a13-470e-4629-9f11-82995e7aadb4";
      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' "f4aca984-380c-4ea1-8764-d07245d1f720";
          src -> country.code = evaluate(countryExt, valueCoding.code) "c264a30b-0b13-4595-83f5-51dfb52437b7";
          src -> country.display = evaluate(countryExt, valueCoding.display) "c3eb1876-0412-403e-bbd0-b3eaa28623d1";
        } "2005bb05-be9c-4516-854c-99effd2b6d53";
      };
    } "setAddress";
  } "2f258739-c027-4d1e-84b9-285ec5b4228d";
}