use of org.ehrbase.client.aql.record.Record4 in project openEHR_SDK by ehrbase.
the class CoronaTestIT method testCorona.
@Test
@Ignore("see https://github.com/ehrbase/project_management/issues/376")
public void testCorona() throws IOException {
ehr = openEhrClient.ehrEndpoint().createEhr();
Composition composition = new CanonicalJson().unmarshal(IOUtils.toString(CompositionTestDataCanonicalJson.CORONA.getStream(), StandardCharsets.UTF_8), Composition.class);
Flattener flattener = new Flattener(new TestDataTemplateProvider());
CoronaAnamneseComposition coronaAnamneseComposition = flattener.flatten(composition, CoronaAnamneseComposition.class);
openEhrClient.compositionEndpoint(ehr).mergeCompositionEntity(coronaAnamneseComposition);
assertThat(openEhrClient.compositionEndpoint(ehr).find(coronaAnamneseComposition.getVersionUid().getUuid(), CoronaAnamneseComposition.class)).isNotNull();
CoronaAnamneseCompositionContainment coronaAnamneseCompositionContainment = CoronaAnamneseCompositionContainment.getInstance();
SymptomeSectionContainment symptomeSectionContainment = SymptomeSectionContainment.getInstance();
HustenObservationContainment hustenObservationContainment = HustenObservationContainment.getInstance();
FieberOderErhohteKorpertemperaturObservationContainment fieberOderErhohteKorpertemperaturObservationContainment = FieberOderErhohteKorpertemperaturObservationContainment.getInstance();
HeiserkeitObservationContainment heiserkeitObservationContainment = HeiserkeitObservationContainment.getInstance();
ContainmentExpression containmentExpression = coronaAnamneseCompositionContainment.contains(symptomeSectionContainment).contains(hustenObservationContainment.and(fieberOderErhohteKorpertemperaturObservationContainment).and(heiserkeitObservationContainment));
EntityQuery<Record4<VorhandenDefiningCode, VorhandenDefiningCode, VorhandenDefiningCode, Language>> entityQuery = Query.buildEntityQuery(containmentExpression, hustenObservationContainment.VORHANDEN_DEFINING_CODE, fieberOderErhohteKorpertemperaturObservationContainment.VORHANDEN_DEFINING_CODE, heiserkeitObservationContainment.VORHANDEN_DEFINING_CODE, coronaAnamneseCompositionContainment.LANGUAGE);
Parameter<UUID> ehrIdParameter = entityQuery.buildParameter();
entityQuery.where(Condition.equal(EhrFields.EHR_ID(), ehrIdParameter));
/*
Select
o0/data[at0001]/events[at0002]/data[at0003]/items[at0022]/items[at0005]/value/defining_Code as F0,
o1/data[at0001]/events[at0002]/data[at0003]/items[at0022]/items[at0005]/value/defining_Code as F1,
o2/data[at0001]/events[at0002]/data[at0003]/items[at0022]/items[at0005]/value/defining_Code as F2,
c3/language as F3
from EHR e
contains ( COMPOSITION c3[openEHR-EHR-COMPOSITION.report.v1] contains
SECTION s4[openEHR-EHR-SECTION.adhoc.v1] contains
(
(OBSERVATION o0[openEHR-EHR-OBSERVATION.symptom_sign_screening.v0]
and
OBSERVATION o1[openEHR-EHR-OBSERVATION.symptom_sign_screening.v0])
and
OBSERVATION o2[openEHR-EHR-OBSERVATION.symptom_sign_screening.v0])
)
where e/ehr_id/value = $parm0
*/
List<Record4<VorhandenDefiningCode, VorhandenDefiningCode, VorhandenDefiningCode, Language>> actual = openEhrClient.aqlEndpoint().execute(entityQuery, ehrIdParameter.setValue(ehr));
assertThat(actual).extracting(Record4::value1, Record4::value2, Record4::value3, Record4::value4).containsExactlyInAnyOrder(new Tuple(VorhandenDefiningCode.VORHANDEN, VorhandenDefiningCode.VORHANDEN, VorhandenDefiningCode.NICHT_VORHANDEN, Language.DE));
}
Aggregations