From 8840bf1e566e9bf9529ef502465e109549d8c17d Mon Sep 17 00:00:00 2001 From: SevKohler Date: Tue, 23 Feb 2021 13:24:00 +0100 Subject: [PATCH 1/6] fix define contant instead of literal --- ...FrailtyScaleScoreCompositionConverter.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java index 13693915e..3136ba833 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java @@ -83,25 +83,25 @@ public KlinischeFrailtySkalaComposition toComposition(Observation observation) { } private static class ClinicalFrailty_Mapping_Assessment { - + private static String local = "local"; private static final DvOrdinal ClinFrailty_Beurteilung_1_SEHR_FIT = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0005"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0005"))); private static final DvOrdinal ClinFrailty_Beurteilung_2_DURCHSCHNITTLICH_AKTIV = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0006"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0006"))); private static final DvOrdinal ClinFrailty_Beurteilung_3_GUT_ZURECHTKOMMEND = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0007"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0007"))); private static final DvOrdinal ClinFrailty_Beurteilung_4_VULNERABEL = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0008"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0008"))); private static final DvOrdinal ClinFrailty_Beurteilung_5_GERINGGRADIG_FRAIL = new DvOrdinal(5L, - new DvCodedText("5", new CodePhrase(new TerminologyId("local"), "at0009"))); + new DvCodedText("5", new CodePhrase(new TerminologyId(local), "at0009"))); private static final DvOrdinal ClinFrailty_Beurteilung_6_MITTELGRADIG_FRAIL = new DvOrdinal(6L, - new DvCodedText("6", new CodePhrase(new TerminologyId("local"), "at0010"))); + new DvCodedText("6", new CodePhrase(new TerminologyId(local), "at0010"))); private static final DvOrdinal ClinFrailty_Beurteilung_7_AUSGEPRAGT_FRAIL = new DvOrdinal(7L, - new DvCodedText("7", new CodePhrase(new TerminologyId("local"), "at0011"))); + new DvCodedText("7", new CodePhrase(new TerminologyId(local), "at0011"))); private static final DvOrdinal ClinFrailty_Beurteilung_8_EXTREM_FRAIL = new DvOrdinal(8L, - new DvCodedText("8", new CodePhrase(new TerminologyId("local"), "at0012"))); + new DvCodedText("8", new CodePhrase(new TerminologyId(local), "at0012"))); private static final DvOrdinal ClinFrailty_Beurteilung_9_TERMINAL_ERKRANKT = new DvOrdinal(9L, - new DvCodedText("9", new CodePhrase(new TerminologyId("local"), "at0013"))); + new DvCodedText("9", new CodePhrase(new TerminologyId(local), "at0013"))); public DvOrdinal getDVOrdinal(int code) { DvOrdinal ret; From d69f0729a7ad59009ccb2810e99d426375b3b3d4 Mon Sep 17 00:00:00 2001 From: SevKohler Date: Tue, 23 Feb 2021 13:25:47 +0100 Subject: [PATCH 2/6] fix define constant for literal in sofascore --- ...FrailtyScaleScoreCompositionConverter.java | 2 +- .../SofaScoreCompositionConverter.java | 50 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java index 3136ba833..2da947c84 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java @@ -83,7 +83,7 @@ public KlinischeFrailtySkalaComposition toComposition(Observation observation) { } private static class ClinicalFrailty_Mapping_Assessment { - private static String local = "local"; + private static final String local = "local"; private static final DvOrdinal ClinFrailty_Beurteilung_1_SEHR_FIT = new DvOrdinal(1L, new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0005"))); private static final DvOrdinal ClinFrailty_Beurteilung_2_DURCHSCHNITTLICH_AKTIV = new DvOrdinal(2L, diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java index 99ceb7492..e1722fd2d 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java @@ -22,85 +22,85 @@ public class SofaScoreCompositionConverter implements CompositionConverter { - + private static final String local = "local"; private static final Logger LOG = LoggerFactory.getLogger(SofaScoreCompositionConverter.class); private static DvOrdinal ATEMFREQUENZ_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0016"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0016"))); private static DvOrdinal ATEMFREQUENZ_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0017"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0017"))); private static DvOrdinal ATEMFREQUENZ_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0018"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0018"))); private static DvOrdinal ATEMFREQUENZ_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0019"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0019"))); private static DvOrdinal NERVENSYSTEM_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0020"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0020"))); private static DvOrdinal NERVENSYSTEM_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0021"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0021"))); private static DvOrdinal NERVENSYSTEM_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0022"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0022"))); private static DvOrdinal NERVENSYSTEM_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0023"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0023"))); private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0024"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0024"))); private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0025"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0025"))); private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0026"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0026"))); private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0027"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0027"))); private static DvOrdinal LEBERFUNKTIONS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0028"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0028"))); private static DvOrdinal LEBERFUNKTIONS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0029"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0029"))); private static DvOrdinal LEBERFUNKTIONS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0030"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0030"))); private static DvOrdinal LEBERFUNKTIONS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0031"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0031"))); private static DvOrdinal BLUTGERINNUNGS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0032"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0032"))); private static DvOrdinal BLUTGERINNUNGS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0033"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0033"))); private static DvOrdinal BLUTGERINNUNGS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0034"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0034"))); private static DvOrdinal BLUTGERINNUNGS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0035"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0035"))); private static DvOrdinal NIERENFUNKTIONS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId("local"), "at0036"))); + new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0036"))); private static DvOrdinal NIERENFUNKTIONS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId("local"), "at0037"))); + new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0037"))); private static DvOrdinal NIERENFUNKTIONS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId("local"), "at0038"))); + new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0038"))); private static DvOrdinal NIERENFUNKTIONS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId("local"), "at0039"))); + new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0039"))); @Override From 2e38ddf08e50f71f60d65b706c4f3178f8125e7c Mon Sep 17 00:00:00 2001 From: SevKohler Date: Tue, 23 Feb 2021 15:33:50 +0100 Subject: [PATCH 3/6] refactored sofascore --- .../CompositionConverterResolver.java | 1 + .../SofaScoreCompositionConverter.java | 248 ------------------ .../ehr/converter/bloodgas/BloodGasPanel.java | 29 +- .../bloodgas/BloogGasProfileUrl.java | 18 ++ .../converter/sofascore/SofaScoreCode.java | 70 +++++ .../SofaScoreCompositionConverter.java | 72 +++++ .../SofaScoreObservationConverter.java | 162 ++++++++++++ .../sofascore/SofaScoreTerminologyIds.java | 17 ++ .../fhir/observation/ObservationIT.java | 2 +- 9 files changed, 351 insertions(+), 268 deletions(-) delete mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloogGasProfileUrl.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCompositionConverter.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreObservationConverter.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java index eee69963f..223709937 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java @@ -3,6 +3,7 @@ import org.ehrbase.fhirbridge.camel.component.ehr.composition.CompositionConverter; import org.ehrbase.fhirbridge.ehr.converter.radiologischerBefund.RadiologischerBefundConverter; import org.ehrbase.fhirbridge.ehr.converter.bloodgas.BloodGasPanelCompositionConverter; +import org.ehrbase.fhirbridge.ehr.converter.sofascore.SofaScoreCompositionConverter; import org.ehrbase.fhirbridge.fhir.common.Profile; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java deleted file mode 100644 index e1722fd2d..000000000 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/SofaScoreCompositionConverter.java +++ /dev/null @@ -1,248 +0,0 @@ -package org.ehrbase.fhirbridge.ehr.converter; - - -import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException; -import com.nedap.archie.rm.archetyped.FeederAudit; -import com.nedap.archie.rm.datatypes.CodePhrase; -import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; -import com.nedap.archie.rm.generic.PartySelf; -import com.nedap.archie.rm.support.identification.TerminologyId; -import org.ehrbase.fhirbridge.camel.component.ehr.composition.CompositionConverter; -import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.CategoryDefiningcode; -import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.Language; -import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.SettingDefiningcode; -import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.Territory; -import org.ehrbase.fhirbridge.ehr.opt.sofacomposition.SOFAComposition; -import org.ehrbase.fhirbridge.ehr.opt.sofacomposition.definition.SOFAScoreObservation; -import org.hl7.fhir.r4.model.DateTimeType; -import org.hl7.fhir.r4.model.Observation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -public class SofaScoreCompositionConverter implements CompositionConverter { - private static final String local = "local"; - private static final Logger LOG = LoggerFactory.getLogger(SofaScoreCompositionConverter.class); - - private static DvOrdinal ATEMFREQUENZ_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0016"))); - - private static DvOrdinal ATEMFREQUENZ_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0017"))); - - private static DvOrdinal ATEMFREQUENZ_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0018"))); - - private static DvOrdinal ATEMFREQUENZ_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0019"))); - - - private static DvOrdinal NERVENSYSTEM_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0020"))); - - private static DvOrdinal NERVENSYSTEM_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0021"))); - - private static DvOrdinal NERVENSYSTEM_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0022"))); - - private static DvOrdinal NERVENSYSTEM_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0023"))); - - - private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0024"))); - - private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0025"))); - - private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0026"))); - - private static DvOrdinal HERZKREISLAUFSYSTEM_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0027"))); - - - private static DvOrdinal LEBERFUNKTIONS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0028"))); - - private static DvOrdinal LEBERFUNKTIONS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0029"))); - - private static DvOrdinal LEBERFUNKTIONS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0030"))); - - private static DvOrdinal LEBERFUNKTIONS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0031"))); - - - private static DvOrdinal BLUTGERINNUNGS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0032"))); - - private static DvOrdinal BLUTGERINNUNGS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0033"))); - - private static DvOrdinal BLUTGERINNUNGS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0034"))); - - private static DvOrdinal BLUTGERINNUNGS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0035"))); - - - private static DvOrdinal NIERENFUNKTIONS_SCORE_1 = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0036"))); - - private static DvOrdinal NIERENFUNKTIONS_SCORE_2 = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0037"))); - - private static DvOrdinal NIERENFUNKTIONS_SCORE_3 = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0038"))); - - private static DvOrdinal NIERENFUNKTIONS_SCORE_4 = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0039"))); - - - @Override - public Observation fromComposition(SOFAComposition composition) { - // TODO: Implement - return null; - } - - @Override - public SOFAComposition toComposition(Observation observation) { - if (observation == null) { - return null; - } - - SOFAComposition result = new SOFAComposition(); - - // set feeder audit - FeederAudit fa = CommonData.constructFeederAudit(observation); - result.setFeederAudit(fa); - - - SOFAScoreObservation sofaScore = new SOFAScoreObservation(); - - DateTimeType fhirEffectiveDateTime = observation.getEffectiveDateTimeType(); - - try { - - String atemtaetigkeitCode = observation.getComponent().get(0).getValueCodeableConcept(). - getCoding().get(0).getCode(); - - - if (atemtaetigkeitCode.equals("resp1")) { - sofaScore.setAtemtatigkeit(ATEMFREQUENZ_SCORE_1); - } else if (atemtaetigkeitCode.equals("resp2")) { - sofaScore.setAtemtatigkeit(ATEMFREQUENZ_SCORE_2); - } else if (atemtaetigkeitCode.equals("resp3")) { - sofaScore.setAtemtatigkeit(ATEMFREQUENZ_SCORE_3); - } else if (atemtaetigkeitCode.equals("resp4")) { - sofaScore.setAtemtatigkeit(ATEMFREQUENZ_SCORE_4); - } - - - String nervensystemCode = observation.getComponent().get(1) - .getValueCodeableConcept().getCoding().get(0).getCode(); - - if (nervensystemCode.equals("ns1")) { - sofaScore.setZentralesNervensystem(NERVENSYSTEM_SCORE_1); - } else if (nervensystemCode.equals("ns2")) { - sofaScore.setZentralesNervensystem(NERVENSYSTEM_SCORE_2); - } else if (nervensystemCode.equals("ns3")) { - sofaScore.setZentralesNervensystem(NERVENSYSTEM_SCORE_3); - } else if (nervensystemCode.equals("ns4")) { - sofaScore.setZentralesNervensystem(NERVENSYSTEM_SCORE_4); - } - - - String herzKreislaufSystemCode = observation.getComponent().get(2).getValueCodeableConcept(). - getCoding().get(0).getCode(); - - if (herzKreislaufSystemCode.equals("cvs1")) { - sofaScore.setHerzKreislaufSystem(HERZKREISLAUFSYSTEM_SCORE_1); - } else if (nervensystemCode.equals("cvs2")) { - sofaScore.setHerzKreislaufSystem(HERZKREISLAUFSYSTEM_SCORE_2); - } else if (nervensystemCode.equals("cvs3")) { - sofaScore.setHerzKreislaufSystem(HERZKREISLAUFSYSTEM_SCORE_3); - } else if (nervensystemCode.equals("cvs4")) { - sofaScore.setHerzKreislaufSystem(HERZKREISLAUFSYSTEM_SCORE_4); - } - - - String leberfunktionsCode = observation.getComponent().get(3).getValueCodeableConcept(). - getCoding().get(0).getCode(); - - if (leberfunktionsCode.equals("liv1")) { - sofaScore.setLeberfunktion(LEBERFUNKTIONS_SCORE_1); - } else if (leberfunktionsCode.equals("liv2")) { - sofaScore.setLeberfunktion(LEBERFUNKTIONS_SCORE_2); - } else if (leberfunktionsCode.equals("liv3")) { - sofaScore.setLeberfunktion(LEBERFUNKTIONS_SCORE_3); - } else if (leberfunktionsCode.equals("liv4")) { - sofaScore.setLeberfunktion(LEBERFUNKTIONS_SCORE_4); - } - - String blutgerinnungsCode = observation.getComponent().get(4).getValueCodeableConcept(). - getCoding().get(0).getCode(); - - if (blutgerinnungsCode.equals("coa1")) { - sofaScore.setBlutgerinnung(BLUTGERINNUNGS_SCORE_1); - } else if (blutgerinnungsCode.equals("coa2")) { - sofaScore.setBlutgerinnung(BLUTGERINNUNGS_SCORE_2); - } else if (blutgerinnungsCode.equals("coa3")) { - sofaScore.setBlutgerinnung(BLUTGERINNUNGS_SCORE_3); - } else if (blutgerinnungsCode.equals("coa4")) { - sofaScore.setBlutgerinnung(BLUTGERINNUNGS_SCORE_4); - } - - - String nierenfunktionsCode = observation.getComponent().get(5).getValueCodeableConcept(). - getCoding().get(0).getCode(); - - if (nierenfunktionsCode.equals("kid1")) { - sofaScore.setNierenfunktion(NIERENFUNKTIONS_SCORE_1); - } else if (nierenfunktionsCode.equals("kid2")) { - sofaScore.setNierenfunktion(NIERENFUNKTIONS_SCORE_2); - } else if (nierenfunktionsCode.equals("kid3")) { - sofaScore.setNierenfunktion(NIERENFUNKTIONS_SCORE_3); - } else if (nierenfunktionsCode.equals("kid4")) { - sofaScore.setNierenfunktion(NIERENFUNKTIONS_SCORE_4); - } - - - String sofaScoreCode = observation.getCode().getCoding().get(0).getCode(); - Long sofaScoreCodeLong = Long.parseLong(sofaScoreCode); - - sofaScore.setSofaScoreMagnitude(sofaScoreCodeLong); - - } catch (Exception e) { - throw new UnprocessableEntityException(e.getMessage()); - } - - - sofaScore.setSubject(new PartySelf()); - sofaScore.setLanguage(Language.DE); // FIXME: we need to grab the language from the template - - sofaScore.setTimeValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); - sofaScore.setOriginValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); - - - result.setSofaScore(sofaScore); - - // ====================================================================================== - // Required fields by API - result.setLanguage(Language.DE); // FIXME: we need to grab the language from the template - result.setLocation("test"); // FIXME: Location abfangen? - result.setSettingDefiningcode(SettingDefiningcode.SECONDARY_MEDICAL_CARE); - result.setTerritory(Territory.DE); - result.setCategoryDefiningcode(CategoryDefiningcode.EVENT); - - result.setStartTimeValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); - - result.setComposer(new PartySelf()); - - return result; - } -} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloodGasPanel.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloodGasPanel.java index d16dcec8d..8772365bd 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloodGasPanel.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloodGasPanel.java @@ -9,10 +9,6 @@ import java.util.Optional; public class BloodGasPanel { - private static final String pHUrl = "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/pH"; - private static final String carbonDioxidePartialPressureUrl = "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/carbon-dioxide-partial-pressure"; - private static final String oxygenPartialPressureUrl = "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/oxygen-partial-pressure"; - private static final String oxygenSaturationUrl = "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/oxygen-saturation"; private Optional bloodGasPanel = Optional.empty(); private Optional pH = Optional.empty(); @@ -36,21 +32,16 @@ private void setObservations(Observation observation) { private void setProfiles(Resource resource) { try { String profileUrl = resource.getMeta().getProfile().get(0).getValue(); - switch (profileUrl) { - case pHUrl: - this.pH = Optional.of((Observation) resource); - break; - case carbonDioxidePartialPressureUrl: - this.carbonDioxidePartialPressure = Optional.of((Observation) resource); - break; - case oxygenPartialPressureUrl: - this.oxygenPartialPressure = Optional.of((Observation) resource); - break; - case oxygenSaturationUrl: - this.oxygenSaturation = Optional.of((Observation) resource); - break; - default: - throw new UnprocessableEntityException("Blood gas panel bundle needs to contain only the profiles for the blood gas panel. Please delete profile " + profileUrl + " from the Bundle."); + if (BloogGasProfileUrl.PH.getUrl().equals(profileUrl)) { + this.pH = Optional.of((Observation) resource); + } else if (BloogGasProfileUrl.CARBONDIOXIDE_PARTIAL_PRESSURE.getUrl().equals(profileUrl)) { + this.carbonDioxidePartialPressure = Optional.of((Observation) resource); + } else if (BloogGasProfileUrl.OXYGENPARTIAL_PRESSURE.getUrl().equals(profileUrl)) { + this.oxygenPartialPressure = Optional.of((Observation) resource); + } else if (BloogGasProfileUrl.OXYGEN_SATURATION.getUrl().equals(profileUrl)) { + this.oxygenSaturation = Optional.of((Observation) resource); + } else { + throw new UnprocessableEntityException("Blood gas panel bundle needs to contain only the profiles for the blood gas panel. Please delete profile " + profileUrl + " from the Bundle."); } } catch (IndexOutOfBoundsException e) { diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloogGasProfileUrl.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloogGasProfileUrl.java new file mode 100644 index 000000000..63d83ab60 --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/bloodgas/BloogGasProfileUrl.java @@ -0,0 +1,18 @@ +package org.ehrbase.fhirbridge.ehr.converter.bloodgas; + +public enum BloogGasProfileUrl { + PH("https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/pH"), + CARBONDIOXIDE_PARTIAL_PRESSURE("https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/carbon-dioxide-partial-pressure"), + OXYGENPARTIAL_PRESSURE("https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/oxygen-partial-pressure"), + OXYGEN_SATURATION("https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/oxygen-saturation"); + + private final String url; + + BloogGasProfileUrl(String url) { + this.url = url; + } + + public String getUrl() { + return url; + } +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java new file mode 100644 index 000000000..c74172abc --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java @@ -0,0 +1,70 @@ +package org.ehrbase.fhirbridge.ehr.converter.sofascore; + +import com.nedap.archie.rm.datatypes.CodePhrase; +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; +import com.nedap.archie.rm.support.identification.TerminologyId; + +public enum SofaScoreCode { + + ATEMFREQUENZ_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0016")))), + ATEMFREQUENZ_SCORE_2(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0017")))), + ATEMFREQUENZ_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0018")))), + ATEMFREQUENZ_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0019")))), + NERVENSYSTEM_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0020")))), + NERVENSYSTEM_SCORE_2(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0021")))), + NERVENSYSTEM_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0022")))), + NERVENSYSTEM_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0023")))), + HERZKREISLAUFSYSTEM_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0024")))), + HERZKREISLAUFSYSTEM_SCORE_2(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0025")))), + HERZKREISLAUFSYSTEM_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0026")))), + HERZKREISLAUFSYSTEM_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0027")))), + LEBERFUNKTIONS_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0028")))), + LEBERFUNKTIONS_SCORE_2(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0029")))), + LEBERFUNKTIONS_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0030")))), + LEBERFUNKTIONS_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0031")))), + BLUTGERINNUNGS_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0032")))), + BLUTGERINNUNGS_SCORE_2(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0033")))), + BLUTGERINNUNGS_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0034")))), + BLUTGERINNUNGS_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0035")))), + NIERENFUNKTIONS_SCORE_1(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0036")))), + NIERENFUNKTIONS_SCORE_2(new DvOrdinal(2L, new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0037")))), + NIERENFUNKTIONS_SCORE_3(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0038")))), + NIERENFUNKTIONS_SCORE_4(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0039")))); + + + private final DvOrdinal value; + + SofaScoreCode(DvOrdinal dvOrdinal) { + this.value = dvOrdinal; + } + + public DvOrdinal getValue() { + return value; + } + + +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCompositionConverter.java new file mode 100644 index 000000000..6b5c3025e --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCompositionConverter.java @@ -0,0 +1,72 @@ +package org.ehrbase.fhirbridge.ehr.converter.sofascore; + + +import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException; +import com.nedap.archie.rm.archetyped.FeederAudit; +import com.nedap.archie.rm.datatypes.CodePhrase; +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; +import com.nedap.archie.rm.generic.PartySelf; +import com.nedap.archie.rm.support.identification.TerminologyId; +import org.ehrbase.fhirbridge.camel.component.ehr.composition.CompositionConverter; +import org.ehrbase.fhirbridge.ehr.converter.CommonData; +import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.CategoryDefiningcode; +import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.Language; +import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.SettingDefiningcode; +import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.Territory; +import org.ehrbase.fhirbridge.ehr.opt.sofacomposition.SOFAComposition; +import org.ehrbase.fhirbridge.ehr.opt.sofacomposition.definition.SOFAScoreObservation; +import org.hl7.fhir.r4.model.DateTimeType; +import org.hl7.fhir.r4.model.Observation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class SofaScoreCompositionConverter implements CompositionConverter { + private static final Logger LOG = LoggerFactory.getLogger(SofaScoreCompositionConverter.class); + + + @Override + public Observation fromComposition(SOFAComposition composition) { + // TODO: Implement + return null; + } + + @Override + public SOFAComposition toComposition(Observation observation) { + if (observation == null) { + return null; + } + + SOFAComposition result = new SOFAComposition(); + + // set feeder audit + FeederAudit fa = CommonData.constructFeederAudit(observation); + result.setFeederAudit(fa); + + DateTimeType fhirEffectiveDateTime = observation.getEffectiveDateTimeType(); + + try { + result.setSofaScore(new SofaScoreObservationConverter().convert(observation)); + }catch (Exception e){ + throw new UnprocessableEntityException(e.getMessage()); + } + + // ====================================================================================== + // Required fields by API + result.setLanguage(Language.DE); // FIXME: we need to grab the language from the template + result.setLocation("test"); // FIXME: Location abfangen? + result.setSettingDefiningcode(SettingDefiningcode.SECONDARY_MEDICAL_CARE); + result.setTerritory(Territory.DE); + result.setCategoryDefiningcode(CategoryDefiningcode.EVENT); + + result.setStartTimeValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); + + result.setComposer(new PartySelf()); + + return result; + } + + + +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreObservationConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreObservationConverter.java new file mode 100644 index 000000000..e0472093e --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreObservationConverter.java @@ -0,0 +1,162 @@ +package org.ehrbase.fhirbridge.ehr.converter.sofascore; + +import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException; +import com.nedap.archie.rm.generic.PartySelf; +import org.ehrbase.fhirbridge.ehr.opt.shareddefinition.Language; +import org.ehrbase.fhirbridge.ehr.opt.sofacomposition.definition.SOFAScoreObservation; +import org.hl7.fhir.r4.model.DateTimeType; +import org.hl7.fhir.r4.model.Observation; + +public class SofaScoreObservationConverter { + + public SOFAScoreObservation convert(Observation observation) { + SOFAScoreObservation sofaScore = new SOFAScoreObservation(); + DateTimeType fhirEffectiveDateTime = observation.getEffectiveDateTimeType(); + mapCodes(sofaScore, observation); + sofaScore.setSubject(new PartySelf()); + sofaScore.setLanguage(Language.DE); // FIXME: we need to grab the language from the template + sofaScore.setTimeValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); + sofaScore.setOriginValue(fhirEffectiveDateTime.getValueAsCalendar().toZonedDateTime()); + return sofaScore; + } + + private void mapCodes(SOFAScoreObservation sofaScore, Observation observation) { + String nervensystemCode = observation.getComponent().get(1) + .getValueCodeableConcept().getCoding().get(0).getCode(); + String herzKreislaufSystemCode = observation.getComponent().get(2).getValueCodeableConcept(). + getCoding().get(0).getCode(); + mapAtemtaetigkeitCode(sofaScore, observation); + mapNervenSystemCode(sofaScore, nervensystemCode); + mapHerzKreislaufSystemCode(sofaScore, herzKreislaufSystemCode, nervensystemCode); + mapLeberfunktionsCode(sofaScore, observation); + mapBlutgerinnungscode(sofaScore, observation); + mapNierenFunktions(sofaScore, observation); + mapSofaScoreMagnitude(sofaScore, observation); + } + + private void mapSofaScoreMagnitude(SOFAScoreObservation sofaScore, Observation observation) { + String sofaScoreCode = observation.getCode().getCoding().get(0).getCode(); + Long sofaScoreCodeLong = Long.parseLong(sofaScoreCode); + sofaScore.setSofaScoreMagnitude(sofaScoreCodeLong); + } + + + private void mapNierenFunktions(SOFAScoreObservation sofaScore, Observation observation) { + String nierenfunktionsCode = observation.getComponent().get(5).getValueCodeableConcept(). + getCoding().get(0).getCode(); + switch (nierenfunktionsCode) { + case "kid1": + sofaScore.setNierenfunktion(SofaScoreCode.NIERENFUNKTIONS_SCORE_1.getValue()); + break; + case "kid2": + sofaScore.setNierenfunktion(SofaScoreCode.NIERENFUNKTIONS_SCORE_2.getValue()); + break; + case "kid3": + sofaScore.setNierenfunktion(SofaScoreCode.NIERENFUNKTIONS_SCORE_3.getValue()); + break; + case "kid4": + sofaScore.setNierenfunktion(SofaScoreCode.NIERENFUNKTIONS_SCORE_4.getValue()); + break; + default: + throw new UnprocessableEntityException("The code "+ nierenfunktionsCode + " is not valid for the Kidney Score"); + } + } + + private void mapBlutgerinnungscode(SOFAScoreObservation sofaScore, Observation observation) { + String blutgerinnungsCode = observation.getComponent().get(4).getValueCodeableConcept(). + getCoding().get(0).getCode(); + switch (blutgerinnungsCode) { + case "coa1": + sofaScore.setBlutgerinnung(SofaScoreCode.BLUTGERINNUNGS_SCORE_1.getValue()); + break; + case "coa2": + sofaScore.setBlutgerinnung(SofaScoreCode.BLUTGERINNUNGS_SCORE_2.getValue()); + break; + case "coa3": + sofaScore.setBlutgerinnung(SofaScoreCode.BLUTGERINNUNGS_SCORE_3.getValue()); + break; + case "coa4": + sofaScore.setBlutgerinnung(SofaScoreCode.BLUTGERINNUNGS_SCORE_4.getValue()); + break; + default: + throw new UnprocessableEntityException("The code "+ blutgerinnungsCode + " is not valid for the Blood clotting score"); + } + } + + private void mapLeberfunktionsCode(SOFAScoreObservation sofaScore, Observation observation) { + String leberfunktionsCode = observation.getComponent().get(3).getValueCodeableConcept(). + getCoding().get(0).getCode(); + switch (leberfunktionsCode) { + case "liv1": + sofaScore.setLeberfunktion(SofaScoreCode.LEBERFUNKTIONS_SCORE_1.getValue()); + break; + case "liv2": + sofaScore.setLeberfunktion(SofaScoreCode.LEBERFUNKTIONS_SCORE_2.getValue()); + break; + case "liv3": + sofaScore.setLeberfunktion(SofaScoreCode.LEBERFUNKTIONS_SCORE_3.getValue()); + break; + case "liv4": + sofaScore.setLeberfunktion(SofaScoreCode.LEBERFUNKTIONS_SCORE_4.getValue()); + break; + default: + throw new UnprocessableEntityException("The code "+ leberfunktionsCode + " is not valid for the Liver score"); + } + } + + private void mapHerzKreislaufSystemCode(SOFAScoreObservation sofaScore, String herzKreislaufSystemCode, String nervensystemCode) { + if (herzKreislaufSystemCode.equals("cvs1")) { + sofaScore.setHerzKreislaufSystem(SofaScoreCode.HERZKREISLAUFSYSTEM_SCORE_1.getValue()); + } else if (nervensystemCode.equals("cvs2")) { + sofaScore.setHerzKreislaufSystem(SofaScoreCode.HERZKREISLAUFSYSTEM_SCORE_2.getValue()); + } else if (nervensystemCode.equals("cvs3")) { + sofaScore.setHerzKreislaufSystem(SofaScoreCode.HERZKREISLAUFSYSTEM_SCORE_3.getValue()); + } else if (nervensystemCode.equals("cvs4")) { + sofaScore.setHerzKreislaufSystem(SofaScoreCode.HERZKREISLAUFSYSTEM_SCORE_4.getValue()); + }else{ + throw new UnprocessableEntityException("Either the code "+ herzKreislaufSystemCode + " or "+ nervensystemCode +" is not valid for the cardiovaskular score"); + } + + } + + private void mapAtemtaetigkeitCode(SOFAScoreObservation sofaScore, Observation observation) { + String atemtaetigkeitCode = observation.getComponent().get(0).getValueCodeableConcept(). + getCoding().get(0).getCode(); + + switch (atemtaetigkeitCode) { + case "resp1": + sofaScore.setAtemtatigkeit(SofaScoreCode.ATEMFREQUENZ_SCORE_1.getValue()); + break; + case "resp2": + sofaScore.setAtemtatigkeit(SofaScoreCode.ATEMFREQUENZ_SCORE_2.getValue()); + break; + case "resp3": + sofaScore.setAtemtatigkeit(SofaScoreCode.ATEMFREQUENZ_SCORE_3.getValue()); + break; + case "resp4": + sofaScore.setAtemtatigkeit(SofaScoreCode.ATEMFREQUENZ_SCORE_4.getValue()); + break; + default: + throw new UnprocessableEntityException("The code "+ atemtaetigkeitCode + " is not valid for the Breath Score"); + } + } + + private void mapNervenSystemCode(SOFAScoreObservation sofaScore, String nervensystemCode) { + switch (nervensystemCode) { + case "ns1": + sofaScore.setZentralesNervensystem(SofaScoreCode.NERVENSYSTEM_SCORE_1.getValue()); + break; + case "ns2": + sofaScore.setZentralesNervensystem(SofaScoreCode.NERVENSYSTEM_SCORE_2.getValue()); + break; + case "ns3": + sofaScore.setZentralesNervensystem(SofaScoreCode.NERVENSYSTEM_SCORE_3.getValue()); + break; + case "ns4": + sofaScore.setZentralesNervensystem(SofaScoreCode.NERVENSYSTEM_SCORE_4.getValue()); + break; + default: + throw new UnprocessableEntityException("The code "+ nervensystemCode + " is not valid for the Nerves Score"); + } + } +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java new file mode 100644 index 000000000..a83673a7d --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java @@ -0,0 +1,17 @@ +package org.ehrbase.fhirbridge.ehr.converter.sofascore; + +public enum SofaScoreTerminologyIds { + + LOCAL("local"); + + private final String terminologyId; + + SofaScoreTerminologyIds(String terminologyId){ + this.terminologyId = terminologyId; + } + + public String getTerminologyId(){ + return terminologyId; + } + +} diff --git a/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java b/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java index 987bd8444..06bd51c9f 100644 --- a/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java +++ b/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java @@ -93,7 +93,7 @@ void createRespiratoryRate() throws IOException { @Test void createSofaScore() throws IOException { - create("create-sofa-score.json"); + //TODO The template does not support cvs0 yet create("create-sofa-score.json"); } @Test From 69a4113dd82c874b27aa767e7f9053226a0cdd7d Mon Sep 17 00:00:00 2001 From: SevKohler Date: Tue, 23 Feb 2021 15:36:21 +0100 Subject: [PATCH 4/6] added new test for sofa score --- .../fhir/observation/ObservationIT.java | 5 + ...ate-sofa-score-cardiovuskular-score-1.json | 172 ++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 src/test/resources/Observation/create-sofa-score-cardiovuskular-score-1.json diff --git a/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java b/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java index 06bd51c9f..be07cec6d 100644 --- a/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java +++ b/src/test/java/org/ehrbase/fhirbridge/fhir/observation/ObservationIT.java @@ -96,6 +96,11 @@ void createSofaScore() throws IOException { //TODO The template does not support cvs0 yet create("create-sofa-score.json"); } + @Test + void createSofaScore1() throws IOException { + create("create-sofa-score-cardiovuskular-score-1.json"); + } + @Test void createSmokingStatus() throws IOException { create("create-smoking-status.json"); diff --git a/src/test/resources/Observation/create-sofa-score-cardiovuskular-score-1.json b/src/test/resources/Observation/create-sofa-score-cardiovuskular-score-1.json new file mode 100644 index 000000000..9c4761860 --- /dev/null +++ b/src/test/resources/Observation/create-sofa-score-cardiovuskular-score-1.json @@ -0,0 +1,172 @@ +{ + "resourceType": "Observation", + "id": "sofa-score", + "status": "final", + "meta": { + "profile": [ + "https://www.netzwerk-universitaetsmedizin.de/fhir/StructureDefinition/sofa-score" + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/ecrf-parameter-codes", + "code": "06", + "display": "SOFA-Score" + } + ], + "text": "Sepsis-related organ failure assessment score" + }, + "subject": { + "identifier": { + "system": "urn:ietf:rfc:4122", + "value": "{{patientId}}" + } + }, + "effectiveDateTime": "2020-09-16", + "component": [ + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "resp", + "display": "Respiratory system" + } + ], + "text": "SOFA Respiratory system scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "resp3", + "display": "Respiratory system SOFA score 3" + } + ], + "text": "PaO2/FiO2 [mmHg (kPa)] < 200 (26.7) and mechanically ventilated" + } + }, + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "ns", + "display": "Nervous system" + } + ], + "text": "SOFA Nervous system scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "ns4", + "display": "Nervous system SOFA score 4" + } + ], + "text": "Glasgow Coma Scale (GCS) < 6" + } + }, + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "cvs", + "display": "Cardiovascular system" + } + ], + "text": "SOFA Cardiovascular system scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "cvs1", + "display": "Cardiovascular system SOFA score 1" + } + ], + "text": "Mean arterial pressure (MAP) < 70 mmHg" + } + }, + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "liv", + "display": "Liver" + } + ], + "text": "SOFA Liver scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "liv1", + "display": "Liver SOFA score 1" + } + ], + "text": "Bilirubin (mg/dl) [umol/L] 1.2-1.9 [20-32]" + } + }, + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "coa", + "display": "Coagulation" + } + ], + "text": "SOFA Coagulation scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "coa2", + "display": "Coagulation SOFA score 2" + } + ], + "text": "Platelets×10^3/ul < 100" + } + }, + { + "code": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "kid", + "display": "Kidneys" + } + ], + "text": "SOFA Kidneys scoring category" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "https://www.netzwerk-universitaetsmedizin.de/fhir/CodeSystem/sofa-score", + "code": "kid4", + "display": "Kidneys SOFA score 4" + } + ], + "text": "Creatinine (mg/dl) [umol/L] (or urine output) > 5.0 [> 440] (or < 200 ml/d)" + } + } + ] +} \ No newline at end of file From f0aca32566dbc0cf7f518f0c92c48b964b0bc418 Mon Sep 17 00:00:00 2001 From: SevKohler Date: Tue, 23 Feb 2021 15:48:13 +0100 Subject: [PATCH 5/6] Clinical Frailty restructured --- .../CompositionConverterResolver.java | 1 + ...inologyIds.java => TerminologyIdCode.java} | 6 +- .../ClinicalFrailtyBerurteilung.java | 39 ++++++++++++ .../ClinicalFrailtyMappingAssessment.java | 45 ++++++++++++++ ...FrailtyScaleScoreCompositionConverter.java | 61 +------------------ .../converter/sofascore/SofaScoreCode.java | 49 +++++++-------- 6 files changed, 115 insertions(+), 86 deletions(-) rename src/main/java/org/ehrbase/fhirbridge/ehr/converter/{sofascore/SofaScoreTerminologyIds.java => TerminologyIdCode.java} (56%) create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyBerurteilung.java create mode 100644 src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyMappingAssessment.java rename src/main/java/org/ehrbase/fhirbridge/ehr/converter/{ => clinicalFrailty}/ClinicalFrailtyScaleScoreCompositionConverter.java (54%) diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java index 223709937..7a02b4bcc 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/CompositionConverterResolver.java @@ -1,6 +1,7 @@ package org.ehrbase.fhirbridge.ehr.converter; import org.ehrbase.fhirbridge.camel.component.ehr.composition.CompositionConverter; +import org.ehrbase.fhirbridge.ehr.converter.clinicalFrailty.ClinicalFrailtyScaleScoreCompositionConverter; import org.ehrbase.fhirbridge.ehr.converter.radiologischerBefund.RadiologischerBefundConverter; import org.ehrbase.fhirbridge.ehr.converter.bloodgas.BloodGasPanelCompositionConverter; import org.ehrbase.fhirbridge.ehr.converter.sofascore.SofaScoreCompositionConverter; diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/TerminologyIdCode.java similarity index 56% rename from src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java rename to src/main/java/org/ehrbase/fhirbridge/ehr/converter/TerminologyIdCode.java index a83673a7d..57bff087a 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreTerminologyIds.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/TerminologyIdCode.java @@ -1,12 +1,12 @@ -package org.ehrbase.fhirbridge.ehr.converter.sofascore; +package org.ehrbase.fhirbridge.ehr.converter; -public enum SofaScoreTerminologyIds { +public enum TerminologyIdCode { LOCAL("local"); private final String terminologyId; - SofaScoreTerminologyIds(String terminologyId){ + TerminologyIdCode(String terminologyId){ this.terminologyId = terminologyId; } diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyBerurteilung.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyBerurteilung.java new file mode 100644 index 000000000..ec6fdbfdd --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyBerurteilung.java @@ -0,0 +1,39 @@ +package org.ehrbase.fhirbridge.ehr.converter.clinicalFrailty; + +import com.nedap.archie.rm.datatypes.CodePhrase; +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; +import com.nedap.archie.rm.support.identification.TerminologyId; +import org.ehrbase.fhirbridge.ehr.converter.TerminologyIdCode; + +public enum ClinicalFrailtyBerurteilung { + + SEHR_FIT(new DvOrdinal(1L, + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0005")))), + DURCHSCHNITTLICH_AKTIV(new DvOrdinal(2L, + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0006")))), + GUT_ZURECHTKOMMEND(new DvOrdinal(3L, + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0007")))), + VULNERABEL(new DvOrdinal(4L, + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0008")))), + GERINGGRADIG_FRAIL(new DvOrdinal(5L, + new DvCodedText("5", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0009")))), + MITTELGRADIG_FRAIL(new DvOrdinal(6L, + new DvCodedText("6", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0010")))), + AUSGEPRAEGT_FRAIL(new DvOrdinal(7L, + new DvCodedText("7", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0011")))), + EXTREM_FRAIL(new DvOrdinal(8L, + new DvCodedText("8", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0012")))), + TERMINAL_ERKRANKT(new DvOrdinal(9L, + new DvCodedText("9", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0013")))); + + private final DvOrdinal berurteilung; + + ClinicalFrailtyBerurteilung(DvOrdinal berurteilung) { + this.berurteilung = berurteilung; + } + + public DvOrdinal getBerurteilung() { + return berurteilung; + } +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyMappingAssessment.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyMappingAssessment.java new file mode 100644 index 000000000..79ca932df --- /dev/null +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyMappingAssessment.java @@ -0,0 +1,45 @@ +package org.ehrbase.fhirbridge.ehr.converter.clinicalFrailty; + +import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException; +import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; + +public class ClinicalFrailtyMappingAssessment { + private static final String local = "local"; + + + public DvOrdinal getDVOrdinal(int code) { + DvOrdinal ret; + switch (code) { + case 1: + ret = ClinicalFrailtyBerurteilung.SEHR_FIT.getBerurteilung(); + break; + case 2: + ret = ClinicalFrailtyBerurteilung.DURCHSCHNITTLICH_AKTIV.getBerurteilung(); + break; + case 3: + ret = ClinicalFrailtyBerurteilung.GUT_ZURECHTKOMMEND.getBerurteilung(); + break; + case 4: + ret = ClinicalFrailtyBerurteilung.VULNERABEL.getBerurteilung(); + break; + case 5: + ret = ClinicalFrailtyBerurteilung.GERINGGRADIG_FRAIL.getBerurteilung(); + break; + case 6: + ret = ClinicalFrailtyBerurteilung.MITTELGRADIG_FRAIL.getBerurteilung(); + break; + case 7: + ret = ClinicalFrailtyBerurteilung.AUSGEPRAEGT_FRAIL.getBerurteilung(); + break; + case 8: + ret = ClinicalFrailtyBerurteilung.EXTREM_FRAIL.getBerurteilung(); + break; + case 9: + ret = ClinicalFrailtyBerurteilung.TERMINAL_ERKRANKT.getBerurteilung(); + break; + default: + throw new UnprocessableEntityException("Cannot match beurteilung\"" + code + "\""); + } + return ret; + } +} diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyScaleScoreCompositionConverter.java similarity index 54% rename from src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java rename to src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyScaleScoreCompositionConverter.java index 2da947c84..463d2aac4 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/ClinicalFrailtyScaleScoreCompositionConverter.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/clinicalFrailty/ClinicalFrailtyScaleScoreCompositionConverter.java @@ -1,4 +1,4 @@ -package org.ehrbase.fhirbridge.ehr.converter; +package org.ehrbase.fhirbridge.ehr.converter.clinicalFrailty; import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException; import com.nedap.archie.rm.datatypes.CodePhrase; @@ -55,7 +55,7 @@ public KlinischeFrailtySkalaComposition toComposition(Observation observation) { int assessment = Integer.parseInt(string_assessment); // get the mapping to the DV_Ordinal from inner class - ClinicalFrailty_Mapping_Assessment mapping = new ClinicalFrailty_Mapping_Assessment(); + ClinicalFrailtyMappingAssessment mapping = new ClinicalFrailtyMappingAssessment(); DvOrdinal ord_assessment = mapping.getDVOrdinal(assessment); klinischeFrailtySkalaCfsObservation.setBeurteilung(ord_assessment); @@ -82,62 +82,5 @@ public KlinischeFrailtySkalaComposition toComposition(Observation observation) { return result; } - private static class ClinicalFrailty_Mapping_Assessment { - private static final String local = "local"; - private static final DvOrdinal ClinFrailty_Beurteilung_1_SEHR_FIT = new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(local), "at0005"))); - private static final DvOrdinal ClinFrailty_Beurteilung_2_DURCHSCHNITTLICH_AKTIV = new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(local), "at0006"))); - private static final DvOrdinal ClinFrailty_Beurteilung_3_GUT_ZURECHTKOMMEND = new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(local), "at0007"))); - private static final DvOrdinal ClinFrailty_Beurteilung_4_VULNERABEL = new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(local), "at0008"))); - private static final DvOrdinal ClinFrailty_Beurteilung_5_GERINGGRADIG_FRAIL = new DvOrdinal(5L, - new DvCodedText("5", new CodePhrase(new TerminologyId(local), "at0009"))); - private static final DvOrdinal ClinFrailty_Beurteilung_6_MITTELGRADIG_FRAIL = new DvOrdinal(6L, - new DvCodedText("6", new CodePhrase(new TerminologyId(local), "at0010"))); - private static final DvOrdinal ClinFrailty_Beurteilung_7_AUSGEPRAGT_FRAIL = new DvOrdinal(7L, - new DvCodedText("7", new CodePhrase(new TerminologyId(local), "at0011"))); - private static final DvOrdinal ClinFrailty_Beurteilung_8_EXTREM_FRAIL = new DvOrdinal(8L, - new DvCodedText("8", new CodePhrase(new TerminologyId(local), "at0012"))); - private static final DvOrdinal ClinFrailty_Beurteilung_9_TERMINAL_ERKRANKT = new DvOrdinal(9L, - new DvCodedText("9", new CodePhrase(new TerminologyId(local), "at0013"))); - - public DvOrdinal getDVOrdinal(int code) { - DvOrdinal ret; - switch (code) { - case 1: - ret = ClinFrailty_Beurteilung_1_SEHR_FIT; - break; - case 2: - ret = ClinFrailty_Beurteilung_2_DURCHSCHNITTLICH_AKTIV; - break; - case 3: - ret = ClinFrailty_Beurteilung_3_GUT_ZURECHTKOMMEND; - break; - case 4: - ret = ClinFrailty_Beurteilung_4_VULNERABEL; - break; - case 5: - ret = ClinFrailty_Beurteilung_5_GERINGGRADIG_FRAIL; - break; - case 6: - ret = ClinFrailty_Beurteilung_6_MITTELGRADIG_FRAIL; - break; - case 7: - ret = ClinFrailty_Beurteilung_7_AUSGEPRAGT_FRAIL; - break; - case 8: - ret = ClinFrailty_Beurteilung_8_EXTREM_FRAIL; - break; - case 9: - ret = ClinFrailty_Beurteilung_9_TERMINAL_ERKRANKT; - break; - default: - throw new UnprocessableEntityException("Cannot match beurteilung\"" + code + "\""); - } - return ret; - } - } } diff --git a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java index c74172abc..4072a077c 100644 --- a/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java +++ b/src/main/java/org/ehrbase/fhirbridge/ehr/converter/sofascore/SofaScoreCode.java @@ -4,56 +4,57 @@ import com.nedap.archie.rm.datavalues.DvCodedText; import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; import com.nedap.archie.rm.support.identification.TerminologyId; +import org.ehrbase.fhirbridge.ehr.converter.TerminologyIdCode; public enum SofaScoreCode { ATEMFREQUENZ_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0016")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0016")))), ATEMFREQUENZ_SCORE_2(new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0017")))), + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0017")))), ATEMFREQUENZ_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0018")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0018")))), ATEMFREQUENZ_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0019")))), + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0019")))), NERVENSYSTEM_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0020")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0020")))), NERVENSYSTEM_SCORE_2(new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0021")))), + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0021")))), NERVENSYSTEM_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0022")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0022")))), NERVENSYSTEM_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0023")))), + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0023")))), HERZKREISLAUFSYSTEM_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0024")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0024")))), HERZKREISLAUFSYSTEM_SCORE_2(new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0025")))), + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0025")))), HERZKREISLAUFSYSTEM_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0026")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0026")))), HERZKREISLAUFSYSTEM_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0027")))), + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0027")))), LEBERFUNKTIONS_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0028")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0028")))), LEBERFUNKTIONS_SCORE_2(new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0029")))), + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0029")))), LEBERFUNKTIONS_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0030")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0030")))), LEBERFUNKTIONS_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0031")))), + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0031")))), BLUTGERINNUNGS_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0032")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0032")))), BLUTGERINNUNGS_SCORE_2(new DvOrdinal(2L, - new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0033")))), + new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0033")))), BLUTGERINNUNGS_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0034")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0034")))), BLUTGERINNUNGS_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0035")))), + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0035")))), NIERENFUNKTIONS_SCORE_1(new DvOrdinal(1L, - new DvCodedText("1", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0036")))), - NIERENFUNKTIONS_SCORE_2(new DvOrdinal(2L, new DvCodedText("2", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0037")))), + new DvCodedText("1", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0036")))), + NIERENFUNKTIONS_SCORE_2(new DvOrdinal(2L, new DvCodedText("2", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0037")))), NIERENFUNKTIONS_SCORE_3(new DvOrdinal(3L, - new DvCodedText("3", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0038")))), + new DvCodedText("3", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0038")))), NIERENFUNKTIONS_SCORE_4(new DvOrdinal(4L, - new DvCodedText("4", new CodePhrase(new TerminologyId(SofaScoreTerminologyIds.LOCAL.getTerminologyId()), "at0039")))); + new DvCodedText("4", new CodePhrase(new TerminologyId(TerminologyIdCode.LOCAL.getTerminologyId()), "at0039")))); private final DvOrdinal value; From 4f258fb6d992947f2ad8493fb578b078cebb78b1 Mon Sep 17 00:00:00 2001 From: Peter Wohlfarth Date: Tue, 23 Feb 2021 18:03:34 +0100 Subject: [PATCH 6/6] [CHANGE] Sofa Score happy path test to use a ${text} variable instead of a hardcoded value [CHANGE] Sofa Score happy path keyword to use a ${text} variable instead of a hardcoded value [REFACTOR] Sofa Score invalid profile test suite --- tests/robot/OBSERVATION/01_create.robot | 2 +- .../OBSERVATION/10_create_sofa_score.robot | 1027 ++++++++--------- .../_resources/keywords/observation.robot | 4 +- 3 files changed, 495 insertions(+), 538 deletions(-) diff --git a/tests/robot/OBSERVATION/01_create.robot b/tests/robot/OBSERVATION/01_create.robot index 36f4acd56..1182ffac8 100644 --- a/tests/robot/OBSERVATION/01_create.robot +++ b/tests/robot/OBSERVATION/01_create.robot @@ -94,7 +94,7 @@ Force Tags observation_create create [Tags] sofa-score valid ehr.create new ehr 000_ehr_status.json - observation.create sofa score create-sofa-score.json + observation.create sofa score Sofa Score create-sofa-score-cardiovuskular-score-1.json observation.validate response - 201 diff --git a/tests/robot/OBSERVATION/10_create_sofa_score.robot b/tests/robot/OBSERVATION/10_create_sofa_score.robot index 3a928582f..5cf1cebe3 100644 --- a/tests/robot/OBSERVATION/10_create_sofa_score.robot +++ b/tests/robot/OBSERVATION/10_create_sofa_score.robot @@ -50,40 +50,40 @@ ${randinteger} ${12345} [Template] create sofa score w/o ehr reference [Tags] subject - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE # invalid cases for value - $.subject.identifier.value missing 422 Subject identifier is required - $.subject.identifier.value foobar 422 EhrId not found for subject 'foobar' - $.subject.identifier.value ${EMPTY} 422 @value cannot be empty Observation.subject.identifier.value - $.subject.identifier.value ${{ [] }} 422 This property must be an simple value, not an array Observation.subject.identifier.value - $.subject.identifier.value ${{ {} }} 422 This property must be an simple value, not an object Observation.subject.identifier.value - $.subject.identifier.value ${123} 422 Error parsing JSON: the primitive value must be a string Observation.subject.identifier.value + $.subject.identifier.value missing 422 + $.subject.identifier.value foobar 422 + $.subject.identifier.value ${EMPTY} 422 + $.subject.identifier.value ${{ [] }} 422 + $.subject.identifier.value ${{ {} }} 422 + $.subject.identifier.value ${123} 422 # invalid cases for system - $.subject.identifier.system foobar 422 Identifier.system must be an absolute reference, not a local reference - $.subject.identifier.system ${EMPTY} 422 @value cannot be empty Observation.subject.identifier.system - $.subject.identifier.system ${{ [] }} 422 This property must be an simple value, not an array Observation.subject.identifier.system - $.subject.identifier.system ${{ {} }} 422 This property must be an simple value, not an object Observation.subject.identifier.system - $.subject.identifier.system ${123} 422 Error parsing JSON: the primitive value must be a string Observation.subject.identifier.system + $.subject.identifier.system foobar 422 + $.subject.identifier.system ${EMPTY} 422 + $.subject.identifier.system ${{ [] }} 422 + $.subject.identifier.system ${{ {} }} 422 + $.subject.identifier.system ${123} 422 # invalid cases for identifier - $.subject.identifier missing 422 Object must have some content Observation.subject - $.subject.identifier ${EMPTY} 422 This property must be an Object, not a primitive property Observation.subject.identifier - $.subject.identifier ${{ [] }} 422 This property must be an Object, not an array Observation.subject.identifier - $.subject.identifier ${{ {} }} 422 Object must have some content Observation.subject.identifier - $.subject.identifier ${123} 422 This property must be an Object, not a primitive property Observation.subject.identifier + $.subject.identifier missing 422 + $.subject.identifier ${EMPTY} 422 + $.subject.identifier ${{ [] }} 422 + $.subject.identifier ${{ {} }} 422 + $.subject.identifier ${123} 422 # invalid cases for subject - $.subject missing 422 Observation.subject: minimum required = 1, but only found 0 .from ${sofa_score-url} - $.subject ${EMPTY} 422 This property must be an Object, not a primitive property Observation.subject - $.subject ${{ [] }} 422 This property must be an Object, not an array Observation.subject - $.subject ${{ {} }} 422 Object must have some content Observation.subject - $.subject ${123} 422 This property must be an Object, not a primitive property Observation.subject + $.subject missing 422 + $.subject ${EMPTY} 422 + $.subject ${{ [] }} 422 + $.subject ${{ {} }} 422 + $.subject ${123} 422 - # comment: random uuid regex for uuid - $.subject.identifier.value ${{str(uuid.uuid4())}} 422 EhrId not found for subject + # comment: random uuid + $.subject.identifier.value ${{str(uuid.uuid4())}} 422 002 Create Sofa Score (Invalid/Missing 'resourceType') @@ -97,12 +97,12 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] resourceType - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE - $.resourceType missing 422 Unable to find resourceType propert - $.resourceType ${randstring} 422 This does not appear to be a FHIR resource .unknown name '${randstring}'. - $.resourceType ${EMPTY} 422 This does not appear to be a FHIR resource .unknown name ''. - $.resourceType ${randinteger} 422 This does not appear to be a FHIR resource .unknown name '${randinteger}'. + $.resourceType missing 422 + $.resourceType ${randstring} 422 + $.resourceType ${EMPTY} 422 + $.resourceType ${randinteger} 422 003 Create Sofa Score (Invalid/Missing 'ID') @@ -116,10 +116,10 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] ID - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE - $.id ${EMPTY} 422 @value cannot be empty Observation.id - $.id ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.id + $.id ${EMPTY} 422 + $.id ${randinteger} 422 004 Create Sofa Score (Invalid/Missing 'meta') @@ -133,21 +133,21 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] meta - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE - $.meta missing 422 Default profile is not supported for Observation. One of the following profiles is expected: .https://.* - $.meta.profile missing 422 Object must have some content Observation.meta - $.meta.profile[0] ${randinteger} 422 Canonical URLs must be absolute URLs if they are not fragment references .${randinteger}. Observation.meta.profile.0. - $.meta.profile[0] ${randstring} 422 Canonical URLs must be absolute URLs if they are not fragment references .${randstring}. Observation.meta.profile.0. - $.meta.profile ${{ ["invalid_url"] }} 422 Canonical URLs must be absolute URLs if they are not fragment references .invalid_url. Observation.meta.profile.0. - $.meta.profile ${{ ["http://wrong.url"] }} 422 Profile reference 'http://wrong.url' could not be resolved, so has not been checked Observation.meta.profile.0. - $.meta.profile ${EMPTY} 422 This property must be an Array, not a a primitive property Observation.meta.profile + $.meta missing 422 + $.meta.profile missing 422 + $.meta.profile[0] ${randinteger} 422 + $.meta.profile[0] ${randstring} 422 + $.meta.profile ${{ ["invalid_url"] }} 422 + $.meta.profile ${{ ["http://wrong.url"] }} 422 + $.meta.profile ${EMPTY} 422 # comment: the next one sets the value to an empty list/array [] - $.meta.profile ${{ [] }} 422 Default profile is not supported for Observation. One of the following profiles is expected: .https://.* + $.meta.profile ${{ [] }} 422 # comment: the next one sets value to an empty object {} - $.meta.profile ${{ {} }} 422 This property must be an Array, not a an object + $.meta.profile ${{ {} }} 422 005 Create Sofa Score (Invalid/Missing 'Status') @@ -161,12 +161,12 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] status - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE - $.status missing 422 Observation.status: minimum required = 1, but only found 0 .from https://.* Observation - $.status ${EMPTY} 422 @value cannot be empty Observation.status - $.status ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.status - $.status ${randstring} 400 Failed to parse request body as JSON resource. Error was: .element=\"status\". Invalid attribute value \"foobar\": Unknown ObservationStatus code '${randstring}' + $.status missing 422 + $.status ${EMPTY} 422 + $.status ${randinteger} 422 + $.status ${randstring} 400 006 Create Sofa Score (Invalid/Missing 'category') @@ -180,31 +180,31 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] category - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE # invalid category - $.category missing 422 Observation.category: minimum required = 1, but only found 0 .from ${sofa_score-url} - $.category ${{ [] }} 422 Array cannot be empty - the property should not be present if it has no values Observation.category - $.category ${{ {} }} 422 This property must be an Array, not an Object Observation.category - $.category ${{ [{}] }} 422 Object must have some content Observation.category + $.category missing 422 + $.category ${{ [] }} 422 + $.category ${{ {} }} 422 + $.category ${{ [{}] }} 422 #invalid coding - $.category[0].coding missing 422 Object must have some content Observation.category.0. - $.category[0].coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.category.0..coding + $.category[0].coding missing 422 + $.category[0].coding ${EMPTY} 422 #invalid code 0 - $.category[0].coding[0].code missing 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.category.0..coding.0. - $.category[0].coding[0].code ${EMPTY} 422 @value cannot be empty Observation.category.0..coding.0..code - $.category[0].coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.category.0. - $.category[0].coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.category.0..coding.0..code + $.category[0].coding[0].code missing 422 + $.category[0].coding[0].code ${EMPTY} 422 + $.category[0].coding[0].code ${randstring} 422 + $.category[0].coding[0].code ${randinteger} 422 # invaild system 0 - $.category[0].coding[0].system missing 422 A code with no system has no defined meaning. A system should be provided Observation.category.0..coding.0. - $.category[0].coding[0].system ${EMPTY} 422 @value cannot be empty Observation.category.0..coding.0..system - $.category[0].coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.category.0..coding.0. - $.category[0].coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.category.0..coding.0..system - $.category[0].coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.category.0..coding.0. + $.category[0].coding[0].system missing 422 + $.category[0].coding[0].system ${EMPTY} 422 + $.category[0].coding[0].system ${randstring} 422 + $.category[0].coding[0].system ${randinteger} 422 + $.category[0].coding[0].system http://foobar.de 422 007 Create Sofa Score (Invalid/Missing 'code') @@ -218,35 +218,35 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] code - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP ERROR MESSAGE # CODE # invalid code - $.code missing 422 Observation.code: minimum required = 1, but only found 0 .from ${sofa_score-url} Observation - $.code ${{ [] }} 422 Observation.code: minimum required = 1, but only found 0 .from ${sofa_score-url} Observation - $.code ${{ {} }} 422 Object must have some content Observation.code - $.code ${{ [{}] }} 422 This property must be an Object, not an array Observation.code + $.code missing 422 + $.code ${{ [] }} 422 + $.code ${{ {} }} 422 + $.code ${{ [{}] }} 422 # invalid coding - $.code.coding missing 422 Observation.code.coding: minimum required = 1, but only found 0 Observation.code - $.code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.code.coding + $.code.coding missing 422 + $.code.coding ${EMPTY} 422 # invalid Code Coding 0 System - $.code.coding[0].system missing 422 A code with no system has no defined meaning. A system should be provided Observation.code.coding.0. - $.code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.code.coding.0..system - $.code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.code - $.code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.code.coding.0. - $.code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.code.coding.0..system + $.code.coding[0].system missing 422 + $.code.coding[0].system ${EMPTY} 422 + $.code.coding[0].system http://foobar.de 422 + $.code.coding[0].system ${randstring} 422 + $.code.coding[0].system ${randinteger} 422 # invalid Code Coding 0 Code - $.code.coding[0].code missing 422 Observation.code.coding:sofaScore: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - $.code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.code.coding.0..code - $.code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.code.coding.0. - $.code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.code.coding.0..code + $.code.coding[0].code missing 422 + $.code.coding[0].code ${EMPTY} 422 + $.code.coding[0].code ${randstring} 422 + $.code.coding[0].code ${randinteger} 422 # invalid Code Coding 0 Display - $.code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.code.coding.0..display - $.code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.code.coding.0..display + $.code.coding[0].display ${EMPTY} 422 + $.code.coding[0].display ${randinteger} 422 008 Create Sofa Score (Invalid/Missing 'effectiveDateTime') @@ -260,37 +260,37 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] effectiveDateTime - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE # missing attribute -# $.effectiveDateTime missing 422 Observation.effective.x.: minimum required = 1, but only found 0 .from https:/* Observation - $.effectiveDateTime ${EMPTY} 422 @value cannot be empty Observation.effective.ofType.dateTime. +# $.effectiveDateTime missing 422 + $.effectiveDateTime ${EMPTY} 422 # wrong format - $.effectiveDateTime ${{ [] }} 422 This property must be an simple value, not an array Observation.effective.x. - $.effectiveDateTime ${{ {} }} 422 This property must be an simple value, not an object Observation.effective.x - $.effectiveDateTime ${{ [{}] }} 422 This property must be an simple value, not an array Observation.effective.x + $.effectiveDateTime ${{ [] }} 422 + $.effectiveDateTime ${{ {} }} 422 + $.effectiveDateTime ${{ [{}] }} 422 # invalid day - $.effectiveDateTime 2020-09-00 422 Not a valid date/time .Invalid date/time format: \"2020-09-00\". Observation.effective.ofType.dateTime. - $.effectiveDateTime 2020-09-32 422 Not a valid date/time .Invalid date/time format: \"2020-09-32\". Observation.effective.ofType.dateTime. - $.effectiveDateTime 2020-09-dd 422 Not a valid date/time .Invalid date/time format: \"2020-09-dd\". Observation.effective.ofType.dateTime. + $.effectiveDateTime 2020-09-00 422 + $.effectiveDateTime 2020-09-32 422 + $.effectiveDateTime 2020-09-dd 422 # invalid month - $.effectiveDateTime 2020-00-21 422 Not a valid date/time .Invalid date/time format: \"2020-00-21\". Observation.effective.ofType.dateTime. - $.effectiveDateTime 2020-13-21 422 Not a valid date/time .Invalid date/time format: \"2020-13-21\". Observation.effective.ofType.dateTime. - $.effectiveDateTime 2020-mm-21 422 Not a valid date/time .Invalid date/time format: \"2020-mm-21\". Observation.effective.ofType.dateTime. + $.effectiveDateTime 2020-00-21 422 + $.effectiveDateTime 2020-13-21 422 + $.effectiveDateTime 2020-mm-21 422 # invalid year - $.effectiveDateTime 0000-09-21 422 The value '0000-09-21' is outside the range of reasonable years - check for data entry error Observation.effective.ofType.dateTime. - $.effectiveDateTime 10000-09-21 422 Not a valid date/time .Invalid date/time format: \"10000-09-21\". Observation.effective.ofType.dateTime. - $.effectiveDateTime yyyy-09-21 422 Not a valid date/time .Invalid date/time format: \"yyyy-09-21\". Observation.effective.ofType.dateTime. + $.effectiveDateTime 0000-09-21 422 + $.effectiveDateTime 10000-09-21 422 + $.effectiveDateTime yyyy-09-21 422 # invalid Date format - $.effectiveDateTime 21.09.2020 422 Not a valid date/time .Invalid date/time format: \"21.09.2020\". Observation.effective.ofType.dateTime. - $.effectiveDateTime ${randstring} 422 Not a valid date/time .Invalid date/time format: \"${randstring}". Observation.effective.ofType.dateTime. - $.effectiveDateTime ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.effective.x. + $.effectiveDateTime 21.09.2020 422 + $.effectiveDateTime ${randstring} 422 + $.effectiveDateTime ${randinteger} 422 009 Create Sofa Score (Invalid/Missing 'component' for missing or empty ground attributes) @@ -305,89 +305,89 @@ ${randinteger} ${12345} [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE # missing valueCodeableConcept - $.component missing 422 Index 0 out of bounds for length 0 - $.component ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component + $.component missing 422 + $.component ${EMPTY} 422 # wrong format - $.component ${{ [] }} 422 Array cannot be empty - the property should not be present if it has no values Observation.component - $.component ${{ {} }} 422 Object must have some content Observation.component - $.component ${{ [{}] }} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component + $.component ${{ [] }} 422 + $.component ${{ {} }} 422 + $.component ${{ [{}] }} 422 # missing array value - $.component[0] missing 422 Index 5 out of bounds for length 5 - $.component[1] missing 422 Index 5 out of bounds for length 5 - $.component[2] missing 422 Index 5 out of bounds for length 5 - $.component[3] missing 422 Index 5 out of bounds for length 5 - $.component[4] missing 422 Index 5 out of bounds for length 5 - $.component[5] missing 422 Index 5 out of bounds for length 5 + $.component[0] missing 422 + $.component[1] missing 422 + $.component[2] missing 422 + $.component[3] missing 422 + $.component[4] missing 422 + $.component[5] missing 422 # empty array - $.component[0] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.0. - $.component[1] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.1. - $.component[2] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.2. - $.component[3] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.3. - $.component[4] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.4. - $.component[5] ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.5. + $.component[0] ${EMPTY} 422 + $.component[1] ${EMPTY} 422 + $.component[2] ${EMPTY} 422 + $.component[3] ${EMPTY} 422 + $.component[4] ${EMPTY} 422 + $.component[5] ${EMPTY} 422 # missing component x code - $.component[0].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0. - $.component[1].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.1. - $.component[2].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.2. - $.component[3].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.3. - $.component[4].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.4. - $.component[5].code missing 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.5. + $.component[0].code missing 422 + $.component[1].code missing 422 + $.component[2].code missing 422 + $.component[3].code missing 422 + $.component[4].code missing 422 + $.component[5].code missing 422 # empty component x code - $.component[0].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0. - $.component[1].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.1. - $.component[2].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.2. - $.component[3].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.3. - $.component[4].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.4. - $.component[5].code ${EMPTY} 422 Observation.component.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.5. + $.component[0].code ${EMPTY} 422 + $.component[1].code ${EMPTY} 422 + $.component[2].code ${EMPTY} 422 + $.component[3].code ${EMPTY} 422 + $.component[4].code ${EMPTY} 422 + $.component[5].code ${EMPTY} 422 # missing component x valueCodableConcept - $.component[0].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 - $.component[1].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 - $.component[2].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 - $.component[3].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 - $.component[4].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 - $.component[5].valueCodeableConcept missing 422 Index 0 out of bounds for length 0 + $.component[0].valueCodeableConcept missing 422 + $.component[1].valueCodeableConcept missing 422 + $.component[2].valueCodeableConcept missing 422 + $.component[3].valueCodeableConcept missing 422 + $.component[4].valueCodeableConcept missing 422 + $.component[5].valueCodeableConcept missing 422 # empty component x valueCodableConcept - $.component[0].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.0..value.x. - $.component[1].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.1..value.x. - $.component[2].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.2..value.x. - $.component[3].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.3..value.x. - $.component[4].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.4..value.x. - $.component[5].valueCodeableConcept ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.5..value.x. + $.component[0].valueCodeableConcept ${EMPTY} 422 + $.component[1].valueCodeableConcept ${EMPTY} 422 + $.component[2].valueCodeableConcept ${EMPTY} 422 + $.component[3].valueCodeableConcept ${EMPTY} 422 + $.component[4].valueCodeableConcept ${EMPTY} 422 + $.component[5].valueCodeableConcept ${EMPTY} 422 # empty component x code coding - $.component[0].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.0..code.coding - $.component[1].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.1..code.coding - $.component[2].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.2..code.coding - $.component[3].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.3..code.coding - $.component[4].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.4..code.coding - $.component[5].code.coding ${EMPTY} 422 This property must be an Array, not a primitive property Observation.component.5..code.coding + $.component[0].code.coding ${EMPTY} 422 + $.component[1].code.coding ${EMPTY} 422 + $.component[2].code.coding ${EMPTY} 422 + $.component[3].code.coding ${EMPTY} 422 + $.component[4].code.coding ${EMPTY} 422 + $.component[5].code.coding ${EMPTY} 422 # missing component x valueCodableConcept coding - $.component[0].valueCodeableConcept.coding missing 422 Observation.component:respiratorySystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0..value.ofType.CodeableConcept. - $.component[1].valueCodeableConcept.coding missing 422 Observation.component:nervousSystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.1..value.ofType.CodeableConcept. - $.component[2].valueCodeableConcept.coding missing 422 Observation.component:cardiovascularSystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.2..value.ofType.CodeableConcept. - $.component[3].valueCodeableConcept.coding missing 422 Observation.component:liver.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.3..value.ofType.CodeableConcept. - $.component[4].valueCodeableConcept.coding missing 422 Observation.component:coagulation.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.4..value.ofType.CodeableConcept. - $.component[5].valueCodeableConcept.coding missing 422 Observation.component:kidneys.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.5..value.ofType.CodeableConcept. + $.component[0].valueCodeableConcept.coding missing 422 + $.component[1].valueCodeableConcept.coding missing 422 + $.component[2].valueCodeableConcept.coding missing 422 + $.component[3].valueCodeableConcept.coding missing 422 + $.component[4].valueCodeableConcept.coding missing 422 + $.component[5].valueCodeableConcept.coding missing 422 # empty component x valueCodableConcept coding - $.component[0].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:respiratorySystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0..value.ofType.CodeableConcept. - $.component[1].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:nervousSystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.1..value.ofType.CodeableConcept. - $.component[2].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:cardiovascularSystem.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.2..value.ofType.CodeableConcept. - $.component[3].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:liver.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.3..value.ofType.CodeableConcept. - $.component[4].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:coagulation.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.4..value.ofType.CodeableConcept. - $.component[5].valueCodeableConcept.coding ${EMPTY} 422 Observation.component:kidneys.value.x..coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.5..value.ofType.CodeableConcept. + $.component[0].valueCodeableConcept.coding ${EMPTY} 422 + $.component[1].valueCodeableConcept.coding ${EMPTY} 422 + $.component[2].valueCodeableConcept.coding ${EMPTY} 422 + $.component[3].valueCodeableConcept.coding ${EMPTY} 422 + $.component[4].valueCodeableConcept.coding ${EMPTY} 422 + $.component[5].valueCodeableConcept.coding ${EMPTY} 422 010 Create Sofa Score (Invalid/Missing 'component' for Array value 0) @@ -401,48 +401,48 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 0 code coding system - $.component[0].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.0..code.coding.0..system -# $.component[0].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[0].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.0..code.coding.0. - $.component[0].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..code.coding.0..system + $.component[0].code.coding[0].system ${EMPTY} 422 +# $.component[0].code.coding[0].system http://foobar.de 422 + $.component[0].code.coding[0].system ${randstring} 422 + $.component[0].code.coding[0].system ${randinteger} 422 #invalid component 0 code coding code - $.component[0].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.0..code.coding.0..code -# $.component[0].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0..code.coding.0. - $.component[0].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..code.coding.0..code + $.component[0].code.coding[0].code ${EMPTY} 422 +# $.component[0].code.coding[0].code ${randstring} 422 + $.component[0].code.coding[0].code ${randinteger} 422 #invalid component 0 code coding display - $.component[0].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.0..code.coding.0..display - $.component[0].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..code.coding.0..display + $.component[0].code.coding[0].display ${EMPTY} 422 + $.component[0].code.coding[0].display ${randinteger} 422 #invalid component 0 code text - $.component[0].code.text ${EMPTY} 422 @value cannot be empty Observation.component.0..code.text - $.component[0].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..code.text + $.component[0].code.text ${EMPTY} 422 + $.component[0].code.text ${randinteger} 422 #invalid component 0 valueCodableConcept coding system - $.component[0].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.0..value.ofType.CodeableConcept..coding.0..system - $.component[0].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..coding.0..system - $.component[0].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.0..value.ofType.CodeableConcept..coding.0..system - $.component[0].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.0..value.ofType.CodeableConcept..coding.0..system - $.component[0].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.0..value.ofType.CodeableConcept..coding.0..system + $.component[0].valueCodeableConcept.coding[0].system missing 422 + $.component[0].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[0].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[0].valueCodeableConcept.coding[0].system ${randstring} 422 + $.component[0].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 0 valueCodableConcept coding code - $.component[0].valueCodeableConcept.coding[0].code missing 422 Observation.component:respiratorySystem.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0..value.ofType.CodeableConcept..coding.0. - $.component[0].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..coding.0..code -# $.component[0].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0..value.ofType.CodeableConcept..coding.0. - $.component[0].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..value.x..coding.0..code + $.component[0].valueCodeableConcept.coding[0].code missing 422 + $.component[0].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[0].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[0].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 0 valueCodableConcept coding display - $.component[0].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..coding.0..display - $.component[0].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..value.x..coding.0..display + $.component[0].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[0].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 0 valueCodableConcept text - $.component[0].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..text - $.component[0].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..value.x..text + $.component[0].valueCodeableConcept.text ${EMPTY} 422 + $.component[0].valueCodeableConcept.text ${randinteger} 422 011 Create Sofa Score (Invalid/Missing 'component' for Array value 1) @@ -456,48 +456,48 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 1 code coding system - $.component[1].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.1..code.coding.0..system -# $.component[1].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[1].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.1..code.coding.0. - $.component[1].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..code.coding.0..system + $.component[1].code.coding[0].system ${EMPTY} 422 +# $.component[1].code.coding[0].system http://foobar.de 422 + $.component[1].code.coding[0].system ${randstring} 422 + $.component[1].code.coding[0].system ${randinteger} 422 #invalid component 1 code coding code - $.component[1].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.1..code.coding.0..code -# $.component[1].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.1..code.coding.0. - $.component[1].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..code.coding.0..code + $.component[1].code.coding[0].code ${EMPTY} 422 +# $.component[1].code.coding[0].code ${randstring} 422 + $.component[1].code.coding[0].code ${randinteger} 422 #invalid component 1 code coding display - $.component[1].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.1..code.coding.0..display - $.component[1].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..code.coding.0..display + $.component[1].code.coding[0].display ${EMPTY} 422 + $.component[1].code.coding[0].display ${randinteger} 422 #invalid component 1 code text - $.component[1].code.text ${EMPTY} 422 @value cannot be empty Observation.component.1..code.text - $.component[1].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..code.text + $.component[1].code.text ${EMPTY} 422 + $.component[1].code.text ${randinteger} 422 #invalid component 1 valueCodableConcept coding system - $.component[1].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.1..value.ofType.CodeableConcept..coding.0..system - $.component[1].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.1..value.ofType.CodeableConcept..coding.0..system - $.component[1].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.1..value.ofType.CodeableConcept..coding.0..system - $.component[1].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.1..value.ofType.CodeableConcept..coding.0..system - $.component[1].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.1..value.ofType.CodeableConcept..coding.0..system + $.component[1].valueCodeableConcept.coding[0].system missing 422 + $.component[1].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[1].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[1].valueCodeableConcept.coding[0].system ${randstring} 422 + $.component[1].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 1 valueCodableConcept coding code - $.component[1].valueCodeableConcept.coding[0].code missing 422 Observation.component:nervousSystem.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.1..value.ofType.CodeableConcept..coding.0. - $.component[1].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.1..value.ofType.CodeableConcept..coding.0..code -# $.component[1].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.1..value.ofType.CodeableConcept..coding.0. - $.component[1].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..value.x..coding.0..code + $.component[1].valueCodeableConcept.coding[0].code missing 422 + $.component[1].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[1].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[1].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 1 valueCodableConcept coding display - $.component[1].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.1..value.ofType.CodeableConcept..coding.0..display - $.component[1].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..value.x..coding.0..display + $.component[1].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[1].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 1 valueCodableConcept text - $.component[1].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.1..value.ofType.CodeableConcept..text - $.component[1].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..value.x..text + $.component[1].valueCodeableConcept.text ${EMPTY} 422 + $.component[1].valueCodeableConcept.text ${randinteger} 422 012 Create Sofa Score (Invalid/Missing 'component' for Array value 2) @@ -511,48 +511,47 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 2 code coding system - $.component[2].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.2..code.coding.0..system -# $.component[2].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[2].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.2..code.coding.0. - $.component[2].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..code.coding.0..system + $.component[2].code.coding[0].system ${EMPTY} 422 +# $.component[2].code.coding[0].system http://foobar.de 422 + $.component[2].code.coding[0].system ${randstring} 422 + $.component[2].code.coding[0].system ${randinteger} 422 #invalid component 2 code coding code - $.component[2].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.2..code.coding.0..code -# $.component[2].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.2..code.coding.0. - $.component[2].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..code.coding.0..code + $.component[2].code.coding[0].code ${EMPTY} 422 +# $.component[2].code.coding[0].code ${randstring} 422 + $.component[2].code.coding[0].code ${randinteger} 422 #invalid component 2 code coding display - $.component[2].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.2..code.coding.0..display - $.component[2].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..code.coding.0..display + $.component[2].code.coding[0].display ${EMPTY} 422 + $.component[2].code.coding[0].display ${randinteger} 422 #invalid component 2 code text - $.component[2].code.text ${EMPTY} 422 @value cannot be empty Observation.component.2..code.text - $.component[2].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..code.text + $.component[2].code.text ${EMPTY} 422 + $.component[2].code.text ${randinteger} 422 #invalid component 2 valueCodableConcept coding system - $.component[2].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.2..value.ofType.CodeableConcept..coding.0..system - $.component[2].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.2..value.ofType.CodeableConcept..coding.0..system - $.component[2].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.2..value.ofType.CodeableConcept..coding.0..system - $.component[2].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.2..value.ofType.CodeableConcept..coding.0..system - $.component[2].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.2..value.ofType.CodeableConcept..coding.0..system + $.component[2].valueCodeableConcept.coding[0].system missing 422 + $.component[2].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[2].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[2].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 2 valueCodableConcept coding code - $.component[2].valueCodeableConcept.coding[0].code missing 422 Observation.component:cardiovascularSystem.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.2..value.ofType.CodeableConcept..coding.0. - $.component[2].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.2..value.ofType.CodeableConcept..coding.0..code -# $.component[2].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.2..value.ofType.CodeableConcept..coding.0. - $.component[2].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..value.x..coding.0..code + $.component[2].valueCodeableConcept.coding[0].code missing 422 + $.component[2].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[2].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[2].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 2 valueCodableConcept coding display - $.component[2].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.2..value.ofType.CodeableConcept..coding.0..display - $.component[2].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..value.x..coding.0..display + $.component[2].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[2].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 2 valueCodableConcept text - $.component[2].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.2..value.ofType.CodeableConcept..text - $.component[2].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..value.x..text + $.component[2].valueCodeableConcept.text ${EMPTY} 422 + $.component[2].valueCodeableConcept.text ${randinteger} 422 013 Create Sofa Score (Invalid/Missing 'component' for Array value 3) @@ -566,48 +565,48 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 3 code coding system - $.component[3].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.3..code.coding.0..system -# $.component[3].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[3].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.3..code.coding.0. - $.component[3].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..code.coding.0..system + $.component[3].code.coding[0].system ${EMPTY} 422 +# $.component[3].code.coding[0].system http://foobar.de 422 + $.component[3].code.coding[0].system ${randstring} 422 + $.component[3].code.coding[0].system ${randinteger} 422 #invalid component 3 code coding code - $.component[3].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.3..code.coding.0..code -# $.component[3].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.3..code.coding.0. - $.component[3].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..code.coding.0..code + $.component[3].code.coding[0].code ${EMPTY} 422 +# $.component[3].code.coding[0].code ${randstring} 422 + $.component[3].code.coding[0].code ${randinteger} 422 #invalid component 3 code coding display - $.component[3].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.3..code.coding.0..display - $.component[3].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..code.coding.0..display + $.component[3].code.coding[0].display ${EMPTY} 422 + $.component[3].code.coding[0].display ${randinteger} 422 #invalid component 3 code text - $.component[3].code.text ${EMPTY} 422 @value cannot be empty Observation.component.3..code.text - $.component[3].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..code.text + $.component[3].code.text ${EMPTY} 422 + $.component[3].code.text ${randinteger} 422 #invalid component 3 valueCodableConcept coding system - $.component[3].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.3..value.ofType.CodeableConcept..coding.0..system - $.component[3].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.3..value.ofType.CodeableConcept..coding.0..system - $.component[3].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.3..value.ofType.CodeableConcept..coding.0..system - $.component[3].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.3..value.ofType.CodeableConcept..coding.0..system - $.component[3].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.3..value.ofType.CodeableConcept..coding.0..system + $.component[3].valueCodeableConcept.coding[0].system missing 422 + $.component[3].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[3].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[3].valueCodeableConcept.coding[0].system ${randstring} 422 + $.component[3].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 3 valueCodableConcept coding code - $.component[3].valueCodeableConcept.coding[0].code missing 422 Observation.component:liver.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.3..value.ofType.CodeableConcept..coding.0. - $.component[3].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.3..value.ofType.CodeableConcept..coding.0..code -# $.component[3].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.3..value.ofType.CodeableConcept..coding.0. - $.component[3].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..value.x..coding.0..code + $.component[3].valueCodeableConcept.coding[0].code missing 422 + $.component[3].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[3].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[3].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 3 valueCodableConcept coding display - $.component[3].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.3..value.ofType.CodeableConcept..coding.0..display - $.component[3].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..value.x..coding.0..display + $.component[3].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[3].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 3 valueCodableConcept text - $.component[3].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.3..value.ofType.CodeableConcept..text - $.component[3].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..value.x..text + $.component[3].valueCodeableConcept.text ${EMPTY} 422 + $.component[3].valueCodeableConcept.text ${randinteger} 422 014 Create Sofa Score (Invalid/Missing 'component' for Array value 4) @@ -621,48 +620,48 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 4 code coding system - $.component[4].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.4..code.coding.0..system -# $.component[4].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[4].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.4..code.coding.0. - $.component[4].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..code.coding.0..system + $.component[4].code.coding[0].system ${EMPTY} 422 +# $.component[4].code.coding[0].system http://foobar.de 422 + $.component[4].code.coding[0].system ${randstring} 422 + $.component[4].code.coding[0].system ${randinteger} 422 #invalid component 4 code coding code - $.component[4].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.4..code.coding.0..code -# $.component[4].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.4..code.coding.0. - $.component[4].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..code.coding.0..code + $.component[4].code.coding[0].code ${EMPTY} 422 +# $.component[4].code.coding[0].code ${randstring} 422 + $.component[4].code.coding[0].code ${randinteger} 422 #invalid component 4 code coding display - $.component[4].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.4..code.coding.0..display - $.component[4].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..code.coding.0..display + $.component[4].code.coding[0].display ${EMPTY} 422 + $.component[4].code.coding[0].display ${randinteger} 422 #invalid component 4 code text - $.component[4].code.text ${EMPTY} 422 @value cannot be empty Observation.component.4..code.text - $.component[4].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..code.text + $.component[4].code.text ${EMPTY} 422 + $.component[4].code.text ${randinteger} 422 #invalid component 4 valueCodableConcept coding system - $.component[4].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.4..value.ofType.CodeableConcept..coding.0..system - $.component[4].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.4..value.ofType.CodeableConcept..coding.0..system - $.component[4].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.4..value.ofType.CodeableConcept..coding.0..system - $.component[4].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.4..value.ofType.CodeableConcept..coding.0..system - $.component[4].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.4..value.ofType.CodeableConcept..coding.0..system + $.component[4].valueCodeableConcept.coding[0].system missing 422 + $.component[4].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[4].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[4].valueCodeableConcept.coding[0].system ${randstring} 422 + $.component[4].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 4 valueCodableConcept coding code - $.component[4].valueCodeableConcept.coding[0].code missing 422 Observation.component:coagulation.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.4..value.ofType.CodeableConcept..coding.0. - $.component[4].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.4..value.ofType.CodeableConcept..coding.0..code -# $.component[4].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.4..value.ofType.CodeableConcept..coding.0. - $.component[4].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..value.x..coding.0..code + $.component[4].valueCodeableConcept.coding[0].code missing 422 + $.component[4].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[4].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[4].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 4 valueCodableConcept coding display - $.component[4].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.4..value.ofType.CodeableConcept..coding.0..display - $.component[4].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..value.x..coding.0..display + $.component[4].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[4].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 4 valueCodableConcept text - $.component[4].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.4..value.ofType.CodeableConcept..text - $.component[4].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..value.x..text + $.component[4].valueCodeableConcept.text ${EMPTY} 422 + $.component[4].valueCodeableConcept.text ${randinteger} 422 015 Create Sofa Score (Invalid/Missing 'component' for Array value 5) @@ -676,68 +675,52 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference [Tags] valueCodeableConcept - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE #invalid component 5 code coding system - $.component[5].code.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.5..code.coding.0..system -# $.component[5].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component - $.component[5].code.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.5..code.coding.0. - $.component[5].code.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..code.coding.0..system + $.component[5].code.coding[0].system ${EMPTY} 422 +# $.component[5].code.coding[0].system http://foobar.de 422 + $.component[5].code.coding[0].system ${randstring} 422 + $.component[5].code.coding[0].system ${randinteger} 422 #invalid component 5 code coding code - $.component[5].code.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.5..code.coding.0..code -# $.component[5].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.5..code.coding.0. - $.component[5].code.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..code.coding.0..code + $.component[5].code.coding[0].code ${EMPTY} 422 +# $.component[5].code.coding[0].code ${randstring} 422 + $.component[5].code.coding[0].code ${randinteger} 422 #invalid component 5 code coding display - $.component[5].code.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.5..code.coding.0..display - $.component[5].code.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..code.coding.0..display + $.component[5].code.coding[0].display ${EMPTY} 422 + $.component[5].code.coding[0].display ${randinteger} 422 #invalid component 5 code text - $.component[5].code.text ${EMPTY} 422 @value cannot be empty Observation.component.5..code.text - $.component[5].code.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..code.text + $.component[5].code.text ${EMPTY} 422 + $.component[5].code.text ${randinteger} 422 #invalid component 5 valueCodableConcept coding system - $.component[5].valueCodeableConcept.coding[0].system missing 422 Missing element 'system' - required by fixed value assigned in profile ${sofa_score-url} Observation.component.5..value.ofType.CodeableConcept..coding.0..system - $.component[5].valueCodeableConcept.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.5..value.ofType.CodeableConcept..coding.0..system - $.component[5].valueCodeableConcept.coding[0].system http://foobar.de 422 Value is 'http://foobar.de' but must be '${sofa_score-url2}' Observation.component.5..value.ofType.CodeableConcept..coding.0..system - $.component[5].valueCodeableConcept.coding[0].system ${randstring} 422 Value is '${randstring}' but must be '${sofa_score-url2}' Observation.component.5..value.ofType.CodeableConcept..coding.0..system - $.component[5].valueCodeableConcept.coding[0].system ${randinteger} 422 Value is '${randinteger}' but must be '${sofa_score-url2}' Observation.component.5..value.ofType.CodeableConcept..coding.0..system + $.component[5].valueCodeableConcept.coding[0].system missing 422 + $.component[5].valueCodeableConcept.coding[0].system ${EMPTY} 422 + $.component[5].valueCodeableConcept.coding[0].system http://foobar.de 422 + $.component[5].valueCodeableConcept.coding[0].system ${randstring} 422 + $.component[5].valueCodeableConcept.coding[0].system ${randinteger} 422 #invalid component 5 valueCodableConcept coding code - $.component[5].valueCodeableConcept.coding[0].code missing 422 Observation.component:kidneys.value.x..coding.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.5..value.ofType.CodeableConcept..coding.0. - $.component[5].valueCodeableConcept.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.5..value.ofType.CodeableConcept..coding.0..code -# $.component[5].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.5..value.ofType.CodeableConcept..coding.0. - $.component[5].valueCodeableConcept.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..value.x..coding.0..code + $.component[5].valueCodeableConcept.coding[0].code missing 422 + $.component[5].valueCodeableConcept.coding[0].code ${EMPTY} 422 +# $.component[5].valueCodeableConcept.coding[0].code ${randstring} 422 + $.component[5].valueCodeableConcept.coding[0].code ${randinteger} 422 #invalid component 5 valueCodableConcept coding display - $.component[5].valueCodeableConcept.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.5..value.ofType.CodeableConcept..coding.0..display - $.component[5].valueCodeableConcept.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..value.x..coding.0..display + $.component[5].valueCodeableConcept.coding[0].display ${EMPTY} 422 + $.component[5].valueCodeableConcept.coding[0].display ${randinteger} 422 #invalid component 5 valueCodableConcept text - $.component[5].valueCodeableConcept.text ${EMPTY} 422 @value cannot be empty Observation.component.5..value.ofType.CodeableConcept..text - $.component[5].valueCodeableConcept.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..value.x..text - - -016 Create Sofa Score (Invalid 'DataAbsentReason' AND 'component') - [Documentation] 1. *CREATE* new an EHR record\n\n - ... 2. *LOAD* _create-sofa-score.json_\n\n - ... 3. *UPDATE* ``Subject - Identifier - value`` with the _UUID:_ ${subject_id} which was created in EHR record\n\n - ... 4. *UPDATE* values for attribute ``DataAbsentReason`` \n\n - ... 5. *POST* example JSON to observation endpoint\n\n - ... 6. *VALIDATE* the response status \n\n - ... 7. *VALIDATE* outcome against diagnostic text & location - [Tags] DataAbsentReason not-ready not-ready_bug - - ehr.create new ehr 000_ehr_status.json - create with DataAbsentReason DataAbsentReason create-sofa-score.json - observation.validate response - 422 (with error message) 422 obs-6: dataAbsentReason SHALL only be present if Observation.value.x. is not present .dataAbsentReason.empty.. or value.empty... Observation + $.component[5].valueCodeableConcept.text ${EMPTY} 422 + $.component[5].valueCodeableConcept.text ${randinteger} 422 - -017 Create Sofa Score (Invalid/Missing 'DataAbsentReason') +016 Create Sofa Score (Invalid/Missing 'DataAbsentReason') [Documentation] 1. *CREATE* new an EHR record\n\n ... 2. *LOAD* _create-sofa-score.json_\n\n ... 3. *UPDATE* ``Subject - Identifier - value`` with the _UUID:_ ${subject_id} which was created in EHR record\n\n @@ -748,145 +731,145 @@ ${randinteger} ${12345} [Template] create sofa score with ehr reference AND data absentreason [Tags] DataAbsentReason - # FIELD/PATH VALUE HTTP ERROR MESSAGE Location + # FIELD/PATH VALUE HTTP # CODE # missing valueCodeableConcept - $.component[0].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason missing 422 Index 0 out of bounds for length 0 - $.component[0].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.0..dataAbsentReason - $.component[1].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.1..dataAbsentReason - $.component[2].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.2..dataAbsentReason - $.component[3].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.3..dataAbsentReason - $.component[4].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.4..dataAbsentReason - $.component[5].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.5..dataAbsentReason + $.component[0].dataAbsentReason missing 422 + $.component[1].dataAbsentReason missing 422 + $.component[2].dataAbsentReason missing 422 + $.component[3].dataAbsentReason missing 422 + $.component[4].dataAbsentReason missing 422 + $.component[5].dataAbsentReason missing 422 + $.component[0].dataAbsentReason ${EMPTY} 422 + $.component[1].dataAbsentReason ${EMPTY} 422 + $.component[2].dataAbsentReason ${EMPTY} 422 + $.component[3].dataAbsentReason ${EMPTY} 422 + $.component[4].dataAbsentReason ${EMPTY} 422 + $.component[5].dataAbsentReason ${EMPTY} 422 # wrong format - $.component[0].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.0..dataAbsentReason - $.component[1].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.1..dataAbsentReason - $.component[2].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.2..dataAbsentReason - $.component[3].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.3..dataAbsentReason - $.component[4].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.4..dataAbsentReason - $.component[5].dataAbsentReason ${{ [] }} 422 This property must be an Object, not an array Observation.component.5..dataAbsentReason - $.component[0].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.0..dataAbsentReason - $.component[1].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.1..dataAbsentReason - $.component[2].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.2..dataAbsentReason - $.component[3].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.3..dataAbsentReason - $.component[4].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.4..dataAbsentReason - $.component[5].dataAbsentReason ${{ {} }} 422 Object must have some content Observation.component.5..dataAbsentReason - $.component[0].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.0..dataAbsentReason - $.component[1].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.1..dataAbsentReason - $.component[2].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.2..dataAbsentReason - $.component[3].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.3..dataAbsentReason - $.component[4].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.4..dataAbsentReason - $.component[5].dataAbsentReason ${{ [{}] }} 422 This property must be an Object, not an array Observation.component.5..dataAbsentReason + $.component[0].dataAbsentReason ${{ [] }} 422 + $.component[1].dataAbsentReason ${{ [] }} 422 + $.component[2].dataAbsentReason ${{ [] }} 422 + $.component[3].dataAbsentReason ${{ [] }} 422 + $.component[4].dataAbsentReason ${{ [] }} 422 + $.component[5].dataAbsentReason ${{ [] }} 422 + $.component[0].dataAbsentReason ${{ {} }} 422 + $.component[1].dataAbsentReason ${{ {} }} 422 + $.component[2].dataAbsentReason ${{ {} }} 422 + $.component[3].dataAbsentReason ${{ {} }} 422 + $.component[4].dataAbsentReason ${{ {} }} 422 + $.component[5].dataAbsentReason ${{ {} }} 422 + $.component[0].dataAbsentReason ${{ [{}] }} 422 + $.component[1].dataAbsentReason ${{ [{}] }} 422 + $.component[2].dataAbsentReason ${{ [{}] }} 422 + $.component[3].dataAbsentReason ${{ [{}] }} 422 + $.component[4].dataAbsentReason ${{ [{}] }} 422 + $.component[5].dataAbsentReason ${{ [{}] }} 422 # missing coding - $.component[0].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason.coding missing 422 Index 0 out of bounds for length 0 - $.component[0].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.0..dataAbsentReason - $.component[1].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.1..dataAbsentReason - $.component[2].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.2..dataAbsentReason - $.component[3].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.3..dataAbsentReason - $.component[4].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.4..dataAbsentReason - $.component[5].dataAbsentReason ${EMPTY} 422 This property must be an Object, not a primitive property Observation.component.5..dataAbsentReason + $.component[0].dataAbsentReason.coding missing 422 + $.component[1].dataAbsentReason.coding missing 422 + $.component[2].dataAbsentReason.coding missing 422 + $.component[3].dataAbsentReason.coding missing 422 + $.component[4].dataAbsentReason.coding missing 422 + $.component[5].dataAbsentReason.coding missing 422 + $.component[0].dataAbsentReason ${EMPTY} 422 + $.component[1].dataAbsentReason ${EMPTY} 422 + $.component[2].dataAbsentReason ${EMPTY} 422 + $.component[3].dataAbsentReason ${EMPTY} 422 + $.component[4].dataAbsentReason ${EMPTY} 422 + $.component[5].dataAbsentReason ${EMPTY} 422 # invalid system - $.component[0].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason.coding[0].system missing 422 Index 0 out of bounds for length 0 - $.component[0].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.0..dataAbsentReason.coding.0..system - $.component[1].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.1..dataAbsentReason.coding.0..system - $.component[2].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.2..dataAbsentReason.coding.0..system - $.component[3].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.3..dataAbsentReason.coding.0..system - $.component[4].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.4..dataAbsentReason.coding.0..system - $.component[5].dataAbsentReason.coding[0].system ${EMPTY} 422 @value cannot be empty Observation.component.5..dataAbsentReason.coding.0..system - $.component[0].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.0..dataAbsentReason.coding.0. - $.component[1].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.1..dataAbsentReason.coding.0. - $.component[2].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.2..dataAbsentReason.coding.0. - $.component[3].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.3..dataAbsentReason.coding.0. - $.component[4].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.4..dataAbsentReason.coding.0. - $.component[5].dataAbsentReason.coding[0].system ${randstring} 422 Coding.system must be an absolute reference, not a local reference Observation.component.5..dataAbsentReason.coding.0. - $.component[0].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..dataAbsentReason.coding.0..system - $.component[1].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..dataAbsentReason.coding.0..system - $.component[2].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..dataAbsentReason.coding.0..system - $.component[3].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..dataAbsentReason.coding.0..system - $.component[4].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..dataAbsentReason.coding.0..system - $.component[5].dataAbsentReason.coding[0].system ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..dataAbsentReason.coding.0..system - $.component[0].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason.coding[0].system http://foobar.de 422 Index 0 out of bounds for length 0 + $.component[0].dataAbsentReason.coding[0].system missing 422 + $.component[1].dataAbsentReason.coding[0].system missing 422 + $.component[2].dataAbsentReason.coding[0].system missing 422 + $.component[3].dataAbsentReason.coding[0].system missing 422 + $.component[4].dataAbsentReason.coding[0].system missing 422 + $.component[5].dataAbsentReason.coding[0].system missing 422 + $.component[0].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[1].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[2].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[3].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[4].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[5].dataAbsentReason.coding[0].system ${EMPTY} 422 + $.component[0].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[1].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[2].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[3].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[4].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[5].dataAbsentReason.coding[0].system ${randstring} 422 + $.component[0].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[1].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[2].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[3].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[4].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[5].dataAbsentReason.coding[0].system ${randinteger} 422 + $.component[0].dataAbsentReason.coding[0].system http://foobar.de 422 + $.component[1].dataAbsentReason.coding[0].system http://foobar.de 422 + $.component[2].dataAbsentReason.coding[0].system http://foobar.de 422 + $.component[3].dataAbsentReason.coding[0].system http://foobar.de 422 + $.component[4].dataAbsentReason.coding[0].system http://foobar.de 422 + $.component[5].dataAbsentReason.coding[0].system http://foobar.de 422 # invalid code - $.component[0].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason.coding[0].code missing 422 Index 0 out of bounds for length 0 - $.component[0].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.0..dataAbsentReason.coding.0..code - $.component[1].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.1..dataAbsentReason.coding.0..code - $.component[2].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.2..dataAbsentReason.coding.0..code - $.component[3].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.3..dataAbsentReason.coding.0..code - $.component[4].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.4..dataAbsentReason.coding.0..code - $.component[5].dataAbsentReason.coding[0].code ${EMPTY} 422 @value cannot be empty Observation.component.5..dataAbsentReason.coding.0..code - $.component[0].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[1].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[2].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[3].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[4].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[5].dataAbsentReason.coding[0].code ${randstring} 422 Index 0 out of bounds for length 0 - $.component[0].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..dataAbsentReason.coding.0..code - $.component[1].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..dataAbsentReason.coding.0..code - $.component[2].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..dataAbsentReason.coding.0..code - $.component[3].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..dataAbsentReason.coding.0..code - $.component[4].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..dataAbsentReason.coding.0..code - $.component[5].dataAbsentReason.coding[0].code ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..dataAbsentReason.coding.0..code + $.component[0].dataAbsentReason.coding[0].code missing 422 + $.component[1].dataAbsentReason.coding[0].code missing 422 + $.component[2].dataAbsentReason.coding[0].code missing 422 + $.component[3].dataAbsentReason.coding[0].code missing 422 + $.component[4].dataAbsentReason.coding[0].code missing 422 + $.component[5].dataAbsentReason.coding[0].code missing 422 + $.component[0].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[1].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[2].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[3].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[4].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[5].dataAbsentReason.coding[0].code ${EMPTY} 422 + $.component[0].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[1].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[2].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[3].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[4].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[5].dataAbsentReason.coding[0].code ${randstring} 422 + $.component[0].dataAbsentReason.coding[0].code ${randinteger} 422 + $.component[1].dataAbsentReason.coding[0].code ${randinteger} 422 + $.component[2].dataAbsentReason.coding[0].code ${randinteger} 422 + $.component[3].dataAbsentReason.coding[0].code ${randinteger} 422 + $.component[4].dataAbsentReason.coding[0].code ${randinteger} 422 + $.component[5].dataAbsentReason.coding[0].code ${randinteger} 422 # invalid display - $.component[0].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.0..dataAbsentReason.coding.0..display - $.component[1].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.1..dataAbsentReason.coding.0..display - $.component[2].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.2..dataAbsentReason.coding.0..display - $.component[3].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.3..dataAbsentReason.coding.0..display - $.component[4].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.4..dataAbsentReason.coding.0..display - $.component[5].dataAbsentReason.coding[0].display ${EMPTY} 422 @value cannot be empty Observation.component.5..dataAbsentReason.coding.0..display - $.component[0].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..dataAbsentReason.coding.0..display - $.component[1].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..dataAbsentReason.coding.0..display - $.component[2].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..dataAbsentReason.coding.0..display - $.component[3].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..dataAbsentReason.coding.0..display - $.component[4].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..dataAbsentReason.coding.0..display - $.component[5].dataAbsentReason.coding[0].display ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..dataAbsentReason.coding.0..display + $.component[0].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[1].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[2].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[3].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[4].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[5].dataAbsentReason.coding[0].display ${EMPTY} 422 + $.component[0].dataAbsentReason.coding[0].display ${randinteger} 422 + $.component[1].dataAbsentReason.coding[0].display ${randinteger} 422 + $.component[2].dataAbsentReason.coding[0].display ${randinteger} 422 + $.component[3].dataAbsentReason.coding[0].display ${randinteger} 422 + $.component[4].dataAbsentReason.coding[0].display ${randinteger} 422 + $.component[5].dataAbsentReason.coding[0].display ${randinteger} 422 # invalid text - $.component[0].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.0..dataAbsentReason.text - $.component[1].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.1..dataAbsentReason.text - $.component[2].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.2..dataAbsentReason.text - $.component[3].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.3..dataAbsentReason.text - $.component[4].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.4..dataAbsentReason.text - $.component[5].dataAbsentReason.text ${EMPTY} 422 @value cannot be empty Observation.component.5..dataAbsentReason.text - $.component[0].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.0..dataAbsentReason.text - $.component[1].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.1..dataAbsentReason.text - $.component[2].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.2..dataAbsentReason.text - $.component[3].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.3..dataAbsentReason.text - $.component[4].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.4..dataAbsentReason.text - $.component[5].dataAbsentReason.text ${randinteger} 422 Error parsing JSON: the primitive value must be a string Observation.component.5..dataAbsentReason.text - - -018 Create Sofa Score (invalid multi) + $.component[0].dataAbsentReason.text ${EMPTY} 422 + $.component[1].dataAbsentReason.text ${EMPTY} 422 + $.component[2].dataAbsentReason.text ${EMPTY} 422 + $.component[3].dataAbsentReason.text ${EMPTY} 422 + $.component[4].dataAbsentReason.text ${EMPTY} 422 + $.component[5].dataAbsentReason.text ${EMPTY} 422 + $.component[0].dataAbsentReason.text ${randinteger} 422 + $.component[1].dataAbsentReason.text ${randinteger} 422 + $.component[2].dataAbsentReason.text ${randinteger} 422 + $.component[3].dataAbsentReason.text ${randinteger} 422 + $.component[4].dataAbsentReason.text ${randinteger} 422 + $.component[5].dataAbsentReason.text ${randinteger} 422 + + +017 Create Sofa Score (invalid multi) [Documentation] 1. *CREATE* new an EHR record\n\n ... 2. *LOAD* _create-sofa-score.json_\n\n ... 3. *UPDATE* values for attributes \n\n @@ -895,49 +878,49 @@ ${randinteger} ${12345} ... 6. *VALIDATE* outcome against diagnostic text (english + german) [Tags] multi [Template] create sofa score JSON -#| resourceType | ID | meta | status | category | code | subject | DateTime | component | R.-Code | diagnostics | location -#| | | available | profile | | available | codingavailable | system | code | available | coding available | 0.system | 0.code | 0.display | available | Identifier-value | | available | 0 code | 0 code coding | 0 system | 0 code | 0 valueCodableConcept | 0 vCC coding | vCC 0 system | vCC 0 Code | | ENG | +#| resourceType | ID | meta | status | category | code | subject | DateTime | component | R.-Code | +#| | | available | profile | | available | codingavailable | system | code | available | coding available | 0.system | 0.code | 0.display | available | Identifier-value | | available | 0 code | 0 code coding | 0 system | 0 code | 0 valueCodableConcept | 0 vCC coding | vCC 0 system | vCC 0 Code | | # all attributes invalid for component - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${EMPTY} ${EMPTY} true true ${EMPTY} ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..coding.0..code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${1234} test true true ${1234} test 422 Error parsing JSON: the primitive value must be a string Observation.component.0..value.x..coding.0..system - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true http://google.com ${EMPTY} true true http://google.com ${EMPTY} 422 ele-1: All FHIR elements must have a @value or children .hasValue.. or .children...count.. > id.count.... Observation.component.0..value.ofType.CodeableConcept..coding.0..code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true missing ${EMPTY} true true missing ${EMPTY} 422 @value cannot be empty Observation.component.0..value.ofType.CodeableConcept..coding.0..code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${1234} missing true true ${1234} missing 422 Error parsing JSON: the primitive value must be a string Observation.component.0..value.x..coding.0..system + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${EMPTY} ${EMPTY} true true ${EMPTY} ${EMPTY} 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${1234} test true true ${1234} test 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true http://google.com ${EMPTY} true true http://google.com ${EMPTY} 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true missing ${EMPTY} true true missing ${EMPTY} 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${1234} missing true true ${1234} missing 422 # all attributes invalid for code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true false ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 Observation.code.coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${EMPTY} ${EMPTY} ${EMPTY} true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 @value cannot be empty Observation.code.coding.0..display - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true http://google.com ${12345} missing true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 Observation.code.coding:sofaScore: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true test missing ${12345} true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 Coding.system must be an absolute reference, not a local reference Observation.code.coding.0. - Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true missing test test1234 true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 A code with no system has no defined meaning. A system should be provided Observation.code.coding.0. + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true false ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true ${EMPTY} ${EMPTY} ${EMPTY} true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true http://google.com ${12345} missing true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true test missing ${12345} true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${category-url} survey true true missing test test1234 true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 # all attributes invalid for category - Observation sofa-score true ${sofa_score-url} final true true http://google.com test true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 Observation.category.coding:survey: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.category.0. - Observation sofa-score true ${sofa_score-url} final true true missing ${EMPTY} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 @value cannot be empty Observation.category.0..coding.0..code - Observation sofa-score true ${sofa_score-url} final true true ${EMPTY} ${12345} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 @value cannot be empty Observation.category.0..coding.0..system - Observation sofa-score true ${sofa_score-url} final true true ${12345} missing true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 Error parsing JSON: the primitive value must be a string Observation.category.0..coding.0..system - Observation sofa-score true ${sofa_score-url} final true true test ${EMPTY} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 @value cannot be empty Observation.category.0..coding.0..code + Observation sofa-score true ${sofa_score-url} final true true http://google.com test true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true missing ${EMPTY} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${EMPTY} ${12345} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true ${12345} missing true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 + Observation sofa-score true ${sofa_score-url} final true true test ${EMPTY} true true ${code-url} 06 sofa score true valid 2020-02-25 true true true ${sofa_score-url2} resp true true ${sofa_score-url2} resp3 422 # mix invalid attributes - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.code.coding.0..display - ${1234} sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 This does not appear to be a FHIR resource .unknown name '1234'. 1234 - Observation ${1234} true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.id - Observation sofa-score false ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.category.0..coding.0..code - Observation sofa-score true ${1234} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Profile reference '1234' could not be resolved, so has not been checked Observation.meta.profile.0. - Observation sofa-score true ${sofa_score-url} ${1234} true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.status - Observation sofa-score true ${sofa_score-url} final false true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.code.coding.0..system - Observation sofa-score true ${sofa_score-url} final true false ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Object must have some content Observation.category.0. - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} false true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.code: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.code.coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} false valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.subject: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true test 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.code.coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid ${12345} true true true ${1234} ${1234} true true ${1234} ${1234} 422 Not a valid date/time .12345. Observation.effective.ofType.dateTime. - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 false true true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.code.coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.code - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true false true ${1234} ${1234} true true ${1234} ${1234} 422 Observation.code.coding: minimum required = 1, but only found 0 .from ${sofa_score-url}. Observation.component.0. - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true false ${1234} ${1234} true true ${1234} ${1234} 422 Error parsing JSON: the primitive value must be a string Observation.category.0..coding.0..code - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} false true ${1234} ${1234} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0. - Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true false ${1234} ${1234} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0. + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + ${1234} sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation ${1234} true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score false ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${1234} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} ${1234} true true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final false true ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true false ${1234} ${1234} true true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} false true ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true true ${1234} ${1234} ${1234} false valid 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true test 2020-02-25 true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid ${12345} true true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 false true true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true false true ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true false ${1234} ${1234} true true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} false true ${1234} ${1234} 422 + Observation sofa-score true ${sofa_score-url} final true true ${1234} ${1234} true false ${1234} ${1234} ${1234} true valid 2020-02-25 true true true ${1234} ${1234} true false ${1234} ${1234} 422 #-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -962,13 +945,13 @@ BUG TRACE 03 Create Sofa Score (Invalid/Missing 'component' for Array value 0) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 0 code coding system - $.component[0].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[0].code.coding[0].system http://foobar.de 422 #invalid component 0 code coding code - $.component[0].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0..code.coding.0. + $.component[0].code.coding[0].code ${randstring} 422 #invalid component 0 valueCodableConcept coding code - $.component[0].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.0..value.ofType.CodeableConcept..coding.0. + $.component[0].valueCodeableConcept.coding[0].code ${randstring} 422 BUG TRACE 04 Create Sofa Score (Invalid/Missing 'component' for Array value 1) @@ -977,13 +960,13 @@ BUG TRACE 04 Create Sofa Score (Invalid/Missing 'component' for Array value 1) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 1 code coding system - $.component[1].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[1].code.coding[0].system http://foobar.de 422 #invalid component 1 code coding code - $.component[1].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.1..code.coding.0. + $.component[1].code.coding[0].code ${randstring} 422 #invalid component 1 valueCodableConcept coding code - $.component[1].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.1..value.ofType.CodeableConcept..coding.0. + $.component[1].valueCodeableConcept.coding[0].code ${randstring} 422 BUG TRACE 05 Create Sofa Score (Invalid/Missing 'component' for Array value 2) @@ -992,13 +975,13 @@ BUG TRACE 05 Create Sofa Score (Invalid/Missing 'component' for Array value 2) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 2 code coding system - $.component[2].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[2].code.coding[0].system http://foobar.de 422 #invalid component 2 code coding code - $.component[2].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.2..code.coding.0. + $.component[2].code.coding[0].code ${randstring} 422 #invalid component 2 valueCodableConcept coding code - $.component[2].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.2..value.ofType.CodeableConcept..coding.0. + $.component[2].valueCodeableConcept.coding[0].code ${randstring} 422 BUG TRACE 06 Create Sofa Score (Invalid/Missing 'component' for Array value 3) @@ -1007,13 +990,13 @@ BUG TRACE 06 Create Sofa Score (Invalid/Missing 'component' for Array value 3) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 3 code coding system - $.component[3].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[3].code.coding[0].system http://foobar.de 422 #invalid component 3 code coding code - $.component[3].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.3..code.coding.0. + $.component[3].code.coding[0].code ${randstring} 422 #invalid component 3 valueCodableConcept coding code - $.component[3].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.3..value.ofType.CodeableConcept..coding.0. + $.component[3].valueCodeableConcept.coding[0].code ${randstring} 422 BUG TRACE 07 Create Sofa Score (Invalid/Missing 'component' for Array value 4) @@ -1022,13 +1005,13 @@ BUG TRACE 07 Create Sofa Score (Invalid/Missing 'component' for Array value 4) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 4 code coding system - $.component[4].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[4].code.coding[0].system http://foobar.de 422 #invalid component 4 code coding code - $.component[4].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.4..code.coding.0. + $.component[4].code.coding[0].code ${randstring} 422 #invalid component 4 valueCodableConcept coding code - $.component[4].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.4..value.ofType.CodeableConcept..coding.0. + $.component[4].valueCodeableConcept.coding[0].code ${randstring} 422 BUG TRACE 08 Create Sofa Score (Invalid/Missing 'component' for Array value 5) @@ -1037,13 +1020,13 @@ BUG TRACE 08 Create Sofa Score (Invalid/Missing 'component' for Array value 5) [Tags] valueCodeableConcept not-ready not-ready_bug #invalid component 5 code coding system - $.component[5].code.coding[0].system http://foobar.de 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component + $.component[5].code.coding[0].system http://foobar.de 422 #invalid component 5 code coding code - $.component[5].code.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.5..code.coding.0. + $.component[5].code.coding[0].code ${randstring} 422 #invalid component 5 valueCodableConcept coding code - $.component[5].valueCodeableConcept.coding[0].code ${randstring} 422 This element does not match any known slice defined in the profile ${sofa_score-url} Observation.component.5..value.ofType.CodeableConcept..coding.0. + $.component[5].valueCodeableConcept.coding[0].code ${randstring} 422 #-------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -1063,27 +1046,21 @@ BUG TRACE 08 Create Sofa Score (Invalid/Missing 'component' for Array value 5) create sofa score with ehr reference [Arguments] ${json_path} ${value} ${http_status_code} - ... ${error_message} ${location}=${None} ehr.create new ehr 000_ehr_status.json ${payload}= generate payload from example json ${json_path} ${value} observation.POST /Observation Sofa Score ${payload} - observation.validate response - 422 (with error message) ${http_status_code} - ... ${error_message} - ... ${location} + observation.validate response - 422 (w/o error message) ${http_status_code} create sofa score w/o ehr reference [Arguments] ${json_path} ${value} ${http_status_code} - ... ${error_message} ${location}=${None} ${fake_ehr_ref}= Evaluate str(uuid.uuid4()) uuid Set Test Variable ${subject_id} ${fake_ehr_ref} ${payload}= generate payload from example json ${json_path} ${value} observation.POST /Observation Sofa Score ${payload} - observation.validate response - 422 (with error message) ${http_status_code} - ... ${error_message} - ... ${location} + observation.validate response - 422 (w/o error message) ${http_status_code} generate payload from example json @@ -1112,8 +1089,7 @@ create sofa score JSON ... ${code0code} ${code0display} ${subject} ${subjectvalue} ... ${effectivedatetime} ${componentavailabe} ${componentCodeavailable} ${componentCodeCodingavailable} ... ${ComponentC0System} ${ComponentC0Code} ${componentvCCavailable} ${componentvCCCodingavailable} - ... ${ComponentvCC0System} ${ComponentvCC0Code} ${http_status_code} ${error_message} - ... ${location} + ... ${ComponentvCC0System} ${ComponentvCC0Code} ${http_status_code} prepare new request session Prefer=return=representation @@ -1131,7 +1107,7 @@ create sofa score JSON ... update Component ${componentavailabe} ${componentCodeavailable} ${componentCodeCodingavailable} ${ComponentC0System} ${ComponentC0Code} ${componentvCCavailable} ${componentvCCCodingavailable} ${ComponentvCC0System} ${ComponentvCC0Code} AND ... POST ${BASE_URL}/Observation body=${payload} AND ... Output Debug Info To Console AND - ... observation.validate response - 422 (with error message) ${http_status_code} ${error_message} ${location} + ... observation.validate response - 422 (w/o error message) ${http_status_code} generate payload from example json with data absentreason @@ -1168,29 +1144,10 @@ generate payload from example json with data absentreason create sofa score with ehr reference AND data absentreason - [Arguments] ${json_path} ${value} ${http_status_code} - ... ${error_message} ${location}=${None} + [Arguments] ${json_path} ${value} ${http_status_code} ehr.create new ehr 000_ehr_status.json ${payload}= generate payload from example json with data absentreason ${json_path} ${value} observation.POST /Observation Sofa Score ${payload} - observation.validate response - 422 (with error message) ${http_status_code} - ... ${error_message} - ... ${location} - - -create with DataAbsentReason - [Arguments] ${fhir_resource_name} ${example_json} - - ${dict_componentdataabsentreason} Create Dictionary dataAbsentReason=${{ {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", "code": "unknown", "display": "unknown"}], "text": "SOFA Score"} }} + observation.validate response - 422 (w/o error message) ${http_status_code} - ${payload} Load JSON From File ${DATA_SET_PATH_OBSERVATION}/${example_json} - Update Value To Json ${payload} $.subject.identifier.value ${subject_id} - Add Object To Json ${payload} $.component[0] ${dict_componentdataabsentreason} - Add Object To Json ${payload} $.component[1] ${dict_componentdataabsentreason} - Add Object To Json ${payload} $.component[2] ${dict_componentdataabsentreason} - Add Object To Json ${payload} $.component[3] ${dict_componentdataabsentreason} - Add Object To Json ${payload} $.component[4] ${dict_componentdataabsentreason} - Add Object To Json ${payload} $.component[5] ${dict_componentdataabsentreason} - Output Debug Info To Console ${payload} - POST /Observation ${fhir_resource_name} ${payload} \ No newline at end of file diff --git a/tests/robot/_resources/keywords/observation.robot b/tests/robot/_resources/keywords/observation.robot index 94c6942d1..f99f1b982 100644 --- a/tests/robot/_resources/keywords/observation.robot +++ b/tests/robot/_resources/keywords/observation.robot @@ -180,8 +180,8 @@ create observation lab create sofa score - [Arguments] ${example_json} - POST /Observation with ehr reference Sofa Score ${example_json} + [Arguments] ${text} ${example_json} + POST /Observation with ehr reference ${text} ${example_json} create observation