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-03-24 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) "f33d7a72-af48-4149-a047-ce5c099b7263";
  "setTransferId" "6c29f53b-c9c7-4389-91f7-2becd074c5c7";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Transfer' "f2350ffa-64e9-463f-a11a-bc88575c9d2c";
  } "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) "7fe698c2-c9b6-4e63-b49c-381c671fb7ed";
        src -> organisation.type = 'CareOrganisation' "4c7ba806-0cb8-4a4e-8128-71e386ce8f7d";
        src -> organisation.display = evaluate(requester, display) "66a86472-8fcf-4b40-86c3-1c1ee1610c2c";
      };
    } "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) "a223dfa0-45f9-47bb-b221-06ee0f464f16";
              src -> requestedByContact.type = 'CareWorker' "1ed11879-9f4c-4519-a876-8a221b86a260";
              src -> requestedByContact.display = evaluate(requestorReference, display) "e8faefe8-3b47-47c9-afb3-3a1ae18745e4";
            } "24527dc7-88d3-4733-afde-81eed58bce50";
          };
        };
      };
    } "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) "6f5ab9f9-49c7-4266-b19f-88338cb99b56";
        src -> organisation.type = 'CareOrganisation' "9406e5c5-7067-4568-a668-b081b9cbaa77";
        src -> organisation.display = evaluate(owner, display) "14728991-d095-4322-a09a-a47d75952c6f";
      };
    } "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) "707b4a2d-7110-4974-8874-e1ef1a6b2d48";
              src -> fulfilledByContact.type = 'CareWorker' "5afd91e2-e68f-4696-b777-758274f567dc";
              src -> fulfilledByContact.display = evaluate(fulfillerReference, display) "112651ff-4e91-4361-8627-4ecc9678719d";
            } "87c65109-135e-44a0-8ca2-3f3d6f1a85be";
          };
        };
      };
    } "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]) "a91e9838-2125-451c-af92-01300e7fc63f";
        src -> name.family = evaluate(patient, display.split(' ')[1]) "7f69bfa2-7ad7-4bf4-969f-2320084476f9";
      } "c46cffe5-23b5-4220-897d-547f2a69fcd5";
      src -> subject.nhsNumber as nhsNumber then {
        patient.identifier as patientNhsNumber then {
          src -> nhsNumber.value = evaluate(patientNhsNumber, value) "a40f5515-0343-48e5-bf0d-ebcaf8693c81";
          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) "d87bff6c-e21b-402e-81f9-1d8f76e6a57c";
              src -> statusIndicator.display = evaluate(traceStatusCoding, display) "63cd7af9-1023-46af-9e35-3b3bcae421fc";
            } "2bd45bc3-b30c-4d36-a1a0-8181aa207fb6";
          } "extension";
        };
      } "c8510416-c02a-4c46-a234-e96ffc98839c";
    };
  } "setSubject";
  src.executionPeriod as period then {
    src -> tgt.targetCompletion = evaluate(period, end) "f839a107-b477-4126-b2aa-8c1a3e26173e";
  } "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 "1f2fc416-09a5-4dbe-9ea4-934729de83ba";
    } "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 "c9bc9c5e-860b-4f38-b57e-df699b431750";
    } "identifier";
    src -> tracking.progress as progress then {
      src -> progress.status = evaluate(src, status) "79647b7f-3c0d-4c67-b73e-7205de6268c5";
      src.lastModified as lastModified then {
        src -> progress.date = lastModified "a394c17d-3f9d-4b76-b813-260a1946230b";
      };
    } "5e47a4dd-7946-4786-9b56-e52cbb149d6e";
    src.note as notes -> tracking.notes as note then {
      src -> note.date = evaluate(notes, time) "1d900578-90f1-41a7-a09a-f6c5a86becd6";
      src -> note.text = evaluate(notes, text) "a586d995-cd01-403b-8383-b6904040259e";
    };
  } "setTrackingInformation";
}