Steps to reproduce (this is the how I found about this issue; it probably can be reproduced directly by FhirEtl and for any other resource type that has a missing extension not just QuestionnaireResponse):
Upload a QuestionnaireResponse resource to the source FHIR server with some extensions that are not US-core
Replace the resourceList line in application.yamlhere with
The following exception is thrown; note this only happens when structureDefinitionsClasspath: "/r4-us-core-definitions" is set (which is by default in the above application.yaml). Instead of throwing NPE, we should gracefully handle this case and communicate the issue more clearly:
Caused by: java.lang.NullPointerException: Cannot invoke "org.hl7.fhir.r4.model.StructureDefinition.getSnapshot()" because "this.structureDefinition" is null
at com.cerner.bunsen.definitions.r4.R4StructureDefinitions$StructureDefinitionWrapper.getSnapshotDefinitions(R4StructureDefinitions.java:71)
at com.cerner.bunsen.definitions.StructureDefinitions.extensionElementToFields(StructureDefinitions.java:166)
at com.cerner.bunsen.definitions.StructureDefinitions.elementToFields(StructureDefinitions.java:279)
at com.cerner.bunsen.definitions.StructureDefinitions.transformChildren(StructureDefinitions.java:423)
at com.cerner.bunsen.definitions.StructureDefinitions.elementToFields(StructureDefinitions.java:345)
at com.cerner.bunsen.definitions.StructureDefinitions.transformChildren(StructureDefinitions.java:423)
at com.cerner.bunsen.definitions.StructureDefinitions.transformRoot(StructureDefinitions.java:583)
at com.cerner.bunsen.definitions.StructureDefinitions.transform(StructureDefinitions.java:517)
at com.cerner.bunsen.avro.AvroConverter.visitResource(AvroConverter.java:69)
at com.cerner.bunsen.avro.AvroConverter.forResource(AvroConverter.java:182)
at com.cerner.bunsen.avro.AvroConverter.forResources(AvroConverter.java:157)
at com.google.fhir.analytics.AvroConversionUtil.getConverter(AvroConversionUtil.java:170)
at com.google.fhir.analytics.AvroConversionUtil.getResourceSchema(AvroConversionUtil.java:202)
at com.google.fhir.analytics.ParquetUtil.createWriter(ParquetUtil.java:161)
at com.google.fhir.analytics.ParquetUtil.write(ParquetUtil.java:176)
at com.google.fhir.analytics.ParquetUtil.writeRecords(ParquetUtil.java:217)
at com.google.fhir.analytics.FetchSearchPageFn.processBundle(FetchSearchPageFn.java:246)
at com.google.fhir.analytics.FetchSearchPageFn.processBundle(FetchSearchPageFn.java:237)
at com.google.fhir.analytics.FetchResources$SearchFn.processElement(FetchResources.java:144)
Steps to reproduce (this is the how I found about this issue; it probably can be reproduced directly by
FhirEtl
and for any other resource type that has a missingextension
not justQuestionnaireResponse
):Upload a
QuestionnaireResponse
resource to the source FHIR server with some extensions that are not US-coreReplace the
resourceList
line inapplication.yaml
here withThen run the controller and do a "Run Full"
The following exception is thrown; note this only happens when
structureDefinitionsClasspath: "/r4-us-core-definitions"
is set (which is by default in the aboveapplication.yaml
). Instead of throwing NPE, we should gracefully handle this case and communicate the issue more clearly: