Skip to content

Workflow library alpha02 crashes when PlanDefinition has an .action.condition? #1733

Closed

Description

Describe the bug
I am able to generate a care plan using a minimal Plan Definition. When I add a condition to the plan definition, the app crashes instead with

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.hl7.fhir.r4.model.Base.isResource()' on a null object reference
at org.hl7.fhir.r4.utils.FHIRPathEngine.evaluate(FHIRPathEngine.java:525)
at org.hl7.fhir.r4.hapi.fluentpath.FhirPathR4.evaluate(FhirPathR4.java:31)
at org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor.evaluateConditionOrDynamicValue(PlanDefinitionProcessor.java:568)
at org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor.meetsConditions(PlanDefinitionProcessor.java:458)
at org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor.resolveAction(PlanDefinitionProcessor.java:174)
at org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor.resolveActions(PlanDefinitionProcessor.java:161)
at org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor.apply(PlanDefinitionProcessor.java:136)
at com.google.android.fhir.workflow.FhirOperator.generateCarePlan(FhirOperator.kt:241)
at com.example.enginetest.MainActivity$onCreate$1.invokeSuspend(MainActivity.kt:117)

Component
Workflow Library

To Reproduce
See https://github.com/williamito/fhir-engine-test/blob/main/app/src/main/java/com/example/enginetest/MainActivity.kt

It works with

{
  "resourceType": "PlanDefinition",
  "id": "Test-PlanDefinition",
  "status": "active",
  "action": [
    {
      "definitionCanonical": "http://example.org/ActivityDefinition/ADTest"
    }
 ]
}

And crashes with

{
  "resourceType": "PlanDefinition",
  "id": "Test-PlanDefinitionCondition",
  "status": "active",
  "action": [
    {
      "condition": [
        {
          "kind": "applicability",
          "expression": {
            "language": "text/fhirpath",
            "expression": "true"
          }
        }
      ],
      "definitionCanonical": "http://example.org/ActivityDefinition/ADTest"
    }
 ]
}

I also tried variations of "language": "text/cql" and got a similar crash from the CQL libraries complaining about a missing resource.

Expected behavior
Trivial condition evaluates to true and care plan is generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Labels

P1High priority issuetype:bugSomething isn't working

Type

No type

Projects

  • Status

    Complete

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions