0

运行代码时出现以下异常:

     FhirContext ctx = FhirContext.forR4();

    // Create a FhirInstanceValidator and register it to a validator
    FhirValidator validator = ctx.newValidator();
    FhirInstanceValidator instanceValidator = new FhirInstanceValidator();
    validator.registerValidatorModule(instanceValidator);

    /*
     * If you want, you can configure settings on the validator to adjust
     * its behaviour during validation
     */
    instanceValidator.setAnyExtensionsAllowed(true);
    // input is Patient resource in String https://www.hl7.org/fhir/patient-example.json.html 
    ValidationResult result = validator.validateWithResult(input); 

我正在使用 Hapi 库来验证资源(如果我没记错的话,这是一个患者资源https://www.hl7.org/fhir/patient-example.json.html)。我已将此 Patient Json 存储在一个字符串中并尝试验证其:

1:结构-> 我认为使用 Parse Validation 可以实现,我也这样做了。2:基数 -> 我创建了两个“active:true”Json 键值对,认为它会引发基数错误,但 SchemxxxValidator / ParseValidator / InstanceValidator 都不起作用。...

如何根据此处列出的属性验证资源https://www.hl7.org/fhir/validation.html(结构、基数、ValueDomains ...),我是否必须使用所有三种方法,即 Parser 、 FhirInstanceValidator 和 SchemaBaseValidator / SchematronBaseValidator 。

请帮助,因为我是 FHIR 的新手,请原谅蹩脚的问题。

15:58| INFO | VersionUtil.java 72 | HAPI FHIR version 4.1.0 - Rev 03163c2cf5
15:58| INFO | FhirContext.java 174 | Creating new FHIR context for FHIR version [R4]
15:58| INFO | DefaultProfileValidationSupport.java 227 | Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-resources.xml
15:58| INFO | DependencyLogImpl.java 75 | FHIR XML procesing will use StAX implementation 'Woodstox' version '5.1.0'
15:58| INFO | DefaultProfileValidationSupport.java 227 | Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-types.xml
15:58| INFO | DefaultProfileValidationSupport.java 227 | Loading structure definitions from classpath: /org/hl7/fhir/r4/model/profile/profiles-others.xml
15:58| INFO | DefaultProfileValidationSupport.java 227 | Loading structure definitions from classpath: /org/hl7/fhir/r4/model/extension/extension-definitions.xml
15:58| ERROR | FhirInstanceValidator.java 222 | Failure during validation
java.lang.UnsupportedOperationException
    at org.hl7.fhir.r4.hapi.ctx.HapiWorkerContext.generateSnapshot(HapiWorkerContext.java:242)
    at org.hl7.fhir.r4.elementmodel.ParserBase.getDefinition(ParserBase.java:122)
    at org.hl7.fhir.r4.elementmodel.JsonParser.parse(JsonParser.java:123)
    at org.hl7.fhir.r4.validation.InstanceValidator.validate(InstanceValidator.java:539)
    at org.hl7.fhir.r4.validation.InstanceValidator.validate(InstanceValidator.java:531)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validate(FhirInstanceValidator.java:220)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validate(FhirInstanceValidator.java:242)
    at org.hl7.fhir.r4.hapi.validation.BaseValidatorBridge.doValidate(BaseValidatorBridge.java:20)
    at org.hl7.fhir.r4.hapi.validation.BaseValidatorBridge.validateResource(BaseValidatorBridge.java:43)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validateResource(FhirInstanceValidator.java:33)
    at ca.uhn.fhir.validation.FhirValidator.validateWithResult(FhirValidator.java:243)
    at ca.uhn.fhir.validation.FhirValidator.validateWithResult(FhirValidator.java:198)
    at com.json.schema.validator.InstanceValidatorEx.instanceValidator(InstanceValidatorEx.java:223)
    at com.json.schema.validator.InstanceValidatorEx.main(InstanceValidatorEx.java:191)
Exception in thread "main" ca.uhn.fhir.rest.server.exceptions.InternalErrorException: Unexpected failure while validating resource
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validate(FhirInstanceValidator.java:223)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validate(FhirInstanceValidator.java:242)
    at org.hl7.fhir.r4.hapi.validation.BaseValidatorBridge.doValidate(BaseValidatorBridge.java:20)
    at org.hl7.fhir.r4.hapi.validation.BaseValidatorBridge.validateResource(BaseValidatorBridge.java:43)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validateResource(FhirInstanceValidator.java:33)
    at ca.uhn.fhir.validation.FhirValidator.validateWithResult(FhirValidator.java:243)
    at ca.uhn.fhir.validation.FhirValidator.validateWithResult(FhirValidator.java:198)
    at com.json.schema.validator.InstanceValidatorEx.instanceValidator(InstanceValidatorEx.java:223)
    at com.json.schema.validator.InstanceValidatorEx.main(InstanceValidatorEx.java:191)
Caused by: java.lang.UnsupportedOperationException
    at org.hl7.fhir.r4.hapi.ctx.HapiWorkerContext.generateSnapshot(HapiWorkerContext.java:242)
    at org.hl7.fhir.r4.elementmodel.ParserBase.getDefinition(ParserBase.java:122)
    at org.hl7.fhir.r4.elementmodel.JsonParser.parse(JsonParser.java:123)
    at org.hl7.fhir.r4.validation.InstanceValidator.validate(InstanceValidator.java:539)
    at org.hl7.fhir.r4.validation.InstanceValidator.validate(InstanceValidator.java:531)
    at org.hl7.fhir.r4.hapi.validation.FhirInstanceValidator.validate(FhirInstanceValidator.java:220)
4

1 回答 1

1

基数-> 我创建了两个“active:true”Json 键值对,认为它会引发基数错误,但 SchemxxxValidator / ParseValidator / InstanceValidator 都不起作用。...

这是 HAPI 中的一个问题——它验证从 JSON 加载的对象,并且 JSON 解析器静默删除重复的属性键。如果您直接使用验证器,则不会发生这种情况。我相信这将在某个阶段得到解决

生成快照失败

这是一个真正的问题 - 我不确定为什么没有设置,但如果没有生成快照,验证器将无法工作

于 2019-12-06T18:51:39.670 回答