-
Notifications
You must be signed in to change notification settings - Fork 2
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
Question about value sets and OIDs files #216
Comments
Hi @kchapple, I'm assuming this is for QDM measures.
We don't maintain measures in our repository. We get measures from Measure Authoring Tool which then will be parsed using cqm-parsers library and converted into models using cqm-models. cqm-models is the library for model generation. valuesets.json Modelinfo xml OID Json file @okeefm, @AndrewBird81 feel free to add if I missed anything. Thanks! |
Thank you so much for responding @adongare ! The information you provided is very helpful. Yes, this is for CQM measures. I have ported your cqm-models to PHP and generating PHP QDM models from the modelinfo XML for use with the cqm-execution library. The model-generation tool requires the oids file, and the cqm-execution tool requires the additional value_sets.json file (which I now know how to generate.) I thought that these files contained in your repo were the JSON measures directly from CMS, but maybe they went through some sort of transformation to be compatible for use with cqm-execution? |
JSON files are not directly from CMS. We generate them before sending to cqm-execution. Some massaging happens in cqm-parsers like parsing measure's HQMF xml file, fetching valuesets from VSAC APIs and populating the models. models then can be converted to json. |
Awesome thank you. I will check out your parsers library. Cheers! |
@adongare Sorry, one more question! Is there a reason why you don't include all the CMS measures in the repo? Are the other measures untested, or known to not work with the calculator? Would it be possible to add the other measures to the repo (the json fixtures and value-sets)? |
@kchapple No worries! The measures that we included are used just for unit testing to make sure the calculation is working and we have enough test coverage. however, the actual testing is done in Bonnie(https://bonnie.healthit.gov/) Users uploads their CMS measures or any test measures to Bonnie and then create the test patient data to evaluate and view the results in UI. We could include all the CMS measures but that doesn't add much value as measures keep changing and they are supposed to be evaluated by measure developers in UI Bonnie. |
Ahh, makes sense! So Bonnie must do the parsing on the fly? Unfortunately, we're in PHP land, and the parsers are in Ruby. I wonder what strategies others have taken to utilize the CQM calculator in a system outside of Bonnie. We'll probably have to have the parsers running off to the side, and check the measure-supporting files into our repo periodically, or can Bonnie be used as a service to take the raw measures and provide the massaged files as output? By the way, you've been super helpful @adongare , thank you so much! |
Sorry for my slow responses. lots of things going on at the moments. |
That would be amazing. A service like that would be very valuable for projects like OpenEMR trying to integrate the calculator. Let me know what the leads think. Thanks very much! |
@kchapple, I ran this idea by our leads and learned that the creation of a service is not currently included in our immediate product release roadmap, however we will include it for future consideration. We would suggest your team continues to explore building upon the available code to develop a service specific to your use case. If our team can be of assistance to you as you research the current code, features and functions, please let us know. We appreciate your interest in the these tools. |
Thanks! @adongare Just to confirm, the Ruby parser tool should be able to parse these measures' eCQM structure, and produce JSON that can be run through the cqm-execution? I wonder how your team decides which CMS measures to keep in your repos? There seems to be many, but not all of them coincide with the requirements for Eligible Professional / Eligible Clinician eCQMs. Thanks again! |
@kchapple Yeah, it should with lil bit of changes. If you had gone through the cqm-models repository, you would have noticed two types of models-
So, this is how we use it- Regarding keeping CMS measures: This might sound bit confusing. Feel free if you have further questions. Thanks! |
I think I got it. Thank you for being so helpful! |
I am thinking the easiest solution for OpenEMR would be a simple command-line Ruby script, with a dependency on this cqm-parsers module, that takes a directory as input and just runs over the packages in the directory and outputs the JSON measures in the same directory. So it would take CMS2v9.zip and put the JSON output in to a directory 'CMS2v9' I'm looking at the usage section here: Is there a value-set loader implementation that loads files from the file system (not from VSAC API)? If not, is there a loader that doesn't use a username and password? The VSAC no longer accepts password auth, but we can generate API keys. Thanks! Ken |
Hi @kchapple, there is no valueset loader implementation that loads valuesets from filesystem. But we have recently updated cqm-parsers bonnie_version branch(https://github.com/projecttacoma/cqm-parsers/tree/bonnie_version) to work with VSAC API key along with sme bug fixes. We have not merged those changes to master branch yet. You can use this branch. I'll update you once we merge it to master. |
Hi @adongare
It's working so far with a little fix to add Now I'm processing the measures, and the script works to extract the JSON for the first 14 CMS measures, but the script chokes on measure CMS138v8.zip (attached to this issue) on this line: Do you have any pointers on how we might fix it so we can process all the CMS measures? Here's the exception:
|
@kchapple That usually happens when valueset is empty and by that I mean valueset doesn't have codes in it. cqm-parsers doesn't allow empty valuesets. However for this valueset that's not the case. I see there is one code for this valueset.
Just a guess- you probably have wrong profile in url |
Profile may vary for Valuesets. May not be same for all the measures. You can find VSAC valueset profiles here: https://vsac.nlm.nih.gov/vsac/profiles |
Thanks! I think you're probably correct. Is there a way to map a measure to the profile, or can I pass multiple profiles to the API? |
measure to profile mapping: Providing Multiple profiles: |
Thanks!
... and after this I was able to parse all the measures! Another question (sorry I know I'm probably getting annoying!) I get the parsed measures using I'm trying to create the input files for cqm-execution. When I create the JSON files from the measure objects I get from the loader, which attributes of the measure objects should I be using to create the file? I don't want to make an assumption, but currently I'm using: Is that correct to recreate the structure found in cqm-execution/spec/fixtures/cqm_measures or is there reference code in Bonnie that you can point me to that does that particular file-generation? |
So when you say |
This is in Ruby, so I'll have to do further conversion to JavaScript, no prob! Once it's in a JavaScript measure object, then is the entire Measure Object stringified for the measure JSON file (like CMS117v8.json) and just the value_set attribute for the value_sets.json? |
That's right. |
@adongare Do you know where in the code there might be an example where the Ruby CMS measure models get converted/loaded into the JavaScript Mongoose models? Maybe in the cqm-models or in Bonnie somewhere? |
I have the Ruby models, and now I realize I don't really know what to do with them, LOL. I suppose I can ingest them into a standard JavaScript object and use that to populate the Mongoose models, but I'd rather see how you guys do it so the process is standard. |
Hi @okeefm @AndrewBird81 @adongare @sjpadgett We run a Ruby script and are using the Measures::CqlLoader to generate the JSON. The problem we are having is that the JSON that is generated isn't compatible with the cqm-cexecution Calculator. Our generated JSON files are missing all of the "_type" fields that contain the QDM type strings. Those types seem to be required by the calculator. Here is an example. On the left is your CMS137v7.json and on the right is our CMS137v8.json. Is there a configuration option that we can pass to the CqlLoader to generate these types, or is there a step we're missing that adds the "_types" to the JSON? Here is the basic script we're running, using default options for measure_details:
|
While the measures source_data_criteria data models are generated with the _type attribute from the parser, the attribute is not included during converting to json using To include _type add @kchapple we may be able to close this issue if you want with our thanks to @adongare |
Greetings! @okeefm @AndrewBird81 @adongare
I'm developing an integration with cqm-execution with OpenEMR. We have some measures that we would like to run through the service, but they are not in your repository.
I'm wondering if there's a tool, or any documentation available on how you generate the value_sets.json that go with each measure? Are the files available somewhere for download, or are they generated from the XML value sets provided by NIH like these? https://vsac.nlm.nih.gov/download/ecqm?rel=20200507
I'm also wondering the same about the OIDS file. where do you obtain the oids file that is used for your model generation? I see the modelinfo files here: https://github.com/cqframework but don't see the OIDs files other than in your repository. Do you know where the most reliable place is where we can obtain updates to the OIDs JSON and qdm-modelinfo XML files for our PHP model generator?
Thanks,
Ken
The text was updated successfully, but these errors were encountered: