001package org.hl7.fhir.r4b.utils;
002
003import org.hl7.fhir.r4b.model.Observation;
004import org.hl7.fhir.r4b.model.ObservationDefinition;
005import org.hl7.fhir.r4b.model.ObservationDefinition.ObservationDataType;
006
007public class ObservationUtilities {
008
009  public static Observation fromDefinition(ObservationDefinition def) {
010    Observation obs = new Observation();
011    obs.setCode(def.getCode());
012    obs.getCategory().addAll(def.getCategory());
013    if (def.hasMethod()) {
014      obs.setMethod(def.getMethod());
015    }
016    if (def.hasPermittedDataType(ObservationDataType.QUANTITY) && def.getQuantitativeDetails().hasUnit() && def.getQuantitativeDetails().getUnit().hasCoding("http://unitsofmeasure.org")) {
017      obs.getValueQuantity().setSystem("http://unitsofmeasure.org").setCode(def.getQuantitativeDetails().getUnit().getCode("http://unitsofmeasure.org"));
018    }
019    // todo: set up reference ranges 
020    return obs;
021  }
022
023}