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-06-10 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) "ece8364b-9be2-4ba8-91df-cb194bfbf6cc";
        src -> organisation.type = 'CareOrganisation' "513a26cf-732c-41ee-8e86-ee86ff362522";
        src -> organisation.display = evaluate(requestorReference, display) "84133958-b998-4b99-9716-374878020108";
      } "parameter";
    } "811c848e-e81c-431d-9a28-66146f7c9422";
    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) "d59019e1-a13a-4e65-9f48-823272917415";
        src -> requestedBy.type = 'CareWorker' "d4260a1b-20ef-4421-b57c-fb9c7c8b3598";
        src -> requestedBy.display = evaluate(requestedByReference, display) "c5458cc3-cfa2-4754-bff9-b1ee371a488f";
      } "parameter";
    } "0c44b8ef-da2f-414b-a285-cc7245051d4a";
  } "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) "9947cb5b-4b0e-48b8-a489-831d857089a4";
        src -> organisation.type = 'CareOrganisation' "4dcafecc-fcb1-42c4-8196-0581208c71c1";
        src -> organisation.display = evaluate(fulfillerReference, display) "bbf1f7f3-1d24-44c9-b04b-a0a7246bf3fb";
      } "parameter";
    } "b7626d5d-e080-4e72-b31f-3c500ea69f09";
    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) "76a39849-46e3-446c-abab-d4f17c1c6132";
        src -> fulfilledBy.type = 'CareWorker' "be598b01-cef7-478d-8aa7-7ccae4282bb1";
        src -> fulfilledBy.display = evaluate(fulfilledByReference, display) "0d6a0346-9c60-4a70-ac27-b6caf25b150d";
      } "40089188-795f-45a8-9121-2f7c830250c4";
    } "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]) "e663c7d4-c3e6-4547-ba91-d28c08d1b44e";
          src -> subjectName.family = evaluate(subjectReference, display.split(' ')[1]) "ae4fe974-ef57-4a5e-9d95-d664fd96bde2";
        } "00499be0-729f-4423-9b0a-b1b9045c4674";
        src -> subject.nhsNumber as nhsNumber then {
          subjectReference.identifier as identifier then {
            src -> nhsNumber.value = evaluate(identifier, value) "a070abe2-9ccf-4240-b45f-96f1a6b15abe";
            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) "f89d3006-e2a7-40c1-89f3-0d50c81f74cd";
                src -> statusIndicator.display = evaluate(traceStatusIndicatorCoding, display) "43c578b4-069e-4226-8972-161525668cdb";
              } "453d58dc-885f-466e-9705-47c09f575be1";
            } "extension";
          };
        } "f34ed54b-faee-4ad5-b0c3-1707312cb532";
      } "8c254c30-720b-4354-b5d2-0c91f99e88eb";
    };
  } "setSubject";
  src.parameter as parametersParameter where $this.name='targetCompletion' then {
    src -> tgt.targetCompletion = evaluate(parametersParameter, valueDate) "b3a0d864-8cf1-48f5-b5fd-e6ce0176a4fe";
  } "setTargetCompletionDate";
  src -> tgt.tracking as tracking then {
    src.parameter as parametersParameter where $this.name='requestorTrackingId' then {
      src -> tracking.requestorTrackingId = evaluate(parametersParameter, valueString) "9e9ea393-cb94-4e27-b974-b8ad5ea15774";
    } "setRequestorTrackingId";
    src.parameter as parametersParameter where $this.name='fulfillerTrackingId' then {
      src -> tracking.fulfillerTrackingId = evaluate(parametersParameter, valueString) "4358068d-6f88-4a36-9268-1fa7234f0f92";
    } "setFulfillerTrackingId";
    src -> tracking.progress as progress then {
      src.parameter as parametersParameter where $this.name='status' then {
        src -> progress.status = evaluate(parametersParameter, valueCode) "e268feef-c15a-434b-b5fc-ca24b597d9c5";
      };
      src.parameter as parametersParameter where $this.name='statusLastUpdated' then {
        src -> progress.date = evaluate(parametersParameter, valueDateTime) "1c576031-c6cb-48a3-8c7c-70f76557d19b";
      };
    } "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) "f8add736-650c-40e3-b41b-faa09b380e18";
      };
      parametersParameter.part as textPart where $this.name='text' then {
        src -> notes.text = evaluate(textPart, valueString) "822f1206-bcf1-473a-aaca-60abae490183";
      };
    } "setNotes";
  } "setTracking";
}