FHIR Extensions Pack
5.1.0 - 5.1.0 (April 2024) International flag

This page is part of the FHIR Core Extensions Registry (v5.1.0: Release 5.1) based on FHIR (HL7® FHIR® Standard) v5.0.0. This is the current published version. For a full list of available versions, see the Directory of published versions

StructureMap: FML Conversion for RequestOrchestration: R5 to R4B

Official URL: http://hl7.org/fhir/StructureMap/RequestOrchestration5to4B Version: 5.1.0
Standards status: Trial-use Maturity Level: 1 Computable Name: RequestOrchestration5to4B

FMLConversionforRequestOrchestrationR5toR4B

/// url = 'http://hl7.org/fhir/StructureMap/RequestOrchestration5to4B'
/// name = 'RequestOrchestration5to4B'
/// title = 'FML Conversion for RequestOrchestration: R5 to R4B'
/// status = 'active'

conceptmap "ActionCardinalityBehavior" {
  prefix s = "http://hl7.org/fhir/action-cardinality-behavior"
  prefix t = "http://hl7.org/fhir/4.3/action-cardinality-behavior"

  s:single - t:single
  s:multiple - t:multiple
}

conceptmap "ActionConditionKind" {
  prefix s = "http://hl7.org/fhir/action-condition-kind"
  prefix t = "http://hl7.org/fhir/4.3/action-condition-kind"

  s:applicability - t:applicability
  s:start - t:start
  s:stop - t:stop
}

conceptmap "ActionGroupingBehavior" {
  prefix s = "http://hl7.org/fhir/action-grouping-behavior"
  prefix t = "http://hl7.org/fhir/4.3/action-grouping-behavior"

  s:"visual-group" - t:"visual-group"
  s:"logical-group" - t:"logical-group"
  s:"sentence-group" - t:"sentence-group"
}

conceptmap "ActionPrecheckBehavior" {
  prefix s = "http://hl7.org/fhir/action-precheck-behavior"
  prefix t = "http://hl7.org/fhir/4.3/action-precheck-behavior"

  s:yes - t:yes
  s:no - t:no
}

conceptmap "ActionRelationshipType" {
  prefix s = "http://hl7.org/fhir/action-relationship-type"
  prefix t = "http://hl7.org/fhir/4.3/action-relationship-type"

  s:before - t:before
  s:"before-start" - t:"before-start"
  s:"before-end" - t:"before-end"
  s:concurrent - t:concurrent
  s:"concurrent-with-start" - t:"concurrent-with-start"
  s:"concurrent-with-end" - t:"concurrent-with-end"
  s:after - t:after
  s:"after-start" - t:"after-start"
  s:"after-end" - t:"after-end"
}

conceptmap "ActionRequiredBehavior" {
  prefix s = "http://hl7.org/fhir/action-required-behavior"
  prefix t = "http://hl7.org/fhir/4.3/action-required-behavior"

  s:must - t:must
  s:could - t:could
  s:"must-unless-documented" - t:"must-unless-documented"
}

conceptmap "ActionSelectionBehavior" {
  prefix s = "http://hl7.org/fhir/action-selection-behavior"
  prefix t = "http://hl7.org/fhir/4.3/action-selection-behavior"

  s:any - t:any
  s:all - t:all
  s:"all-or-none" - t:"all-or-none"
  s:"exactly-one" - t:"exactly-one"
  s:"at-most-one" - t:"at-most-one"
  s:"one-or-more" - t:"one-or-more"
}

conceptmap "RequestIntent" {
  prefix s = "http://hl7.org/fhir/request-intent"
  prefix t = "http://hl7.org/fhir/4.3/request-intent"

  s:proposal - t:proposal
  s:plan - t:plan
  s:directive - t:directive
  s:order - t:order
  s:"original-order" - t:"original-order"
  s:"reflex-order" - t:"reflex-order"
  s:"filler-order" - t:"filler-order"
  s:"instance-order" - t:"instance-order"
  s:option - t:option
}

conceptmap "RequestPriority" {
  prefix s = "http://hl7.org/fhir/request-priority"
  prefix t = "http://hl7.org/fhir/4.3/request-priority"

  s:routine - t:routine
  s:urgent - t:urgent
  s:asap - t:asap
  s:stat - t:stat
}

conceptmap "RequestStatus" {
  prefix s = "http://hl7.org/fhir/request-status"
  prefix t = "http://hl7.org/fhir/4.3/request-status"

  s:draft - t:draft
  s:active - t:active
  s:"on-hold" - t:"on-hold"
  s:revoked - t:revoked
  s:completed - t:completed
  s:"entered-in-error" - t:"entered-in-error"
  s:unknown - t:unknown
}

uses "http://hl7.org/fhir/StructureDefinition/RequestOrchestration" alias RequestOrchestrationR5 as source
uses "http://hl7.org/fhir/4.3/StructureDefinition/RequestGroup" alias RequestGroupR4B as target

imports "http://hl7.org/fhir/StructureMap/*5to4B"

group RequestOrchestration(source src : RequestOrchestrationR5, target tgt : RequestGroupR4B) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.instantiatesCanonical -> tgt.instantiatesCanonical;
  src.instantiatesUri -> tgt.instantiatesUri;
  src.basedOn -> tgt.basedOn;
  src.replaces -> tgt.replaces;
  src.groupIdentifier -> tgt.groupIdentifier;
  src.status as v -> tgt.status = translate(v, '#RequestStatus', 'code');
  src.intent as v -> tgt.intent = translate(v, '#RequestIntent', 'code');
  src.priority as v -> tgt.priority = translate(v, '#RequestPriority', 'code');
  src.code -> tgt.code;
  src.subject -> tgt.subject;
  src.encounter -> tgt.encounter;
  src.authoredOn -> tgt.authoredOn;
  src.author -> tgt.author;
  src.reason -> tgt.reasonCode;
  src.reason -> tgt.reasonReference;
  src.note -> tgt.note; // src.goal -> tgt.goal;
  src.action as s -> tgt.action as t then RequestOrchestrationAction(s, t);
}

group RequestOrchestrationAction(source src, target tgt) extends BackboneElement {
  src.prefix -> tgt.prefix; // src.linkId -> tgt.linkId;
  src.title -> tgt.title;
  src.description -> tgt.description;
  src.textEquivalent -> tgt.textEquivalent;
  src.priority as v -> tgt.priority = translate(v, '#RequestPriority', 'code');
  src.code -> tgt.code;
  src.documentation -> tgt.documentation;
  src.condition as s -> tgt.condition as t then RequestOrchestrationActionCondition(s, t); // src.goal -> tgt.goal;
  src.relatedAction as s -> tgt.relatedAction as t then RequestOrchestrationActionRelatedAction(s, t); // src.input as s -> tgt.input as t then RequestOrchestrationActionInput(s,t);
  src.timing : dateTime -> tgt.timing;
  src.timing : Age -> tgt.timing;
  src.timing : Period -> tgt.timing;
  src.timing : Duration -> tgt.timing;
  src.timing : Range -> tgt.timing;
  src.timing : Timing -> tgt.timing;
  src.participant as s -> tgt.participant = s.actor; // src.location -> tgt.location;
  src.type -> tgt.type;
  src.groupingBehavior as v -> tgt.groupingBehavior = translate(v, '#ActionGroupingBehavior', 'code');
  src.selectionBehavior as v -> tgt.selectionBehavior = translate(v, '#ActionSelectionBehavior', 'code');
  src.requiredBehavior as v -> tgt.requiredBehavior = translate(v, '#ActionRequiredBehavior', 'code');
  src.precheckBehavior as v -> tgt.precheckBehavior = translate(v, '#ActionPrecheckBehavior', 'code');
  src.cardinalityBehavior as v -> tgt.cardinalityBehavior = translate(v, '#ActionCardinalityBehavior', 'code');
  src.resource -> tgt.resource;
}

group RequestOrchestrationActionCondition(source src, target tgt) extends BackboneElement {
  src.kind as v -> tgt.kind = translate(v, '#ActionConditionKind', 'code');
  src.expression -> tgt.expression;
}

// group RequestOrchestrationActionInput(source src, target tgt) extends BackboneElement {
// src.title -> tgt.title;
// src.requirement -> tgt.requirement;
// src.relatedData -> tgt.relatedData;
// }
// group RequestOrchestrationActionOutput(source src, target tgt) extends BackboneElement {
// src.title -> tgt.title;
// src.requirement -> tgt.requirement;
// src.relatedData -> tgt.relatedData;
// }
group RequestOrchestrationActionRelatedAction(source src, target tgt) extends BackboneElement {
  src.targetId -> tgt.actionId;
  src.relationship as v -> tgt.relationship = translate(v, '#ActionRelationshipType', 'code');
  src.offset : Duration -> tgt.offset; // src.endRelationship as v -> tgt.endRelationship = translate(v, '#ActionRelationshipType', 'code');
  src.offset : Range -> tgt.offset;
}