Release 4

Structured Documents Work GroupMaturity Level: N/AStandards Status: InformativeSecurity Category: Not Classified Compartments: Device, Encounter, Patient, Practitioner, RelatedPerson

R3 : R4 Conversion maps for DocumentManifest.

Functional status for this map: 2 tests of which 2 fail to execute. (see documentation)

map "http://hl7.org/fhir/StructureMap/DocumentManifest3to4" = "R3 to R4 Conversions for DocumentManifest"

uses "http://hl7.org/fhir/3.0/StructureDefinition/DocumentManifest" alias DocumentManifestR3 as source
uses "http://hl7.org/fhir/StructureDefinition/DocumentManifest" alias DocumentManifest as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

group DocumentManifest(source src : DocumentManifestR3, target tgt : DocumentManifest) extends DomainResource <<type+>> {
  src.masterIdentifier -> tgt.masterIdentifier;
  src.identifier -> tgt.identifier;
  src.status -> tgt.status;
  src.type -> tgt.type;
  src.subject -> tgt.subject;
  src.created -> tgt.created;
  src.author as s -> tgt.agent as t then DocumentManifestAgent(s, t);
  src.recipient -> tgt.recipient;
  src.source -> tgt.source;
  src.description -> tgt.description;
  src.content as s -> tgt.content as t then content(s, t);
  src.related as s -> tgt.related as t then DocumentManifestRelated(s, t);
}

group DocumentManifestAgent(source src, target tgt) extends BackboneElement {
  src ->  tgt.type as cc,  cc.coding as c,  c.system = 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType',  c.code = 'AUT' "author";
  src -> tgt.who as vt0 then Reference(src, vt0) "who";
}

group content(source src, target tgt) extends Element {
  src.p : Attachment as s ->  tgt.extension as ext,  ext.url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-DocumentManifest.content.p_Attachment',  ext.value = s;
  src.p : Reference as s then Reference(s, tgt);
}

group DocumentManifestRelated(source src, target tgt) extends BackboneElement {
  src.identifier -> tgt.identifier;
  src.ref -> tgt.ref;
}


map "http://hl7.org/fhir/StructureMap/DocumentManifest4to3" = "R4 to R3 Conversion for DocumentManifest"

uses "http://hl7.org/fhir/StructureDefinition/DocumentManifest" alias DocumentManifest as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/DocumentManifest" alias DocumentManifestR3 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

group DocumentManifest(source src : DocumentManifestR3, target tgt : DocumentManifest) extends DomainResource <<type+>> {
  src.masterIdentifier -> tgt.masterIdentifier;
  src.identifier -> tgt.identifier;
  src.status -> tgt.status;
  src.type -> tgt.type;
  src.subject -> tgt.subject;
  src.created -> tgt.created;
  src.agent as s where type.coding.where((system = 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType') and (code = 'AUT')).exists() -> tgt.author as t then DocumentManifestAgent(s, t);
  src.recipient -> tgt.recipient;
  src.source -> tgt.source;
  src.description -> tgt.description;
  src.content as s -> tgt.content as t then content(s, t);
  src.related as s -> tgt.related as t then DocumentManifestRelated(s, t);
}

group DocumentManifestAgent(source src, target tgt) extends BackboneElement {
  src.who as vs0 then Reference(vs0, tgt);
}

group content(source src, target tgt) extends Element {
  src.extension as s where url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-DocumentManifest.content.p_Attachment' then contentAttachment(s, tgt);
  src where extension.where(url = 'http://hl7.org/fhir/3.0/StructureDefinition/extension-DocumentManifest.content.p_Attachment').empty() -> tgt.p = create('Reference') as p then Reference(src, p) "attachment";
}

group contentAttachment(source src, target tgt) extends Element {
  src.value : Attachment as s -> tgt.p = create('Attachment') as t then Attachment(s, t);
}

group DocumentManifestRelated(source src, target tgt) extends BackboneElement {
  src.identifier -> tgt.identifier;
  src.ref -> tgt.ref;
}


<p>No validation errors - all conversions are clean</p>