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: TaskToTransfer

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Task-Transfer Version: 0.1.0
Draft as of 2026-06-10 Computable Name: TaskToTransfer

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Task-Transfer" = "TaskToTransfer"

uses "http://hl7.org/fhir/StructureDefinition/Task" alias Task as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Transfer" alias Transfer as target

group Transfer(source src : Task, target tgt : Transfer) {
  src -> tgt.id = evaluate(src, id) "335aa944-2966-4cbb-ace2-27a0974da230";
  "setTransferId" "d6f9ef6f-4a74-4dd2-a13c-3f62132ffee5";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Transfer' "1c0a7271-c357-48d1-94dd-f74a6f41eb01";
  } "setDataClassName";
  src -> tgt.requestor as requestor then {
    src -> requestor.organisation as organisation then {
      src.requester as requester then {
        src -> organisation.id = evaluate(requester, identifier.value) "9dd5716f-bc27-45e8-b6d5-6e8e42a634e2";
        src -> organisation.type = 'CareOrganisation' "88b2de08-62b5-4303-8ffa-d73d0246ee39";
        src -> organisation.display = evaluate(requester, display) "c249e7f0-1fee-453f-a866-77e1d4598452";
      };
    } "setRequestorOrganisation";
    src.extension as transferParticipantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-TransferTaskParticipant' then {
      transferParticipantsExt.extension as requestedByParticipantExt where $this.url='transferTaskParticipantRole'and$this.valueCode='requested-by' then {
        transferParticipantsExt.extension as requestorParticipentExt where $this.url='transferTaskParticipant' then {
          requestorParticipentExt.valueReference as requestorReference then {
            src -> requestor.contact as requestedByContact then {
              src -> requestedByContact.id = evaluate(requestorReference, identifier.value) "49b0d9ff-fb40-4fa8-9f2a-0db94ab7d4de";
              src -> requestedByContact.type = 'CareWorker' "8289247a-9a57-4128-a84b-0ab74b18ba18";
              src -> requestedByContact.display = evaluate(requestorReference, display) "9580ff8c-2f1c-4c0e-a2d2-aa61b530d6d0";
            } "d30fb211-6f23-4a3c-b25a-497ec505036a";
          };
        };
      };
    } "setRequestorContact";
  } "setRequestor";
  src -> tgt.fulfiller as fulfiller then {
    src -> fulfiller.organisation as organisation then {
      src.owner as owner then {
        src -> organisation.id = evaluate(owner, identifier.value) "d106ee31-76a8-4c30-9d77-b33466883e51";
        src -> organisation.type = 'CareOrganisation' "a6864fe4-61f1-4ac5-911e-6953db8435df";
        src -> organisation.display = evaluate(owner, display) "b3f5f6a2-43e9-4cc4-8b59-abfc511db4b7";
      };
    } "setFulfillerOrganisation";
    src.extension as transferParticipantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-TransferTaskParticipant' then {
      transferParticipantsExt.extension as fulfilledByParticipantExt where $this.url='transferTaskParticipantRole'and$this.valueCode='fulfilled-by' then {
        transferParticipantsExt.extension as fulfillerParticipentExt where $this.url='transferTaskParticipant' then {
          fulfillerParticipentExt.valueReference as fulfillerReference then {
            src -> fulfiller.contact as fulfilledByContact then {
              src -> fulfilledByContact.id = evaluate(fulfillerReference, identifier.value) "7e7d3f57-6cc8-4072-b6be-58f695efe208";
              src -> fulfilledByContact.type = 'CareWorker' "6dbbdd58-441a-4b55-89cf-051f25afdd94";
              src -> fulfilledByContact.display = evaluate(fulfillerReference, display) "811d7fcf-17b8-4ea3-bbd9-0070b0fff8aa";
            } "ee7f3983-f99f-48e1-9c5c-30b594b58bf4";
          };
        };
      };
    } "setFulfillerContact";
  } "setFulfiller";
  src -> tgt.subject as subject then {
    src.for as patient then {
      src -> subject.name as name then {
        src -> name.given = evaluate(patient, display.split(' ')[0]) "d2928417-6f00-4479-af25-06fab85fd74d";
        src -> name.family = evaluate(patient, display.split(' ')[1]) "aaeca338-cc07-4f4f-a4c9-25ce959f293d";
      } "ad21e89e-7229-47e3-9d64-4a293f116fb7";
      src -> subject.nhsNumber as nhsNumber then {
        patient.identifier as patientNhsNumber then {
          src -> nhsNumber.value = evaluate(patientNhsNumber, value) "3c912d74-138d-4671-8157-ac34d90f5230";
          patientNhsNumber.extension as nhsNumberTraceStatusExt where $this.url='https://fhir.hl7.org.uk/StructureDefinition/Extension-UKCore-NHSNumberVerificationStatus', nhsNumberTraceStatusExt.valueCodeableConcept as traceStatusCodeableConcept, traceStatusCodeableConcept.coding as traceStatusCoding then {
            src -> nhsNumber.statusIndicator as statusIndicator then {
              src -> statusIndicator.code = evaluate(traceStatusCoding, code) "f4ae38cb-c1de-4b77-8b9f-e7be2a183575";
              src -> statusIndicator.display = evaluate(traceStatusCoding, display) "4feb88f8-9488-4813-8dae-f5d1d51b88b8";
            } "82d4539f-4091-4b5f-bd43-8174c489bc81";
          } "extension";
        };
      } "2e5c25f1-10c3-4f00-8ece-909fc3ba2553";
    };
  } "setSubject";
  src.executionPeriod as period then {
    src -> tgt.targetCompletion = evaluate(period, end) "84a326cb-4580-4141-8628-4d08bf0ec7b4";
  } "setTargetCompletionDate";
  src -> tgt.tracking as tracking then {
    src.identifier as requestorTrackingIdentifier where $this.system='https://metadata.phase2.scip.synanetics.cloud/transfer-tracking-id/requestor-tracking-id', requestorTrackingIdentifier.value as requestorTrackingId then {
      src -> tracking.requestorTrackingId = requestorTrackingId "5d50e482-1c06-4042-84ec-cc8c34d9952b";
    } "identifier";
    src.identifier as fulfillerTrackingIdentifier where $this.system='https://metadata.phase2.scip.synanetics.cloud/transfer-tracking-id/fulfiller-tracking-id', fulfillerTrackingIdentifier.value as fulfillerTrackingId then {
      src -> tracking.fulfillerTrackingId = fulfillerTrackingId "b6b491c7-d765-491f-a26e-b90c6c1c77cb";
    } "identifier";
    src -> tracking.progress as progress then {
      src -> progress.status = evaluate(src, status) "00aa50e3-05df-48f4-bf63-e206dc732a73";
      src.lastModified as lastModified then {
        src -> progress.date = lastModified "2f128f84-8925-41f7-850a-faae31eda010";
      };
    } "d6d65cc3-131e-4ed2-a6d8-13c08bcbd48a";
    src.note as notes -> tracking.notes as note then {
      src -> note.date = evaluate(notes, time) "f1afa3f3-13de-4414-9b9b-7615ccd923dd";
      src -> note.text = evaluate(notes, text) "8096b036-8298-4375-87fe-078b796de5be";
    };
  } "setTrackingInformation";
}