Huamana Hero
Mark Lorenz
Mark Lorenz
400
20

Humana'sPatientAccessAPIs

In this post:

  • Humana's patient access and interoperability APIs (as required by CMS 9115-F)
  • Building a tool to compare drug prices with insurance and without.
  • Something so close that it triggers my anxiety.

Humana is the most [technologically] forward thinking of the health insurance companies - an email I received prior from writing this post. (No, it wasn't from someone at Humana.)

This is a really nice looking developer's website - me, looking at the Humana API docs.

This is just like Blue Button 2.0, very easy to use! - also me.

Sorry folks, nothing to see here. Humana has done a great job complying with the CMS' 9115-F Interoperability and Patient Access rule.

Wait a minute, why are there twelve hundred more words in this post then? Mark wouldn't waste my time unless there WAS something to see here" - you, just now, as you read this.

Comparing cash-discount to insurance for drug prices.

The last post, "If I Ran a Health Plan" was a look into some of the cool things that could be built to help patients now that the CMS 9115-F rules are in effect and (most) payers have made their APIs available. I want to do a sequel that highlights Humana's APIs.

Wouldn't it be interesting to build a way for you to do a claim-by-claim comparison of what you paid out of pocket (with insurance) for drug costs against the prices that are available with a cash discount card? I have a really nice commercial insurance plan and I've saved a few hundred dollars in 2021 just by checking for myself.

Here's an example:

Some fluocinolone acetonide oil (0.01%, 20ml) for psoriasis was $135 with my insurance, but available with a cash discount for $34. Yes, $100 more expensive to use my insurance. After this claim I went back to the pharmacy and asked them to re-bill the claim on the ScriptHero card, saving myself ~$100 by not using my insurance.

Comparing my Aetna plan with a ScriptHero discount.

Disclaimer: I previously worked on the ScriptHero team.

This use case should be very feasible with the new patient access APIs. Actually, there's a section of the final rule that discusses it at length:

Comment: Several commenters were concerned with the appropriateness of sharing certain claims information, particularly specific costs such as negotiated rates that commenters believed could reveal trade secrets or be considered proprietary information. These commenters requested CMS ensure that confidential, proprietary cost information is excluded from the proposed requirements[1]

.

Response: We appreciate the commenters' concerns, however we reiterate that we are committed to giving patients access to their health information, and we believe the benefits [...] outweigh these concerns. It is critical for patients to better understand health care costs and be able to plan and budget as well as possible. Having cost information, which is already accessible to patients, available to them in a more easy-to-understand presentation would allow patients to get the maximum benefit from this information. Appreciating patients already have access to this information and understanding the possibility for secondary uses of such data, we are finalizing the policy as proposed to require plans to share adjudicated claims, including provider remittances and enrollee cost-sharing information, via the FHIR-based Patient Access API so patients can continue to access this information in ways that will be most useful to them. We reiterate, however, that we do not have the authority to directly regulate third-party apps.[2].

Great! Here's what we'll do:

  1. Get the member's Explanation of Benefits (EOB) from Humana's API
  2. Extract the pharmacy claims (drug NDC, quantity, and geography)
  3. Run each claim through a cash discounting API like the ScriptHero API
  4. ... and finally in the words of CMS, "better understand health care costs and be able to plan and budget as well as possible."

Steps 1 and 2: Getting pharmacy claims from the Humana API

Authorizing with OAuth and getting the EOB worked exactly like you'd expect (which is, just like Blue Button 2.0) Here's a snippet of a pharmacy claim:

"type": {
    "text": "Pharmacy"
  },
  "provider": {
    "identifier": {
      "system": "http://hl7.org/fhir/sid/us-npi",
      "value": "5650737928"
    },
    "display": "Irving White"
  },
  "prescription": {
    "identifier": {
      "system": "http://hl7.org/fhir/sid/ndc",
      "value": "71334010001"
    },
    "display": "Tibsovo"
  },
  "facility": {
    "display": "968 Kane Brook, Bogisichton AK, 74283"
  },
  "item": [
    {
      "productOrService": {
        "coding": [
          {
            "system": "https://open.fda.gov/apis/drug/ndc",
            "code": "71334010001",
            "display": "Tibsovo"
          }
        ]
      }
    }
  ],
  "total": [
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "allowedamount"
          }
        ]
      },
      "amount": {
        "value": 180.42,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "cobamount"
          }
        ]
      },
      "amount": {
        "value": 0,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "coinsuranceamount"
          }
        ]
      },
      "amount": {
        "value": 36.08,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "copaymentamount"
          }
        ]
      },
      "amount": {
        "value": 0,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "deductibleamount"
          }
        ]
      },
      "amount": {
        "value": 0,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "noncoveredamount"
          }
        ]
      },
      "amount": {
        "value": 39.41,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "patientpayamount"
          }
        ]
      },
      "amount": {
        "value": 36.08,
        "currency": "USD"
      }
    },
    {
      "category": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/carin/CodeSystem/carin-bb-adjudicationcategory",
            "code": "paymentamount"
          }
        ]
      },
      "amount": {
        "value": 144.34,
        "currency": "USD"
      }
    }
  ]
},
                          

Lots of great information in there about the network rates, but the Humana API leaves out one very important detail… the `quantity` of the prescription. Is this for 1 pill of Tibsovo or 100? We're not going to be able to make our cost comparison tool without that. This is like trying to do a cost comparison between gas stations and finding out how much a tank of gas costs at Shell without being told how big the gas tank is and then trying to compare with a Marathon station based on their price per gallon. We will not be "better understanding health care costs and planning and budgeting as well as possible" today. 😤

Does CMS allow a health insurance company to exclude the prescription quantity from their API?

Is Humana breaking the heart of the rules here, or just flirting with them? That took a little research, but I think it's technically allowed. CMS 9115-F defers to the text of the 21st Century Cures act when it comes to specific standards that need to be followed:

Both the API technology itself and the data it makes available must be standardized to support true interoperability. Therefore, as discussed in detail in the proposed rule, we proposed to require compliance with both (1) ONC's 21st Century Cures Act rule proposed regulations regarding content and vocabulary standards for representing electronic health information as finalized and (2) technical standards for an API by which the electronic health information would be required to be made available as finalized [3]

Then the text of the 21st Century Cures Act defers to FHIR R4:

The API certification criterion requires the use of the Health Level 7 (HL7®) Fast Healthcare Interoperability Resources (FHIR®) standard Release 4 [4].

Finally, we find our answer in the FHIR R4 specification:

"item" : [{
  "sequence" : "<positiveInt>", // R!
  "productOrService" : { CodeableConcept }, // R!
  "servicedDate" : "<date>",
  "quantity" : { Quantity(SimpleQuantity) },
  "unitPrice" : { Money },
  "adjudication" : [{
    "category" : { CodeableConcept }, // R!
    "reason" : { CodeableConcept },
    "amount" : { Money }
  }]
}] 

Required elements are indicted by `R!`; `quantity` does not have an `R!`, so it's not against the rules to leave it out.

What health insurance companies include quantity in their APIs?

I did a check: Aetna, UnitedHealthcare / Optum, Cigna, and Blue Button 2.0 all include the prescription quantity. Optum and Cigna are even including the prescription (re)fill number. Humana is the only large insurance company that hasn't included the quantity for a prescription in their EOB API endpoint.

Wrapping up

Based on the level of polish with the documentation website, it's obvious that Humana spent a lot of money on it. I also exchanged emails with some very intelligent and kind folks from the Humana API team (people like that aren't cheap either!) This is definitely something Humana is forward thinking about and putting investing into. Applause is due for that.

That said, to be useful in reducing the cost of healthcare Humana will need to overcome whatever technical limitations are preventing them from including more information about the pharmacy claims.

Humana was 👉this close👈 to nailing their API.

One Click Retweet


Do you know someone with an Aetna Medicare Advantage plan? Please send them to the HealthSouse home page. We may also be able to save your friend some money.

Still here? Thanks for reading! You seem like a nice person, who should send me an email: mark@healthsouse.com. Encouragement and criticism are both welcome!