use of com.nedap.archie.rm.datavalues.DvCodedText in project openEHR_SDK by ehrbase.
the class DvCodedTextTest method testFailOnError_Enabled.
@Test
void testFailOnError_Enabled() throws Exception {
var validationSupport = new FhirTerminologyValidation("https://wrong.terminology.server/fhir");
var codePhrase = new CodePhrase(new TerminologyId("http://hl7.org/fhir/observation-status"), "B");
var dvCodedText = new DvCodedText("Buccal", codePhrase);
var validator = new DvCodedTextValidator(validationSupport);
var node = parseNode("/webtemplate_nodes/dv_codedtext_fhir_valueset.json");
assertThrows(ExternalTerminologyValidationException.class, () -> validator.validate(dvCodedText, node));
}
use of com.nedap.archie.rm.datavalues.DvCodedText in project openEHR_SDK by ehrbase.
the class DvCodedTextTest method testValidate.
@Test
void testValidate() throws Exception {
var validator = new DvCodedTextValidator();
var node = parseNode("/webtemplate_nodes/dv_codedtext.json");
var dvCodedText = new DvCodedText("First", new CodePhrase(new TerminologyId("local"), "at0028"));
var result = validator.validate(dvCodedText, node);
assertTrue(result.isEmpty());
dvCodedText = new DvCodedText("Test", new CodePhrase(new TerminologyId("local"), "at0028"));
result = validator.validate(dvCodedText, node);
assertEquals(1, result.size());
dvCodedText = new DvCodedText("First", new CodePhrase(new TerminologyId("local"), "at0029"));
result = validator.validate(dvCodedText, node);
assertEquals(1, result.size());
}
use of com.nedap.archie.rm.datavalues.DvCodedText in project openEHR_SDK by ehrbase.
the class DvCodedTextTest method testValidate_FhirCodeSystem_WrongTerminologyId.
@Test
void testValidate_FhirCodeSystem_WrongTerminologyId() throws Exception {
var codePhrase = new CodePhrase(new TerminologyId("http://hl7.org/fhir/name-use"), "usual");
// Mockito initialization
Mockito.when(fhirTerminologyValidationMock.supports("//fhir.hl7.org/CodeSystem?url=http://hl7.org/fhir/observation-status")).thenReturn(true);
Mockito.doThrow(new ConstraintViolationException(List.of(new ConstraintViolation("/test/dv_coded_text_fhir_value_set", "The terminology http://hl7.org/fhir/name-use must be http://hl7.org/fhir/observation-status")))).when(fhirTerminologyValidationMock).validate("/test/dv_coded_text_fhir_code_system", "//fhir.hl7.org/CodeSystem?url=http://hl7.org/fhir/observation-status", codePhrase);
var validator = new DvCodedTextValidator(fhirTerminologyValidationMock);
var node = parseNode("/webtemplate_nodes/dv_codedtext_fhir_codesystem.json");
var result = validator.validate(new DvCodedText("Usual", codePhrase), node);
assertEquals(1, result.size());
}
use of com.nedap.archie.rm.datavalues.DvCodedText in project openEHR_SDK by ehrbase.
the class DvCodedTextTest method testValidate_FhirValueSet.
@Test
void testValidate_FhirValueSet() throws Exception {
var codePhrase = new CodePhrase(new TerminologyId("http://terminology.hl7.org/CodeSystem/v3-EntityNameUseR2"), "UKN");
// Mockito initialization
Mockito.when(fhirTerminologyValidationMock.supports("//fhir.hl7.org/ValueSet/$expand?url=http://terminology.hl7.org/ValueSet/v3-EntityNameUseR2")).thenReturn(true);
Mockito.doNothing().when(fhirTerminologyValidationMock).validate("/test/dv_coded_text_fhir_value_set", "//fhir.hl7.org/ValueSet/$expand?url=http://terminology.hl7.org/ValueSet/v3-EntityNameUseR2", codePhrase);
var validator = new DvCodedTextValidator(fhirTerminologyValidationMock);
var node = parseNode("/webtemplate_nodes/dv_codedtext_fhir_valueset.json");
var result = validator.validate(new DvCodedText("Anonymous", codePhrase), node);
assertTrue(result.isEmpty());
}
use of com.nedap.archie.rm.datavalues.DvCodedText in project openEHR_SDK by ehrbase.
the class DvCodedTextValidator method validateInternalCode.
private List<ConstraintViolation> validateInternalCode(String aqlPath, DvCodedText dvCodedText, WebTemplateInput input) {
List<ConstraintViolation> result = new ArrayList<>();
var definingCode = dvCodedText.getDefiningCode();
if (input.getTerminology() != null && !Objects.equals(input.getTerminology(), definingCode.getTerminologyId().getValue())) {
result.add(new ConstraintViolation(aqlPath, MessageFormat.format("CodePhrase terminology does not match, expected: {0}, found: {1}", input.getTerminology(), definingCode.getTerminologyId().getValue())));
}
if (WebTemplateValidationUtils.hasList(input)) {
var matching = input.getList().stream().filter(inputValue -> Objects.equals(inputValue.getValue(), definingCode.getCodeString())).findFirst();
if (matching.isEmpty()) {
result.add(new ConstraintViolation(aqlPath, MessageFormat.format("CodePhrase codeString does not match any option, found: {0}", definingCode.getCodeString())));
} else {
if (!matching.get().getLabel().equals(dvCodedText.getValue())) {
result.add(new ConstraintViolation(aqlPath, MessageFormat.format("CodePhrase codeString does not match any option, found: {0}", definingCode.getCodeString())));
}
}
}
return result;
}
Aggregations