Uploaded image for project: 'FHIR Specification Feedback'
  1. FHIR Specification Feedback
  2. FHIR-43914

Parameter representation of CQL Options is overly complicated

    XMLWordPrintableJSON

Details

    • Icon: Change Request Change Request
    • Resolution: Persuasive
    • Icon: Medium Medium
    • Using CQL With FHIR (FHIR)
    • 1.0.0-ballot
    • Clinical Decision Support
    • CQL Library
      ELM Library
    • Using CQL
    • 2.17.1
    • Hide

      Agreed, provide a simplified representation of cqlOptions that eliminates the "option" parameter in favor of specific named parameters for every option.

      Note that this will make mapping of the cqlOptions content in FHIR more difficult for some implementations (since the basis for this is the way the options structures are specified in the implementation). However, the simplification for implementers overall outweighs that benefit, and backwards-compatible implementation approaches can be taken for the existing components, since this is only about how the options are represented in a FHIR resource.

      Show
      Agreed, provide a simplified representation of cqlOptions that eliminates the "option" parameter in favor of specific named parameters for every option. Note that this will make mapping of the cqlOptions content in FHIR more difficult for some implementations (since the basis for this is the way the options structures are specified in the implementation). However, the simplification for implementers overall outweighs that benefit, and backwards-compatible implementation approaches can be taken for the existing components, since this is only about how the options are represented in a FHIR resource.
    • Chris Moesel/Greg White: 19-0-0
    • Enhancement
    • Non-compatible

    Description

      The included example of parameters is confusing:

      Some options are represented as a parameter named "option" with the value representing the option name:
       

      {
        "name": "option",
        "valueString": "EnableAnnotations"
      }
      

      Some options are represented as a parameter for which the parameter name matches the option name and the value is a boolean:

      {
        "name": "enableCqlOnly"
        "valueBoolean": true
      }
      

      Some are represented in the table in section 2.17:

      {
        "name": "signatureLevel",
        "valueString": "Overloads"
      }
      

      While others are not represented in preceding documentation at all:

      {
        "name": "collapseDataRequirements",
        "valueBoolean": true
      }
      

      For boolean options, no guidance is given whether it should be represented as a parameter named "option" (like "EnableAnnotations") or a parameter named after the option (like "enableCqlOnly"). We only know by example.

      This complexity is difficult for implementers and is also difficult to specify via a profile (as I've suggested in FHIR-43908). Is this complexity necessary? Could the Parameters.parameter.name just always be the option name and the value could be a string or boolean as appropriate? This would be easier to understand and easier to represent via a profile.

      Attachments

        Activity

          People

            bryn.rhodes Bryn Rhodes
            cmoesel Chris Moesel
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: