Home

ISA-to-FHIR Implementation Guide

This is the Implementation Guide of the ISA-to-FHIR project conducted during the NFDI4Health project and led by the Core Facility Digital Medicine and Interoperability - Berlin Institute of Health at Charité - Universitätsmedizin Berlin.

Contact Persons: S. A. I. Klopfenstein, J. Sass, C. N. Vorisek, F. Jorczik, S. Thun, Members of NFDI4Health Task Area 2 "Standards for FAIR data"

The Implementation Guide contains the ISA FHIR LogicalModels including mappings to FHIR.

ISA Model (JSON Specification)

This figure represent the ISA JSON objects and their interconnections. Due to the nested structure and the multiple relationships in ISA, we used colors to represent relations between colored properties and objects. The direction of the relation is from a colored property to the object with the same color. Colors are from the color blindness accessibility color palette by Wong.


ISA FHIR LogicalModels

We created LogicalModels for each ISA JSON object.

A general overview of the ISA-to-FHIR mapping - including comments - can be accessed here: ISA-to-FHIR Mapping

All the mappings are also integrated in the relevant LogicalModels. The following figure demonstrates where to access the mapping in a LogicalModel. When hovering over an element in the LogicalModel, a box on the right side appears containing diverse information, a. o. element ID, its description but also its mapping(s) to other standards (orange box).

Examples Demonstrating Mapping Challenges Due to ISA's Genericity

During our ISA-to-FHIR mapping we encountered several challenges, mainly due to the different structures of both models. Based on three examples from the ISA JSON data published on ISA-tools on Github, we present a mapping of information related to "material characteristics". This information is stored using several objects in ISA. The examples are only JSON snippets.

Example 1

        "otherMaterials": [
            {
                "name": "extract-GSM255772.e2",
                "type": "Extract Name",
                "@id": "#material/extract-GSM255772.e2",
                "characteristics": [
                  {
                    "value": {
                      "annotationValue": "messenger RNA",
                      "termSource": "CHEBI",
                      "termAccession": "http://purl.obolibrary.org/obo/CHEBI_33699"
                    },
                    "category": {
                      "@id": "#characteristic_category/Material_Type"
                    }
                  }
                                    ]
              }                 
                                ]

  • The described material is neither a source nor a sample (described by the object "otherMaterials").
  • The "category" indicates, the type of characteristic; here: "Material_Type -> This equals in FHIR to Specimen.type
  • The value "messenger RNA" would be stored in FHIR as the CodeableConcept.text or CodeableConcept.coding.display associated to Specimen.type
  • termSource and termAccession would be stored in FHIR in the same CodeableConcept, under CodeableConcept.coding.system and CodeableConcept.coding.code

Example 2

                "sources": [
                    {
                        "@id": "#source/source-4BF",
                        "characteristics": [
                            {
                                "category": {
                                    "@id": "#characteristic_category/geographic_location_(latitude)"
                                },
                                "value": {
                                    "annotationValue": 12.65,
                                    "termAccession": "",
                                    "termSource": ""
                                }
                            }
                    }
                                            ]
                            ] 

  • The described material is a source.
  • The "category" indicates, the type of characteristic; here: "geographic_location_(latitude)" -> This would be stored as Specimen.subject.resolve().position.latitude
  • The value "12.65" is stored as the associated decimal.

Example 3

            "name": "source-GSM255770",
            "@id": "#source/source-GSM255770",
            "characteristics": [
              {
                "value": 0.37,
                "unit": {
                  "@id": "#Unit/ug/l"
                },
                "category": {
                  "@id": "#characteristic_category/lutein_concentration"
                }
              }
                                ]

  • The described material is a source.
  • The "category" indicates, the type of characteristic; here: "lutein_concentration" -> This would be stored in FHIR as a CodeableConcept in Observation.code
  • The value and unit map to Observation.valueQuantity.value and Observation.valueQuantity.unit. The concrete system and code of the unit can be stored in Observation.valueQuantity.system and Observation.valueQuantity.code.

Proposed FHIR Resources Network to Represent the ISA Model

Based on our ISA-to-FHIR mapping, we propose a first representation of FHIR using a set of currently 11 resources. The mapping might change after clarification of open questions with the ISA commons group, and analysis of further ISA data.