You're reading the documentation for a development version. For the latest released version, please have a look at 1.1.1.

Edit mappings

Note

A whole tutorial referenced here is available in the following Postman collection: https://documenter.getpostman.com/view/1515623/2sAYdimoej

Note

If running against a public sandbox.open-fhir.com, don’t forget to include Authorization header of type Basic.

In this step, we’ll be adding mapping of a new data point to the body weight model mapper.

First, we need to get an ID of the body weight model mapper we’ve persisted in the state preparation step.

GET http://localhost:8080/fc
GET http://localhost:8080/fc HTTP/1.1

This will provide you with all available mappings. There should be 4 based on our state preparation. Find the one that handles mapping of the weight Observation (i.e. preprocessor.fhirCondition.criteria=weight).

Adding an Observation.note.text to the mapping

Now that you have a specific model mapper, add this entry under mappings

- name: "comment"
  with:
    fhir: "$resource.note.text"
    openehr: "$archetype/data[at0002]/events[at0003]/data[at0001]/items[at0024]"
    type: "STRING"

This will map from/to Observation.node.text <> body_weight.any_event[n].comment

Final model mapper after editing should look like this:

grammar: FHIRConnect/v0.0.1
type: model
metadata:
  name: "openEHR-EHR-OBSERVATION.body_weight.v2"
  version: 1.0.0
spec:
  system: FHIR
  version: R4
  openEhrConfig:
    archetype: "openEHR-EHR-OBSERVATION.body_weight.v2"
  fhirConfig:
    structureDefinition: http://hl7.org/fhir/StructureDefinition/Observation
preprocessor:
  fhirCondition:
    targetRoot: "$resource"
    targetAttribute: "category.coding.code"
    operator: "one of"
    criteria: "weight"


mappings:
  - name: "weight"
    with:
      fhir: "$resource.value"
      openehr: "$archetype/data[at0002]/events[at0003]/data[at0001]/items[at0004]"
      type: "QUANTITY"
    fhirCondition:
      targetRoot: "$resource"
      targetAttribute: "code.coding.code"
      operator: "one of"
      criteria: "[$loinc.29463-7, $snomed.27113001]"

  - name: "time"
    with:
      fhir: "$resource.effective"
      openehr: "$archetype/data[at0002]/events[at0003]/time"
      type: "DATETIME"
  - name: "comment"
    with:
      fhir: "$resource.note.text"
      openehr: "$archetype/data[at0002]/events[at0003]/data[at0001]/items[at0024]"
      type: "STRING"

Trigger a PUT transaction with the payload above. This will edit the state of the engine.

PUT http://localhost:8080/fc/model/(id obtained from step above)
PUT http://localhost:8080/fc/model/(id) HTTP/1.1
Content-Type: plain/text
Body: <full yaml text above>

Testing a new mapping

With the PUT above, we’ve edited a state of the engine. You can use the same body payload as in the previous step Run mappings to test them out (run /tofhir and /toopenehr).

Apart from what’s been mapped before, you should now also see that Observation.note.text is populated when mapping to FHIR and "growth_chart/body_weight/any_event:2/comment": "body_weightLorem ipsum0" is populated when mapping Observations to openEHR.

Note: this should only be the case for Observations that are coded as body weight, as we’ve only edited that specific mapping.