FHIR Extensions Pack
1.0.0 - Working Copy International flag

This page is part of the FHIR Core Extensions Registry (v1.0.0: Releases) based on FHIR v5.0.0. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

StructureMap: FML Conversion for Citation: R5 to R4B

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

FMLConversionforCitationR5toR4B

/// url = 'http://hl7.org/fhir/StructureMap/Citation5to4B'
/// name = 'Citation5to4B'
/// title = 'FML Conversion for Citation: R5 to R4B'
/// status = 'draft'

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

  s:draft - t:draft
  s:active - t:active
  s:retired - t:retired
  s:unknown - t:unknown
}

uses "http://hl7.org/fhir/StructureDefinition/Citation" alias CitationR5 as source
uses "http://hl7.org/fhir/4.3/StructureDefinition/Citation" alias CitationR4B as target

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

group Citation(source src : CitationR5, target tgt : CitationR4B) extends DomainResource <<type+>> {
  src.url -> tgt.url;
  src.identifier -> tgt.identifier;
  src.version -> tgt.version;
  src.name -> tgt.name; // src.versionAlgorithm : string -> tgt.versionAlgorithm;
  src.title -> tgt.title;
  src.status as v -> tgt.status = translate(v, '#PublicationStatus', 'code');
  src.experimental -> tgt.experimental;
  src.date -> tgt.date;
  src.publisher -> tgt.publisher;
  src.contact -> tgt.contact;
  src.description -> tgt.description;
  src.useContext -> tgt.useContext;
  src.jurisdiction -> tgt.jurisdiction;
  src.purpose -> tgt.purpose;
  src.copyright -> tgt.copyright;
  src.approvalDate -> tgt.approvalDate; // src.copyrightLabel -> tgt.copyrightLabel;
  src.lastReviewDate -> tgt.lastReviewDate;
  src.effectivePeriod -> tgt.effectivePeriod;
  src.author -> tgt.author;
  src.editor -> tgt.editor;
  src.reviewer -> tgt.reviewer;
  src.endorser -> tgt.endorser;
  src.summary as s -> tgt.summary as t then CitationSummary(s, t);
  src.classification as s -> tgt.classification as t then CitationClassification(s, t);
  src.note -> tgt.note;
  src.currentState -> tgt.currentState;
  src.statusDate as s -> tgt.statusDate as t then CitationStatusDate(s, t);
  src.relatedArtifact as s -> tgt.relatesTo as t then {
    s.type as v ->  t.relationshipType = create('CodeableConcept') as t,  t.coding = create('Coding') as tc,  tc.system = 'http://terminology.hl7.org/CodeSystem/artifact-relationship-type',  tc.code = v.value;
    s.classifier -> t.targetClassifier;
    s.resourceReference -> t.target;
  };
  src.citedArtifact as s -> tgt.citedArtifact as t then CitationCitedArtifact(s, t);
}

group CitationSummary(source src, target tgt) extends BackboneElement {
  src.style -> tgt.style;
  src.text -> tgt.text;
}

group CitationClassification(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.classifier -> tgt.classifier;
}

group CitationStatusDate(source src, target tgt) extends BackboneElement {
  src.activity -> tgt.activity;
  src.actual -> tgt.actual;
  src.period -> tgt.period;
}

group CitationCitedArtifact(source src, target tgt) extends BackboneElement {
  src.identifier -> tgt.identifier;
  src.relatedIdentifier -> tgt.relatedIdentifier;
  src.dateAccessed -> tgt.dateAccessed;
  src.version as s -> tgt.version as t then CitationCitedArtifactVersion(s, t);
  src.currentState -> tgt.currentState;
  src.statusDate as s -> tgt.statusDate as t then CitationCitedArtifactStatusDate(s, t);
  src.title as s -> tgt.title as t then CitationCitedArtifactTitle(s, t);
  src.abstract as s -> tgt.abstract as t then CitationCitedArtifactAbstract(s, t);
  src.part as s -> tgt.part as t then CitationCitedArtifactPart(s, t);
  src.relatesTo as s -> tgt.relatesTo as t then CitationCitedArtifactRelatesTo(s, t);
  src.publicationForm as s -> tgt.publicationForm as t then CitationCitedArtifactPublicationForm(s, t);
  src.webLocation as s -> tgt.webLocation as t then CitationCitedArtifactWebLocation(s, t);
  src.classification as s -> tgt.classification as t then CitationCitedArtifactClassification(s, t);
  src.contributorship as s -> tgt.contributorship as t then CitationCitedArtifactContributorship(s, t);
  src.note -> tgt.note;
}

group CitationCitedArtifactVersion(source src, target tgt) extends BackboneElement {
  src.value -> tgt.value;
  src.baseCitation -> tgt.baseCitation;
}

group CitationCitedArtifactStatusDate(source src, target tgt) extends BackboneElement {
  src.activity -> tgt.activity;
  src.actual -> tgt.actual;
  src.period -> tgt.period;
}

group CitationCitedArtifactTitle(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.language -> tgt.language;
  src.text -> tgt.text;
}

group CitationCitedArtifactAbstract(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.language -> tgt.language;
  src.text -> tgt.text;
  src.copyright -> tgt.copyright;
}

group CitationCitedArtifactPart(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.value -> tgt.value;
  src.baseCitation -> tgt.baseCitation;
}

group CitationCitedArtifactRelatesTo(source src, target tgt) extends BackboneElement {
  src.type as v ->  tgt.relationshipType = create('CodeableConcept') as t,  t.coding = create('Coding') as tc,  tc.system = 'http://terminology.hl7.org/CodeSystem/artifact-relationship-type',  tc.code = v.value; // src.type -> tgt.type;
  src.classifier -> tgt.targetClassifier;
  src.resourceReference -> tgt.target;
}

group CitationCitedArtifactPublicationForm(source src, target tgt) extends BackboneElement {
  src.publishedIn as s -> tgt.publishedIn as t then CitationCitedArtifactPublicationFormPublishedIn(s, t);
  src.citedMedium as v ->  tgt.periodicRelease as t,  t.citedMedium = v; // src.citedMedium -> tgt.citedMedium;
  src.volume as v ->  tgt.periodicRelease as t,  t.volume = v;
  src.issue as v ->  tgt.periodicRelease as t,  t.issue = v;
  src.publicationDateText as v ->  tgt.periodicRelease as t,  t.dateOfPublication as td,  td.text = v;
  src.publicationDateSeason as v ->  tgt.periodicRelease as t,  t.dateOfPublication as td,  td.season = v;
  src.articleDate -> tgt.articleDate;
  src.lastRevisionDate -> tgt.lastRevisionDate;
  src.language -> tgt.language;
  src.accessionNumber -> tgt.accessionNumber;
  src.pageString -> tgt.pageString;
  src.firstPage -> tgt.firstPage;
  src.lastPage -> tgt.lastPage;
  src.pageCount -> tgt.pageCount;
  src.copyright -> tgt.copyright;
}

group CitationCitedArtifactPublicationFormPublishedIn(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.identifier -> tgt.identifier;
  src.title -> tgt.title;
  src.publisher -> tgt.publisher;
  src.publisherLocation -> tgt.publisherLocation;
}

group CitationCitedArtifactWebLocation(source src, target tgt) extends BackboneElement {
  src.classifier -> tgt.type;
  src.url -> tgt.url;
}

group CitationCitedArtifactClassification(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.classifier -> tgt.classifier;
}

group CitationCitedArtifactContributorship(source src, target tgt) extends BackboneElement {
  src.complete -> tgt.complete;
  src.entry as s -> tgt.entry as t then CitationCitedArtifactContributorshipEntry(s, t);
  src.summary as s -> tgt.summary as t then CitationCitedArtifactContributorshipSummary(s, t);
}

group CitationCitedArtifactContributorshipEntry(source src, target tgt) extends BackboneElement {
  src.forenameInitials -> tgt.initials; // src.contributor -> tgt.contributor;
  src.contributionType -> tgt.contributionType; // src.affiliation -> tgt.affiliation;
  src.role -> tgt.role;
  src.contributionInstance as s -> tgt.contributionInstance as t then CitationCitedArtifactContributorshipEntryContributionInstance(s, t);
  src.correspondingContact -> tgt.correspondingContact;
  src.rankingOrder -> tgt.listOrder;
}

group CitationCitedArtifactContributorshipEntryContributionInstance(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.time -> tgt.time;
}

group CitationCitedArtifactContributorshipSummary(source src, target tgt) extends BackboneElement {
  src.type -> tgt.type;
  src.style -> tgt.style;
  src.source -> tgt.source;
  src.value -> tgt.value;
}