use of com.nedap.archie.rm.composition.Composition in project openEHR_SDK by ehrbase.
the class UnflattenerTest method testUnflattenEpsiode.
@Test
public void testUnflattenEpsiode() {
EpisodeOfCareComposition episode = buildEpisodeOfCareComposition();
Unflattener cut = new Unflattener(new TestDataTemplateProvider());
Composition actual = (Composition) cut.unflatten(episode);
assertThat(actual).isNotNull();
assertThat(actual.getContent()).size().isEqualTo(1);
AdminEntry actualAdminEntry = (AdminEntry) actual.getContent().get(0);
List<Object> identifiers = actualAdminEntry.itemsAtPath("/data[at0001]/items[at0002]/value");
assertThat(identifiers).extracting(i -> ((DvIdentifier) i).getId()).containsExactlyInAnyOrder("123", "456");
List<Object> uris = actualAdminEntry.itemsAtPath("/data[at0001]/items[at0013]/value");
assertThat(uris).extracting(u -> ((DvURI) u).getValue()).containsExactlyInAnyOrder(URI.create("https://github.com/ehrbase"));
}
use of com.nedap.archie.rm.composition.Composition in project openEHR_SDK by ehrbase.
the class UnflattenerTest method testUnflattenAltEvent.
@Test
public void testUnflattenAltEvent() {
AlternativeEventsComposition alternativeEventsComposition = buildAlternativeEventsComposition();
Unflattener cut = new Unflattener(new TestDataTemplateProvider());
Composition actual = (Composition) cut.unflatten(alternativeEventsComposition);
assertThat(actual).isNotNull();
assertThat(actual.getContent()).size().isEqualTo(1);
Observation actualObservation = (Observation) actual.getContent().get(0);
assertThat(actualObservation.getData().getEvents()).size().isEqualTo(3);
assertThat(actualObservation.getData().getEvents()).extracting(e -> (Class) e.getClass()).containsExactlyInAnyOrder(PointEvent.class, PointEvent.class, IntervalEvent.class);
List<PointEvent> pointEvents = actualObservation.getData().getEvents().stream().filter(e -> PointEvent.class.isAssignableFrom(e.getClass())).map(e -> (PointEvent) e).collect(Collectors.toList());
assertThat(pointEvents).extracting(p -> p.getTime().getValue(), p -> ((DvQuantity) ((Element) p.getData().getItems().get(0)).getValue()).getMagnitude(), p -> ((DvQuantity) ((Element) p.getData().getItems().get(0)).getValue()).getUnits()).containsExactlyInAnyOrder(new Tuple(OffsetDateTime.of(1990, 11, 02, 12, 00, 00, 00, ZoneOffset.UTC), 30d, "kg"), new Tuple(OffsetDateTime.of(2013, 11, 02, 12, 00, 00, 00, ZoneOffset.UTC), 55d, "kg"));
List<IntervalEvent> intervalEvents = actualObservation.getData().getEvents().stream().filter(e -> IntervalEvent.class.isAssignableFrom(e.getClass())).map(e -> (IntervalEvent) e).collect(Collectors.toList());
assertThat(intervalEvents).extracting(p -> p.getTime().getValue(), p -> ((DvQuantity) ((Element) p.getData().getItems().get(0)).getValue()).getMagnitude(), p -> ((DvQuantity) ((Element) p.getData().getItems().get(0)).getValue()).getUnits(), p -> p.getMathFunction().getValue(), p -> p.getWidth().getValue()).containsExactlyInAnyOrder(new Tuple(OffsetDateTime.of(2015, 11, 02, 12, 00, 00, 00, ZoneOffset.UTC), 60d, "kg", "mean", Duration.ofDays(30)));
}
use of com.nedap.archie.rm.composition.Composition in project openEHR_SDK by ehrbase.
the class UnflattenerTest method testUnflattenEhrbaseBloodPressureSimpleDeV0.
@Test
public void testUnflattenEhrbaseBloodPressureSimpleDeV0() {
Unflattener cut = new Unflattener(new TestDataTemplateProvider());
EhrbaseBloodPressureSimpleDeV0Composition dto = buildEhrbaseBloodPressureSimpleDeV0();
Composition rmObject = (Composition) cut.unflatten(dto);
assertThat(rmObject).isNotNull();
assertThat(rmObject.getContext().getParticipations()).extracting(p -> ((PartyIdentified) p.getPerformer()).getName(), p -> p.getFunction().getValue()).containsExactlyInAnyOrder(new Tuple("Test", "Pos1"), new Tuple("Test2", "Pos2"));
assertThat(rmObject.getLanguage()).extracting(CodePhrase::getCodeString, c -> c.getTerminologyId().getValue()).containsExactly("de", "ISO_639-1");
assertThat(rmObject.getArchetypeDetails().getTemplateId().getValue()).isEqualTo("ehrbase_blood_pressure_simple.de.v0");
assertThat(rmObject.itemAtPath("/context/start_time/value")).isEqualTo(dto.getStartTimeValue());
List<Object> observationList = rmObject.itemsAtPath("/content[openEHR-EHR-OBSERVATION.sample_blood_pressure.v1]");
assertThat(observationList).size().isEqualTo(1);
Observation observation = (Observation) observationList.get(0);
DvCodedText expected = new DvCodedText("Fifth sound", new CodePhrase(new TerminologyId("local"), "at1012"));
assertThat(observation.itemAtPath("/protocol[at0011]/items[at1010]/value")).isEqualTo(expected);
assertThat(observation.getSubject()).isNotNull().extracting(Object::getClass).isEqualTo(PartySelf.class);
}
use of com.nedap.archie.rm.composition.Composition in project openEHR_SDK by ehrbase.
the class NormalizerTest method normalize.
@Test
public void normalize() throws IOException, XmlException {
OPERATIONALTEMPLATE template = TemplateDocument.Factory.parse(OperationalTemplateTestData.ALL_TYPES.getStream()).getTemplate();
OptSkeletonBuilder skeletonBuilder = new OptSkeletonBuilder();
RMObject rmObject = skeletonBuilder.generate(template);
Normalizer cut = new Normalizer();
Composition actual = (Composition) cut.normalize(rmObject);
assertThat(actual).isNotNull();
assertThat(actual.getContent()).size().isEqualTo(0);
}
use of com.nedap.archie.rm.composition.Composition in project openEHR_SDK by ehrbase.
the class DefaultRestAqlEndpoint method extractValue.
private Object extractValue(String valueAsString, Class<?> aClass) throws com.fasterxml.jackson.core.JsonProcessingException {
Object object;
if (StringUtils.isBlank(valueAsString) || "null".equals(valueAsString)) {
object = null;
} else if (aClass.isAnnotationPresent(Entity.class)) {
RMObject locatable = AQL_OBJECT_MAPPER.readValue(valueAsString, RMObject.class);
object = new Flattener(defaultRestClient.getTemplateProvider()).flatten(locatable, aClass);
if (locatable instanceof Composition) {
Flattener.addVersion(object, new VersionUid(((Composition) locatable).getUid().getValue()));
}
} else if (EnumValueSet.class.isAssignableFrom(aClass)) {
RMObject rmObject = AQL_OBJECT_MAPPER.readValue(valueAsString, RMObject.class);
final String codeString;
if (CodePhrase.class.isAssignableFrom(rmObject.getClass())) {
codeString = ((CodePhrase) rmObject).getCodeString();
} else {
codeString = ((DvCodedText) rmObject).getDefiningCode().getCodeString();
}
object = Arrays.stream(aClass.getEnumConstants()).map(e -> (EnumValueSet) e).filter(e -> e.getCode().equals(codeString)).findAny().orElseThrow(() -> new ClientException(String.format("Unknown code %s for %s", codeString, aClass.getSimpleName())));
} else {
object = AQL_OBJECT_MAPPER.readValue(valueAsString, aClass);
}
return object;
}
Aggregations