3164 updating code review points (#3165)
* 3164 updating code review points * 3164 updating code review points Co-authored-by: leif stawnyczy <leifstawnyczy@leifs-MacBook-Pro.local>
This commit is contained in:
parent
1487e03037
commit
1478abac3a
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
type: fix
|
type: fix
|
||||||
issue: 3153
|
issue: 3153
|
||||||
|
jira: SMILE-3289
|
||||||
title: "Updated UnknownCodeSystemWarningValidationSupport to allow the throwing of warnings if
|
title: "Updated UnknownCodeSystemWarningValidationSupport to allow the throwing of warnings if
|
||||||
configured to do so."
|
configured to do so."
|
||||||
|
|
|
@ -161,6 +161,20 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Observation createObservationForUnknownCodeSystemTest() {
|
||||||
|
Observation obs = new Observation();
|
||||||
|
obs.getMeta().addProfile("http://sd");
|
||||||
|
obs.getText().setDivAsString("<div>Hello</div>");
|
||||||
|
obs.getText().setStatus(Narrative.NarrativeStatus.GENERATED);
|
||||||
|
obs.getCategoryFirstRep().addCoding().setSystem("http://terminology.hl7.org/CodeSystem/observation-category").setCode("vital-signs");
|
||||||
|
obs.getCode().setText("hello");
|
||||||
|
obs.setSubject(new Reference("Patient/123"));
|
||||||
|
obs.addPerformer(new Reference("Practitioner/123"));
|
||||||
|
obs.setEffective(DateTimeType.now());
|
||||||
|
obs.setStatus(ObservationStatus.FINAL);
|
||||||
|
return obs;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* By default, an unknown code system should fail validation
|
* By default, an unknown code system should fail validation
|
||||||
*/
|
*/
|
||||||
|
@ -171,6 +185,32 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
|
||||||
|
|
||||||
createStructureDefWithBindingToUnknownCs();
|
createStructureDefWithBindingToUnknownCs();
|
||||||
|
|
||||||
|
Observation obs = createObservationForUnknownCodeSystemTest();
|
||||||
|
|
||||||
|
OperationOutcome oo;
|
||||||
|
String encoded;
|
||||||
|
|
||||||
|
// Valid code
|
||||||
|
obs.setValue(new Quantity().setSystem("http://cs").setCode("code1").setValue(123));
|
||||||
|
oo = validateAndReturnOutcome(obs);
|
||||||
|
encoded = encode(oo);
|
||||||
|
ourLog.info(encoded);
|
||||||
|
assertTrue(oo.getIssueFirstRep().getDiagnostics().contains("No issues detected during validation"));
|
||||||
|
|
||||||
|
// Invalid code
|
||||||
|
obs.setValue(new Quantity().setSystem("http://cs").setCode("code99").setValue(123));
|
||||||
|
oo = validateAndReturnOutcome(obs);
|
||||||
|
encoded = encode(oo);
|
||||||
|
ourLog.info(encoded);
|
||||||
|
assertTrue(oo.getIssueFirstRep().getDiagnostics().contains("No issues detected during validation"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidateCodeInValueSetWithUnknownCodeSystem_Error() {
|
||||||
|
myUnknownCodeSystemWarningValidationSupport.setNonExistentCodeSystemSeverity(IValidationSupport.IssueSeverity.ERROR);
|
||||||
|
|
||||||
|
createStructureDefWithBindingToUnknownCs();
|
||||||
|
|
||||||
Observation obs = new Observation();
|
Observation obs = new Observation();
|
||||||
obs.getMeta().addProfile("http://sd");
|
obs.getMeta().addProfile("http://sd");
|
||||||
obs.getText().setDivAsString("<div>Hello</div>");
|
obs.getText().setDivAsString("<div>Hello</div>");
|
||||||
|
@ -192,13 +232,15 @@ public class FhirResourceDaoR4ValidateTest extends BaseJpaR4Test {
|
||||||
ourLog.info(encoded);
|
ourLog.info(encoded);
|
||||||
assertTrue(oo.getIssueFirstRep().getDiagnostics().contains("No issues detected during validation"));
|
assertTrue(oo.getIssueFirstRep().getDiagnostics().contains("No issues detected during validation"));
|
||||||
|
|
||||||
|
|
||||||
// Invalid code
|
// Invalid code
|
||||||
obs.setValue(new Quantity().setSystem("http://cs").setCode("code99").setValue(123));
|
obs.setValue(new Quantity().setSystem("http://cs").setCode("code99").setValue(123));
|
||||||
oo = validateAndReturnOutcome(obs);
|
oo = validateAndReturnOutcome(obs);
|
||||||
encoded = encode(oo);
|
encoded = encode(oo);
|
||||||
ourLog.info(encoded);
|
ourLog.info(encoded);
|
||||||
assertTrue(oo.getIssueFirstRep().getDiagnostics().contains("No issues detected during validation"));
|
assertTrue(oo.getIssueFirstRep()
|
||||||
|
.getDiagnostics().contains("The code provided (http://cs#code99) is not in the value set http://vs, and a code from this value set is required: Unknown code 'http://cs#code99' for in-memory expansion of ValueSet 'http://vs'")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createStructureDefWithBindingToUnknownCs() {
|
public void createStructureDefWithBindingToUnknownCs() {
|
||||||
|
|
|
@ -45,12 +45,15 @@ public class UnknownCodeSystemWarningValidationSupport extends BaseValidationSup
|
||||||
@Override
|
@Override
|
||||||
public CodeValidationResult validateCode(ValidationSupportContext theValidationSupportContext, ConceptValidationOptions theOptions, String theCodeSystem, String theCode, String theDisplay, String theValueSetUrl) {
|
public CodeValidationResult validateCode(ValidationSupportContext theValidationSupportContext, ConceptValidationOptions theOptions, String theCodeSystem, String theCode, String theDisplay, String theValueSetUrl) {
|
||||||
// filters out error/fatal
|
// filters out error/fatal
|
||||||
|
// NB: this is a secondary check. isCodeSystemSupported
|
||||||
|
// should prevent this from ever calling validate code here
|
||||||
|
// ... but should it ever get called, we'll return null
|
||||||
if (!canValidateCodeSystem(theValidationSupportContext, theCodeSystem)) {
|
if (!canValidateCodeSystem(theValidationSupportContext, theCodeSystem)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeValidationResult result = new CodeValidationResult()
|
CodeValidationResult result = new CodeValidationResult()
|
||||||
.setSeverity(myNonExistentCodeSystemSeverity); // will be warning or info
|
.setSeverity(myNonExistentCodeSystemSeverity); // will be warning or info (error/fatal filtered out above)
|
||||||
|
|
||||||
result.setMessage("No issues detected during validation");
|
result.setMessage("No issues detected during validation");
|
||||||
|
|
||||||
|
@ -89,15 +92,22 @@ public class UnknownCodeSystemWarningValidationSupport extends BaseValidationSup
|
||||||
case ERROR:
|
case ERROR:
|
||||||
case FATAL:
|
case FATAL:
|
||||||
return false;
|
return false;
|
||||||
|
case WARNING:
|
||||||
|
case INFORMATION:
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
ourLog.info("Unknown issue severity " + myNonExistentCodeSystemSeverity.name()
|
ourLog.info("Unknown issue severity " + myNonExistentCodeSystemSeverity.name()
|
||||||
+ ". Treating as INFO/WARNING");
|
+ ". Treating as INFO/WARNING");
|
||||||
case WARNING:
|
|
||||||
case INFORMATION:
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if the code system can (and should) be validated.
|
||||||
|
* @param theValidationSupportContext
|
||||||
|
* @param theCodeSystem
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private boolean canValidateCodeSystem(ValidationSupportContext theValidationSupportContext,
|
private boolean canValidateCodeSystem(ValidationSupportContext theValidationSupportContext,
|
||||||
String theCodeSystem) {
|
String theCodeSystem) {
|
||||||
if (!allowNonExistentCodeSystems()) {
|
if (!allowNonExistentCodeSystems()) {
|
||||||
|
|
Loading…
Reference in New Issue