Skip to content

FQM-313, FQM-314: Unresolved patient and unresolved coverage tests#113

Merged
karlnaden merged 6 commits into
mainfrom
fqm-313-no-member-found
Jun 23, 2026
Merged

FQM-313, FQM-314: Unresolved patient and unresolved coverage tests#113
karlnaden merged 6 commits into
mainfrom
fqm-313-no-member-found

Conversation

@tstrass

@tstrass tstrass commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

This adds a test to the group for specific coverage info responses that checks that the server responds with not-covered coverage with no-member-found reason code when it cannot resolve the patient. In order to force a scenario where the server should not be able to resolve the patient, the test modifies all Patient ids and identifiers and Patient references. The biggest question here is whether we think that's sufficient to force the desired scenario, or if we think servers will fallback to any other data elements or contextual information to resolve the patient.
EDIT: the question has been answered. I removed all request modifcation, because we can't confidently make any assertions about how the server resolves patients.

I also included a preset value for the request body which already contains the made-up Patient contains a made-up Patient.

The new server group will not pass against the client suite without using a custom tester-provided response template. I could investigate the feasibility of updating the simulated server logic to account for the unresolved patient scenario, but opted not to for now.

***UPDATE:***

I added FQM-314 to this PR, because it's extremely similar to FQM-313 and they share code. FQM-314 adds a group for specific coverage info responses that checks that the server responds with not-covered coverage with coverage-not-found or no-active-coverage reason code when it cannot resolve to a single coverage.

Testing Guidance

Run the server suite against client suite, using the order-sign group and the usual suite presets.

  • As noted above, if you run server suite against client suite with the presets as is, the new group will fail because the simulated server will respond with covered
    - If you don't want to rely on the preset and isolate testing to the request modification, you can copy the first hook request body from the regular order-sign group preset.
  • FQM-313: The new server suite group should pass if you change the client suite input for "Response generation approach for order-sign" to "Generate response based on a tester-provided template", and use this value:
{
  "cards": [],
  "systemActions": [
    {
      "type": "update",
      "description": "Added no-member-found coverage information to the draft order.",
      "resource": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "covered",
                "valueCode": "not-covered"
              },
              {
                "url": "reason",
                "valueCodeableConcept": {
                  "coding": [
                    {
                      "system": "http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp",
                      "code": "no-member-found"
                    }
                  ],
                  "text": "No member was found for the submitted patient."
                }
              },
              {
                "url": "date",
                "valueDate": "{{today()}}"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "inferno-no-member-found"
              }
            ]
          }
        ]
      },
      "extension": {
        "com.inferno.resourceSelectionCriteria": "context.draftOrders.entry.resource"
      }
    }
  ]
}
  • FQM-314: The new server suite group should pass if you change the client suite input for "Response generation approach for order-sign" to "Generate response based on a tester-provided template", and use this value:
{
  "cards": [],
  "systemActions": [
    {
      "type": "update",
      "description": "Add unresolved coverage information to the submitted order.",
      "resource": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/crd221-demo-unmatched-coverage"
                }
              },
              {
                "url": "covered",
                "valueCode": "not-covered"
              },
              {
                "url": "reason",
                "valueCodeableConcept": {
                  "coding": [
                    {
                      "code": "coverage-not-found"
                    }
                  ]
                }
              }
            ]
          }
        ]
      },
      "extension": {
        "com.inferno.resourceSelectionCriteria": "context.draftOrders.entry.resource"
      }
    }
  ]
}

Anticipated Provider-side Test Impact

None

@tstrass tstrass requested review from Jammjammjamm and arscan June 16, 2026 22:00
@tstrass tstrass self-assigned this Jun 16, 2026
@tstrass

tstrass commented Jun 16, 2026

Copy link
Copy Markdown
Contributor Author

Base branch to be updated to main once #109 is merged

@tstrass tstrass requested a review from Jammjammjamm June 17, 2026 15:55

@Jammjammjamm Jammjammjamm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is good, but it (and the upcoming one for resp-45) should use a custom invoke hook job that only makes a single hook request and doesn't do all of the special case requests.

It override the perform method exactly like the custom job in #109. That custom job could then inherit from this one to add the other change it needs.

@tstrass tstrass force-pushed the fqm-313-no-member-found branch from 6c2a6aa to 960f5fa Compare June 18, 2026 16:14
@tstrass tstrass changed the base branch from fqm-312-technical-failure-code to main June 18, 2026 16:14
@tstrass tstrass requested a review from Jammjammjamm June 18, 2026 16:16
@tstrass tstrass changed the title FQM-313: Unresolved patient test FQM-313, FQM-314: Unresolved patient and unresolved coverage tests Jun 18, 2026
@tstrass

tstrass commented Jun 19, 2026

Copy link
Copy Markdown
Contributor Author

@Jammjammjamm I separated out coverage-not-found and no-active-coverage into separate groups as discussed. In the process I decided to reduce duplication by refactoring the specific coverage response groups to use a single configurable test, including the technical issues group

@arscan arscan marked this pull request as ready for review June 22, 2026 17:55
@tstrass

tstrass commented Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

Docs update: e5d626a

@tstrass tstrass force-pushed the fqm-313-no-member-found branch from 5040ed9 to 43cba75 Compare June 23, 2026 16:49
@tstrass

tstrass commented Jun 23, 2026

Copy link
Copy Markdown
Contributor Author

@karlnaden rebased

@karlnaden karlnaden merged commit 30ef77e into main Jun 23, 2026
4 checks passed
@tstrass tstrass deleted the fqm-313-no-member-found branch June 23, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants