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 PaymentReconciliation: R5 to R4B

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

FMLConversionforPaymentReconciliationR5toR4B

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

conceptmap "NoteType" {
  prefix s = "http://hl7.org/fhir/note-type"
  prefix t = "http://hl7.org/fhir/4.3/note-type"

  s:display - t:display
  s:print - t:print
  s:printoper - t:printoper
}

conceptmap "PaymentOutcome" {
  prefix s = "http://hl7.org/fhir/payment-outcome"
  prefix t = "http://hl7.org/fhir/4.3/remittance-outcome"

  s:queued - t:queued
  s:complete - t:complete
  s:error - t:error
  s:partial - t:partial
}

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

  s:active - t:active
  s:cancelled - t:cancelled
  s:draft - t:draft
  s:"entered-in-error" - t:"entered-in-error"
}

uses "http://hl7.org/fhir/StructureDefinition/PaymentReconciliation" alias PaymentReconciliationR5 as source
uses "http://hl7.org/fhir/4.3/StructureDefinition/PaymentReconciliation" alias PaymentReconciliationR4B as target

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

group PaymentReconciliation(source src : PaymentReconciliationR5, target tgt : PaymentReconciliationR4B) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.status as v -> tgt.status = translate(v, '#PaymentReconciliationStatus', 'code'); // src.type -> tgt.type;
  src.period -> tgt.period; // src.kind -> tgt.kind;
  src.created -> tgt.created;
  src.paymentIssuer -> tgt.paymentIssuer; // src.enterer -> tgt.enterer;
  src.request -> tgt.request;
  src.requestor -> tgt.requestor;
  src.outcome as v -> tgt.outcome = translate(v, '#PaymentOutcome', 'code');
  src.disposition -> tgt.disposition;
  src.date -> tgt.paymentDate;
  src.amount -> tgt.paymentAmount; // src.location -> tgt.location;
  src.paymentIdentifier -> tgt.paymentIdentifier;
  src.allocation as s -> tgt.detail as t then PaymentReconciliationAllocation(s, t);
  src.formCode -> tgt.formCode;
  src.processNote as s -> tgt.processNote as t then PaymentReconciliationProcessNote(s, t);
}

group PaymentReconciliationAllocation(source src, target tgt) extends BackboneElement {
  src.identifier -> tgt.identifier;
  src.predecessor -> tgt.predecessor;
  src.type -> tgt.type; // src.target -> tgt.target;
  src.submitter -> tgt.submitter;
  src.response -> tgt.response;
  src.date -> tgt.date;
  src.responsible -> tgt.responsible;
  src.payee -> tgt.payee;
  src.amount -> tgt.amount;
}

group PaymentReconciliationProcessNote(source src, target tgt) extends BackboneElement {
  src.type as v -> tgt.type = translate(v, '#NoteType', 'code');
  src.text -> tgt.text;
}