Mapping Editor

Aus CTS2-LE
Zur Navigation springen Zur Suche springen

CTS2-LE provides a web interface that enables a user to create, update or delete a mapping. This section describes both the conceptual background and technical aspects concerning this mapping editor.

FHIR Concept Map

The conceptual background is given by means of the FHIR ConceptMap - which defines a mapping as a "statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models."[1] In order to represent a mapping that is conformant to both the CTS2- and the FHIR specification, a transformation between the given meta-models is necessary. The following table outlines how FHIR ConceptMap elements are represented by CTS2 elements.

FHIR element [datatype] CTS2 mapping Notes
url [uri] MapVersion.aboutUri, MapVersion.alternateAboutUri uniqueness within the server instance in wich the mapping is stored is guaranteed
version [string] MapVersion.versionID
name [string] MapVersion.resourceID uniqueness within the server instance in wich the mapping is stored is guaranteed
status [code] ResourceDescription.status only codes from the FHIR ConformanceResourceStatus value set can be used
description [string] MapVersion.note
sourceUri [uri] MapVersion.source.aboutUri should be equal to element.codeSystem; according to FHIR "Should be a version specific reference. URIs SHOULD be absolute."
targetUri [uri] MapVersion.target.aboutUri should be equal to element.target.codeSystem; according to FHIR "Should be a version specific reference. URIs SHOULD be absolute."
element MapVersion.entry
element.codeSystem [uri] MapVersion.entry.aboutUri should be equal to sourceUri
element.code [code] MapVersion.entry.name
element.target MapVersion.entry.target
element.target.codeSystem [uri] MapVersion.entry.target.aboutUri should be equal to targetUri
element.target.code [code] MapVersion.entry.target.name
element.target.equivalence [code] MapVersion.entry.target.correlation only codes from the FHIR ConceptMapEquivalence value set can be used; acc. to FHIR "The equivalence is read from target to source (e.g. the target is 'wider' than the source)."
element.target.comments MapVersion.entry.target.comments

The following constraints and limitations have been formulated or noticed:

  • There are a couple of FHIR elements that are currently not represented by means of CTS2, among these are
    • identifier
    • experimental
    • publisher
    • contact
    • date
    • useContext
    • requirements
    • copyright
    • dependsOn
    • product
  • Enabling bidirectional mappings on the fly would result in building a new mapping (since source and target resources are switched consequently). This may cause semantic inconsistencies because FHIR does not specify reverse correlations (e.g. reverse(wider) == narrower?). From a technological point of view metadata of the new mapping (identifier, url, name..) would have to be generated automatically and without any authorization.
  • The source and target resource references (sourceUri, targetUri) need to be version specific.
  • [to be discussed] An "active" mapping should not be modified anymore since it may already be in a productive use.
  • [to be discussed] FHIR provides 9 equivalence relations that are arranged in a two-level hierarchy. CTS2 represents these codes in their meta-model which does not consider a hierarchical structure.
  • [to be discussed] Is it correct to automatically map all concepts from a source code system/ value set to unmatched? Acc. to FHIR, unmatched denotes that "there is no match for this concept in the destination concept system". Is this equal to some kind of "unknown"-relation (e.g. to indicate that a concrete mapping relation has not been discussed so far?)


Technical Implementation

The application will be created with AngularJS (version 1.3.15) and UI bootstrap components (0.13.1) written in AngularJS. As of 10.02.16, the mapping editor has not been made available.
Ideas:

  • use drag&drop to allocate source and target mapping entries
  • use URL blocking to prevent unauthorized users from executing create, modify or delete operations.

References