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

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

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

uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-DSCRTransferParametersIn-1" alias Parameters as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Transfer" alias Transfer as target

group Transfer(source src : Parameters, target tgt : Transfer) {
  src -> tgt.requestor as requestor then {
    src -> requestor.organisation as organisation then {
      src.parameter as parametersParameter where $this.name='requestor', parametersParameter.valueReference as requestorReference then {
        src -> organisation.id = evaluate(requestorReference, identifier.value) "839bbb91-9d99-4dbf-b6e6-02db56945e69";
        src -> organisation.type = 'CareOrganisation' "26438cc8-78d8-4674-86d0-71204369daea";
        src -> organisation.display = evaluate(requestorReference, display) "44dc874f-6df5-4219-be1d-70c016d4caa5";
      } "parameter";
    } "ab9ea402-cbb2-4af8-ad83-7867c7d7d663";
    src -> requestor.contact as requestedBy then {
      src.parameter as parametersParameter where $this.name='requestedBy', parametersParameter.valueReference as requestedByReference then {
        src -> requestedBy.id = evaluate(requestedByReference, identifier.value) "832efc78-6e3f-46e6-ab5c-0970df0c3923";
        src -> requestedBy.type = 'CareWorker' "1d77da5c-8272-4990-819f-d59ad8234efd";
        src -> requestedBy.display = evaluate(requestedByReference, display) "e2e0e40c-e6b5-4076-af2a-ca83fa76f238";
      } "parameter";
    } "4cde108d-7bf2-47b5-90c0-e974065b0b4c";
  } "setRequestor";
  src -> tgt.fulfiller as fulfiller then {
    src -> fulfiller.organisation as organisation then {
      src.parameter as parametersParameter where $this.name='fulfiller', parametersParameter.valueReference as fulfillerReference then {
        src -> organisation.id = evaluate(fulfillerReference, identifier.value) "ee15766f-bf93-4255-b8a6-5757cb4c2e31";
        src -> organisation.type = 'CareOrganisation' "b2cec525-1633-4bf9-98b3-5df93d9ae644";
        src -> organisation.display = evaluate(fulfillerReference, display) "30ba28fd-dc46-49e7-9b95-490c012b048e";
      } "parameter";
    } "6d10ceec-87a8-45a7-a57f-6a668ad89979";
    src.parameter as parametersParameter where $this.name='fulfilledBy', parametersParameter.valueReference as fulfilledByReference then {
      src -> fulfiller.contact as fulfilledBy then {
        src -> fulfilledBy.id = evaluate(fulfilledByReference, identifier.value) "2776e50c-8831-41ef-9dab-ff8d86c972e8";
        src -> fulfilledBy.type = 'CareWorker' "5804896b-0927-41df-8598-485f42e5a08d";
        src -> fulfilledBy.display = evaluate(fulfilledByReference, display) "ed48eff7-8ab7-4fb9-b14c-df52d72bb847";
      } "133ed1ee-2e68-4633-b912-3f32518915f9";
    } "parameter";
  } "setFulfiller";
  src.parameter as parametersParameter where $this.name='subject' then {
    parametersParameter.valueReference as subjectReference then {
      src -> tgt.subject as subject then {
        src -> subject.name as subjectName then {
          src -> subjectName.given = evaluate(subjectReference, display.split(' ')[0]) "af761d9b-55ad-4218-aa23-b2996d998abb";
          src -> subjectName.family = evaluate(subjectReference, display.split(' ')[1]) "dc2cfe3e-c0d2-45c3-ac2a-0e9e61bca29e";
        } "a25be25b-a1cb-4ad9-a126-9c8e187cd36c";
        src -> subject.nhsNumber as nhsNumber then {
          subjectReference.identifier as identifier then {
            src -> nhsNumber.value = evaluate(identifier, value) "638f0180-d015-41c5-bcee-84a05428ccac";
            identifier.extension as traceStatusIndicatorExt where $this.url='https://fhir.hl7.org.uk/StructureDefinition/Extension-UKCore-NHSNumberVerificationStatus', traceStatusIndicatorExt.valueCodeableConcept as traceStatusIndicatorCodeableConcept, traceStatusIndicatorCodeableConcept.coding as traceStatusIndicatorCoding then {
              src -> nhsNumber.statusIndicator as statusIndicator then {
                src -> statusIndicator.code = evaluate(traceStatusIndicatorCoding, code) "1a91e1f1-4674-4a2c-a4fa-6bfb6752a7ba";
                src -> statusIndicator.display = evaluate(traceStatusIndicatorCoding, display) "8e07431b-0e8b-40b8-a633-3809a4d711dc";
              } "f00e8770-03b2-40ef-bbc6-e6556bf7b785";
            } "extension";
          };
        } "a907666c-1327-4032-97b3-4cd0be5b208c";
      } "e5c5b468-0f12-4c79-9f5f-0c6a05f9ec04";
    };
  } "setSubject";
  src.parameter as parametersParameter where $this.name='targetCompletion' then {
    src -> tgt.targetCompletion = evaluate(parametersParameter, valueDate) "d2abdbea-81b2-4a05-b17a-6aa5eda6b947";
  } "setTargetCompletionDate";
  src -> tgt.tracking as tracking then {
    src.parameter as parametersParameter where $this.name='requestorTrackingId' then {
      src -> tracking.requestorTrackingId = evaluate(parametersParameter, valueString) "31f4e231-ed73-4a8b-9d84-35bbc1336a44";
    } "setRequestorTrackingId";
    src.parameter as parametersParameter where $this.name='fulfillerTrackingId' then {
      src -> tracking.fulfillerTrackingId = evaluate(parametersParameter, valueString) "6431551c-aaeb-4d63-8f24-dabd8edc589f";
    } "setFulfillerTrackingId";
    src -> tracking.progress as progress then {
      src.parameter as parametersParameter where $this.name='status' then {
        src -> progress.status = evaluate(parametersParameter, valueCode) "5179430f-1f23-4a49-87aa-1296326430cb";
      };
      src.parameter as parametersParameter where $this.name='statusLastUpdated' then {
        src -> progress.date = evaluate(parametersParameter, valueDateTime) "81c9b703-14b1-4fb7-8ade-3fdcc4bdda73";
      };
    } "setTrackingProgress";
    src.parameter as parametersParameter where $this.name='note' -> tracking.notes as notes then {
      parametersParameter.part as datePart where $this.name='date' then {
        src -> notes.date = evaluate(datePart, valueDateTime) "df1d4e1c-bd72-4dda-b609-2f0c714990ea";
      };
      parametersParameter.part as textPart where $this.name='text' then {
        src -> notes.text = evaluate(textPart, valueString) "2a7dfcce-0d3a-4e4d-b217-aa4c77a4e28d";
      };
    } "setNotes";
  } "setTracking";
}