Release 4
Patient Care Work GroupMaturity Level: N/AStandards Status: InformativeSecurity Category: Patient Compartments: Patient, Practitioner, RelatedPerson

R3 : R4 Conversion maps for AdverseEvent.

Functional status for this map: 1 test that all execute ok. 1 fail round-trip testing and 1 r3 resources are invalid (0 errors). (see documentation)

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

uses "http://hl7.org/fhir/3.0/StructureDefinition/AdverseEvent" alias AdverseEventR3 as source
uses "http://hl7.org/fhir/StructureDefinition/AdverseEvent" alias AdverseEvent as target

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

group AdverseEvent(source src : AdverseEventR3, target tgt : AdverseEvent) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.actuality -> tgt.actuality;
  src.category as vs ->  tgt.category as vt,  vt.coding as c,  c.system = 'http://terminology.hl7.org/CodeSystem/adverse-event-category',  c.code = vs;
  src.type -> tgt.event;
  src.description as vs where src.type.exists().not() ->  tgt.event as vt,  vt.text = vs;  // use description in leiu of type for event
  src.subject -> tgt.subject;
  src.date -> tgt.date;
  src.detected -> tgt.detected;
  src.recordedDate -> tgt.recordedDate;
  src.resultingCondition -> tgt.resultingCondition;
  src.location -> tgt.location;
  src.seriousness -> tgt.seriousness;
  src.severity -> tgt.severity;
  src.outcome -> tgt.outcome;
  src.recorder -> tgt.recorder;
  src.contributor -> tgt.contributor;
  src.suspectEntity as s -> tgt.suspectEntity as t then AdverseEventSuspectEntity(s, t);
  src.subjectMedicalHistory -> tgt.subjectMedicalHistory;
  src.referenceDocument -> tgt.referenceDocument;
  src.study -> tgt.study;
}

group AdverseEventSuspectEntity(source src, target tgt) extends BackboneElement {
  src.instance -> tgt.instance;
  src.causality as s -> tgt.causality as t then AdverseEventSuspectEntityCausality(s, t);
}

group AdverseEventSuspectEntityCausality(source src, target tgt) extends BackboneElement {
  src.assessment -> tgt.assessment;
  src.productRelatedness -> tgt.productRelatedness;
  src.author -> tgt.author;
  src.method -> tgt.method;
}


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

uses "http://hl7.org/fhir/StructureDefinition/AdverseEvent" alias AdverseEvent as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/AdverseEvent" alias AdverseEventR3 as target

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

group AdverseEvent(source src : AdverseEvent, target tgt : AdverseEventR3) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.actuality -> tgt.actuality;
  src.category as vs then {
    vs.coding as c where system = 'http://terminology.hl7.org/CodeSystem/adverse-event-category' then {
      c.code -> tgt.category;
    };
  };
  src.event -> tgt.type;
  src.subject -> tgt.subject;
  src.date -> tgt.date;
  src.detected -> tgt.detected;
  src.recordedDate -> tgt.recordedDate;
  src.resultingCondition -> tgt.resultingCondition;
  src.location -> tgt.location;
  src.seriousness -> tgt.seriousness;
  src.severity -> tgt.severity;
  src.outcome -> tgt.outcome;
  src.recorder -> tgt.recorder;
  src.contributor -> tgt.contributor;
  src.suspectEntity as s -> tgt.suspectEntity as t then AdverseEventSuspectEntity(s, t);
  src.subjectMedicalHistory -> tgt.subjectMedicalHistory;
  src.referenceDocument -> tgt.referenceDocument;
  src.study -> tgt.study;
}

group AdverseEventSuspectEntity(source src, target tgt) extends BackboneElement {
  src.instance -> tgt.instance;
  src.causality as s -> tgt.causality as t then AdverseEventSuspectEntityCausality(s, t);
}

group AdverseEventSuspectEntityCausality(source src, target tgt) extends BackboneElement {
  src.assessment -> tgt.assessment;
  src.productRelatedness -> tgt.productRelatedness;
  src.author -> tgt.author;
  src.method -> tgt.method;
}


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