Skip to content

Commit

Permalink
Fix db-serialising issue with date-time dv_order attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanspiska authored Feb 3, 2022
1 parent 59ecfe2 commit f4c6447
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 29 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Note: version releases in the 0.x.y range may introduce breaking changes.
- Fix issue in AQL regarding LIMIT and OFFSET (https://github.com/ehrbase/openEHR_SDK/pull/296)
- Fix issue while unmarshalling FLAT composition that contains ELEMENT with children DV_CODED_TEXT and DV_TEXT (https://github.com/ehrbase/openEHR_SDK/pull/300)
- Fix missing 'type' attribute in ExternalRef encoding (https://github.com/ehrbase/openEHR_SDK/pull/303)
-
- Fix db-serialising: date-time dv_order attributes (https://github.com/ehrbase/openEHR_SDK/pull/314)
## 1.16.0

### Added
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.nedap.archie.rm.datavalues.quantity.datetime.DvDateTime;
import org.apache.commons.collections4.CollectionUtils;

import java.io.IOException;
import java.time.format.DateTimeFormatter;
Expand Down Expand Up @@ -49,15 +51,43 @@ public void serialize(DvDateTime dvDateTime, JsonGenerator jsonGenerator, Serial
toJson(jsonGenerator, dvDateTime);
}

@Override
public void serializeWithType(DvDateTime dvDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider, TypeSerializer typeSer) throws IOException {
toJson(jsonGenerator, dvDateTime);
}
@Override
public void serializeWithType(
DvDateTime dvDateTime,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider,
TypeSerializer typeSer)
throws IOException {
toJson(jsonGenerator, dvDateTime);
}

private void toJson(JsonGenerator jsonGenerator, DvDateTime dvDateTime) throws IOException {

ObjectMapper mapper = (ObjectMapper) jsonGenerator.getCodec();

private void toJson(JsonGenerator jsonGenerator, DvDateTime dvDateTime) throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("_type", "DV_DATE_TIME");
jsonGenerator.writeStringField("value", ISO_8601_DATE_TIME.format(dvDateTime.getValue()));
jsonGenerator.writeEndObject();
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("_type", "DV_DATE_TIME");
jsonGenerator.writeStringField("value", ISO_8601_DATE_TIME.format(dvDateTime.getValue()));
if (dvDateTime.getNormalStatus() != null) {
jsonGenerator.writeFieldName("normal_status");
jsonGenerator.writeRawValue(mapper.writeValueAsString(dvDateTime.getNormalStatus()));
}
if (dvDateTime.getNormalRange() != null) {
jsonGenerator.writeFieldName("normal_range");
jsonGenerator.writeRawValue(mapper.writeValueAsString(dvDateTime.getNormalRange()));
}
if (!CollectionUtils.isEmpty(dvDateTime.getOtherReferenceRanges())) {
jsonGenerator.writeFieldName("other_reference_ranges");
jsonGenerator.writeRawValue(mapper.writeValueAsString(dvDateTime.getOtherReferenceRanges()));
}
if (dvDateTime.getMagnitudeStatus() != null) {
jsonGenerator.writeFieldName("magnitude_status");
jsonGenerator.writeRawValue(mapper.writeValueAsString(dvDateTime.getMagnitudeStatus()));
}
if (dvDateTime.getNormalStatus() != null) {
jsonGenerator.writeFieldName("accuracy");
jsonGenerator.writeRawValue(mapper.writeValueAsString(dvDateTime.getAccuracy()));
}
jsonGenerator.writeEndObject();
}
}
5 changes: 4 additions & 1 deletion serialisation_conformance_test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration combine.self="override">
<argLine>${surefireArgLine}</argLine>
<dependenciesToScan>com.github.better-care:web-template-tests</dependenciesToScan>
<includes combine.self="override">
<include>AnySomeConstrainedTest</include>
Expand Down Expand Up @@ -91,6 +91,9 @@
<include>WebTemplateContentTest.java</include>
<include>WorkflowIdTestOverwrite</include>
<include>XdsBuilderTest</include>
<include>DbConformanceTest</include>
<include>DbConformanceTest</include>
<include>FlatConformanceTest</include>
</includes>
</configuration>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,24 +68,6 @@ private static List<Arguments> testRoundTripArguments(){
"/content[openEHR-EHR-SECTION.conformance_section.v0, 1]/items[openEHR-EHR-OBSERVATION.conformance_observation.v0, 1]/data[at0001]/events[at0002, 1]/data[at0003]/items[at0018, 1]/value/normal_range/interval"
}));
break;
case EHRBASE_CONFORMANCE_DATA_TYPES_DV_DATE_TIME:
arguments.add(
Arguments.of(
test,
new String[] {},
new String[] {
// see https://jira.vitagroup.ag/browse/CDR-213
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time|magnitude_status, value: ~",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time|normal_status, value: N",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_accuracy, value: P2DT9H52M",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_normal_range/lower, value: 2022-01-12T13:22:34.000868+01:00",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_normal_range/upper, value: 2022-02-12T13:22:34.000868+01:00",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_other_reference_ranges:0/lower, value: 2022-02-12T13:22:34.000868+01:00",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_other_reference_ranges:0/upper, value: 2022-03-12T13:22:34.000868+01:00",
"Extra path: conformance-ehrbase.de.v0/conformance_section/conformance_observation/any_event:0/dv_date_time/_other_reference_ranges:0/meaning, value: high"
},
new String[] {}));
break;
case EHRBASE_CONFORMANCE_ELEMENT_NULL_FLAVOR:
arguments.add(
Arguments.of(
Expand Down

0 comments on commit f4c6447

Please sign in to comment.