Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blue Button client: Verification of FHIR R4 EOB data from Blue Button indicates 2 missing fields #23

Open
ccorley opened this issue Nov 2, 2021 · 2 comments

Comments

@ccorley
Copy link

ccorley commented Nov 2, 2021

When sending data to LinuxForHealth connect using the Blue Button client, verification of ExplanationOfBenefit data indicates 2 missing fields in each EOB instance in the Bundle returned from CMS Blue Button. The result is an HTTP 500 error and the following error is seen in the LFH connect trace log:

2021-11-01 19:12:07,976 - connect.workflows.core - TRACE - FhirWorkflow error: incoming error = 20 validation errors for Bundle
entry -> 0 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 0 -> resource -> provider
  field required (type=value_error.missing)
entry -> 1 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 1 -> resource -> provider
  field required (type=value_error.missing)
entry -> 2 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 2 -> resource -> provider
  field required (type=value_error.missing)
entry -> 3 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 3 -> resource -> provider
  field required (type=value_error.missing)
entry -> 4 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 4 -> resource -> provider
  field required (type=value_error.missing)
entry -> 5 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 5 -> resource -> provider
  field required (type=value_error.missing)
entry -> 6 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 6 -> resource -> provider
  field required (type=value_error.missing)
entry -> 7 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 7 -> resource -> provider
  field required (type=value_error.missing)
entry -> 8 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 8 -> resource -> provider
  field required (type=value_error.missing)
entry -> 9 -> resource -> insurance -> 0 -> __root__ -> focal
  field required (type=value_error.missing)
entry -> 9 -> resource -> provider
  field required (type=value_error.missing)
2021-11-01 19:12:08,043 - connect.clients.kafka - TRACE - Produced record to topic LFH_EXCEPTION partition [0] @ offset 4
@ccorley
Copy link
Author

ccorley commented Nov 2, 2021

A PR was created here: CMSgov/beneficiary-fhir-data#804
and was reported via the Blue Button dev google group: https://groups.google.com/g/Developer-group-for-cms-blue-button-api

@ccorley
Copy link
Author

ccorley commented Nov 2, 2021

Excerpts from http://hl7.org/fhir/us/carin-bb/STU1.1/StructureDefinition-C4BB-ExplanationOfBenefit-Professional-NonClinician.profile.json.html that support the fact that ExplanationOfBenefit.provider and ExplanationOfBenefit.insurance.focal are required:

{
      "id" : "ExplanationOfBenefit.provider",
      "path" : "ExplanationOfBenefit.provider",
      "short" : "Party responsible for the claim",
      "definition" : "The provider which is responsible for the claim, predetermination or preauthorization.",
      "comment" : "The identifier assigned to the Billing Provider. (94)",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "ExplanationOfBenefit.provider",
        "min" : 1,
        "max" : "1"
      },
      "type" : [
        {
          "code" : "Reference",
          "targetProfile" : [
            "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Organization",
            "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Practitioner"
          ]
        }
      ],
      "constraint" : [
        {
          "key" : "ele-1",
          "severity" : "error",
          "human" : "All FHIR elements must have a @value or children",
          "expression" : "hasValue() or (children().count() > id.count())",
          "xpath" : "@value|f:*|h:div",
          "source" : "http://hl7.org/fhir/StructureDefinition/Element"
        }
      ],
      "mustSupport" : true,
      "isModifier" : false,
      "isSummary" : true,
      "mapping" : [
        {
          "identity" : "w5",
          "map" : "FiveWs.source"
        }
      ]
    },
    {
      "id" : "ExplanationOfBenefit.insurance.focal",
      "path" : "ExplanationOfBenefit.insurance.focal",
      "short" : "Coverage to be used for adjudication",
      "definition" : "A flag to indicate that this Coverage is to be used for adjudication of this claim when set to true.",
      "comment" : "A patient may (will) have multiple insurance policies which provide reimbursement for healthcare services and products. For example, a person may also be covered by their spouse's policy and both appear in the list (and may be from the same insurer). This flag will be set to true for only one of the listed policies and that policy will be used for adjudicating this claim. Other claims would be created to request adjudication against the other listed policies. An invariant is defined to enforce the following rule:  Will have multiple occurrences on secondary / tertiary, etc. claims.  Up to one occurrence, that of the ExplanationOfBenefit.insurer, will have a boolean value = 'True'",
      "requirements" : "To identify which coverage in the list is being used to adjudicate this claim.",
      "min" : 1,
      "max" : "1",
      "base" : {
        "path" : "ExplanationOfBenefit.insurance.focal",
        "min" : 1,
        "max" : "1"
      },
      "type" : [
        {
          "code" : "boolean"
        }
      ],
      "constraint" : [
        {
          "key" : "ele-1",
          "severity" : "error",
          "human" : "All FHIR elements must have a @value or children",
          "expression" : "hasValue() or (children().count() > id.count())",
          "xpath" : "@value|f:*|h:div",
          "source" : "http://hl7.org/fhir/StructureDefinition/Element"
        }
      ],
      "mustSupport" : true,
      "isModifier" : false,
      "isSummary" : true
    },

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

No branches or pull requests

1 participant