Struggling with posting and JSON measure payload formatting

100 views
Skip to first unread message

Jack @Duke

unread,
Jan 19, 2018, 7:52:45 AM1/19/18
to Developer Group for QPP APIs
Colleagues,

I am hoping that you can help me. I have been able to successfully create a submission and a measurement set in the sandbox. I can even post the sample measure found on the Swagger site at https://qpp-submissions-sandbox.navapbc.com/#/. However, I am struggling mightily to format my own JSON measures and have them submit. It seems that the posted schema found at https://github.com/CMSgov/qpp-measures-data/tree/master/measures isn't everything. For example, with the measurement set I found I had to add performanceStart and performanceEnd even though those weren't listed as required.

What I would love is some guidance or examples of well formed JSON submissions for the measures that I am trying to post. Something like the published model for the "ACI_HIE_3" parameter that is found on the Swagger site would be helpful also. I just can't get everything I seem to need from the schema or the data file found at https://github.com/CMSgov/qpp-measures-data/tree/master/measures. Guessing is getting me nowhere.

Thanks,

Jack

Sarah White

unread,
Jan 19, 2018, 11:32:30 AM1/19/18
to Jack @Duke, Developer Group for QPP APIs
Hi Jack,

Check out the developer documentation here: https://cmsgov.github.io/qpp-submissions-docs/tutorial. This site has an API tutorial and other resources you can use to test your submissions on the Swagger site.

Sarah White
Business Analyst

--
You received this message because you are subscribed to the Google Groups "Developer Group for QPP APIs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qpp-apis+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/qpp-apis.
To view this discussion on the web visit https://groups.google.com/d/msgid/qpp-apis/3399c5f2-6584-426f-ba25-439fa06c5b0c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Jack Shostak

unread,
Jan 19, 2018, 12:04:30 PM1/19/18
to Sarah White, Developer Group for QPP APIs
Sarah,

Believe me, I have spent quite a bit of time there. I still don't have the information I need to form good measure data in JSON. Is there anything else available?

Thanks,

Jack

Sarah White

unread,
Jan 19, 2018, 4:43:09 PM1/19/18
to Jack Shostak, Developer Group for QPP APIs
Hi Jack,

On that site under Measurements (https://cmsgov.github.io/qpp-submissions-docs/measurements) you can find more information about which fields are writable and optional depending on the measure you are looking for. For example, using ACI_HIE_3, you can look that up in the measure repo on Github. There it states it's a proportion measure, so it will need to follow the proportion resource requirement under that Measurements tab on the developer documentation.

As for the measurement set, the fields required to post that are also listed in the developer documentation. The example of Swagger shows what a measurement set submission would look like with a measurement included. It's not at the bottom of the list like in the developer documentation, but the required elements are still in there. 

Sarah White
Business Analyst

Jack Shostak

unread,
Jan 20, 2018, 10:38:50 AM1/20/18
to Sarah White, Developer Group for QPP APIs
Sarah,

Thanks very much for trying to help me. That measurements sub-page is helpful and shows me the syntax for the various measures. So, I tried to do a sample quality measure "021" to the sandbox. My submission looks like this:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{  

     "entityType": "individual",

     "taxpayerIdentificationNumber": "000777777",

     "nationalProviderIdentifier": "0123012111",  

     "performanceYear": 2017,

     "measurementSets": [

         {

             "category": "quality",

             "submissionMethod": "cmsWebInterface",

             "performanceStart": "2017-01-01",

             "performanceEnd": "2017-06-01",

             "measurements": [

                 {

                     "measureId": "021",

                     "value": {

                      "numerator:": 20,

                      "denominator": 100

                     }

                 }

             ]

         }

     ]

 }' 'https://qpp-submissions-sandbox.navapbc.com/submissions'



Where quality measure "021" is a proportion per the specs, but I get this back in the header record:


{

  "error": {

    "type": "ValidationError",

    "message": "invalid submission object",

    "details": [

      {

        "message": "field 'value' in Submission.measurementSets[0].measurements[0] is invalid: {\"numerator:\":20,\"denominator\":100} is invalid for measureId 021",

        "path": "$.measurementSets[0].measurements[0].value"

      },

      {

        "message": "field 'isEndToEndReported' in Submission.measurementSets[0].measurements[0] is missing",

        "path": "$.measurementSets[0].measurements[0].value.isEndToEndReported"

      },

      {

        "message": "field 'performanceMet' in Submission.measurementSets[0].measurements[0] is missing",

        "path": "$.measurementSets[0].measurements[0].value.performanceMet"

      },

      {

        "message": "field 'eligiblePopulation' in Submission.measurementSets[0].measurements[0] is missing",

        "path": "$.measurementSets[0].measurements[0].value.eligiblePopulation"

      }

    ]

  }

}


When I look at https://raw.githubusercontent.com/CMSgov/qpp-measures-data/master/measures/measures-data.json I don't see much on the value formatting for measure 021 except the spec that indicates a numerator and denominator. Nor do I see where eligiblePopulation, performanceMet, and isEndToEndReported are required. I feel like I am shooting somewhat in the dark on the measure formatting and requirements.

Thanks,

Jack


Sarah White

unread,
Jan 22, 2018, 10:46:29 AM1/22/18
to Jack Shostak, Developer Group for QPP APIs
Hi Jack,

Measure 021 is a single performance rate measure, not a proportion. 
{
    "category": "quality",
    "firstPerformanceYear": 2017,
    "lastPerformanceYear": null,
    "metricType": "singlePerformanceRate",
    "title": "Perioperative Care: Selection of Prophylactic Antibiotic - First OR Second Generation Cephalosporin",
    "description": "Percentage of surgical patients aged 18 years and older undergoing procedures with the indications for a first OR second generation cephalosporin prophylactic antibiotic who had an order for a first OR second generation cephalosporin for antimicrobial prophylaxis",
    "nationalQualityStrategyDomain": "PS",
    "measureType": "process",
    "measureId": "021",
    "eMeasureId": null,
    "nqfEMeasureId": null,
    "nqfId": "0268",
    "isInverse": false,
    "strata": [
      {
        "description": "Percentage of surgical patients aged 18 years and older undergoing procedures with the indications for a first second generation cephalosporin prophylactic antibiotic who had an order for a first OR second generation cephalosporin for antimicrobial prophylaxis",
        "name": "antibiotic"
      }
    ],
    "isHighPriority": true,
    "primarySteward": "American Society of Plastic Surgeons",
    "submissionMethods": [
      "claims",
      "registry"
    ],
    "measureSets": [
      "generalSurgery",
      "orthopedicSurgery",
      "otolaryngology",
      "thoracicSurgery",
      "plasticSurgery"
    ],
    "isRegistryMeasure": false,
    "measureSpecification": {
      "claims": "https://qpp.cms.gov/docs/QPP_quality_measure_specifications/Claims-Registry-Measures/2017_Measure_021_Claims.pdf",
      "registry": "https://qpp.cms.gov/docs/QPP_quality_measure_specifications/Claims-Registry-Measures/2017_Measure_021_Registry.pdf"
    }
  },

Thus it should be formatted as such:
{
  "id": string,
  "measurementSetId": string,
  "measureId": string,
  "value": {
    "isEndToEndReported": boolean,
    "performanceMet": integer,
    "performanceNotMet": integer,
    "eligiblePopulationExclusion": integer,
    "eligiblePopulationException": integer,
    "eligiblePopulation": integer,
    "performanceRate": float,
    "reportingRate": float
  }
}

Sarah White
Business Analyst

Sarah White

unread,
Jan 22, 2018, 11:04:05 AM1/22/18
to Jack Shostak, Developer Group for QPP APIs
Hi Jack,

Also double check the field descriptions on https://cmsgov.github.io/qpp-submissions-docs/measurements#single-performance-rate-measurements to learn more about what fields are required or optional. 

Sarah White
Business Analyst

Jack Shostak

unread,
Jan 23, 2018, 5:31:44 PM1/23/18
to Sarah White, Developer Group for QPP APIs
Sarah,

Thanks very much again for the help. I was able to post and manipulate this measure successfully.

Thanks again,

Jack

Sarah White

unread,
Jan 23, 2018, 5:32:16 PM1/23/18
to Jack Shostak, Developer Group for QPP APIs
Great! Glad to hear!

Sarah White
Business Analyst

Reply all
Reply to author
Forward
0 new messages