Uploaded image for project: 'CDA Specification Feedback'
  1. CDA Specification Feedback
  2. CDA-20672

Clarify "1..1 value with xsi:type" conformance statements

    XMLWordPrintableJSON

Details

    • Icon: Technical Correction Technical Correction
    • Resolution: Persuasive
    • Icon: Medium Medium
    • C-CDA Templates Clinical Notes (CDA)
    • 2.1.0.7 [deprecated]
    • Structured Documents
    • Templates [deprecated]
    • Hide

      Structured Document WG agrees there should only be 1 value element for conformance constraints structured as shown below and it must have the indicated data type. If possible we will make changes in the schematron in the next year.

      • SHALL contain exactly one [1..1] value with @xsi:type="..."

      The CDA base standard permits more than one value element: in such cases, templates may allow this with constraints like:

      SHALL contain at least one [1..*] value...

      See Assessment Scale Supporting Observation for example.

      Show
      Structured Document WG agrees there should only be 1 value element for conformance constraints structured as shown below and it must have the indicated data type. If possible we will make changes in the schematron in the next year. SHALL contain exactly one [1..1] value with @xsi:type="..." The CDA base standard permits more than one value element: in such cases, templates may allow this with constraints like: SHALL contain at least one [1..*] value... See Assessment Scale Supporting Observation for example.
    • Correction

    Description

      Many conformance statements in C-CDA read something like:

      SHALL contain exactly one [1..1] value with @xsi:type="PQ" (CONF:81-7617).

      Since there is no "such that it" clause, this seems to indicate that the template cannot have any other value elements, even if their @xsi:type is different.

      However, the auto-generated schematron from Trifolia (not custom implementations) only validates that a single value[@xsi:type='PQ'] exists, leaving the possibility for other value elements of other types to exist.

      test="count(cda:value[*_@xsi:type_*='PQ'])=1"

      Interestingly, there are a few cases where the schematron does only allow a single value regardless of xsi:type:

      SHALL contain exactly one [1..1] value with @xsi:type="CD", where the code SHOULD be selected from ValueSet Ability  2.16.840.1.113883.11.20.9.46 DYNAMIC (CONF:1098-28042).

      The schematron for the above only checks for count(cda:value)=1.  (and the ValueSet language seems to be a red herring, since plenty of other similar conformance statements check for count(cda:value[@xsi:type='CD'])=1.

      FHIR StructureDefinition Prototype

      At least for the Age Observation, the StructureDefinition version of this template indicates only a single value is allowed and that it must be of type PQ.

      Fix?

      Ultimately, this seems like a Trifolia issue with how the conformance statements are interpreted. We could make them explicit by splitting into 2 conformance statements:

      SHALL contain exactly one [1..1] value.
              SHALL contain exactly one [1..1] @xsi:type="PQ"

      ...but since the next version of C-CDA will be in FHIR format, and that appears correct already, this seems like a lot of work for no benefit. There are approximately 45 instances of this pattern in the schematron and all but 4-5 of them have this issue (i.e. about 40 conformance statements would have to be split to fix this with the current tooling).

      Instead, we could update the guidance in V1 near "such that it" (4.2.1 Templates and Conformance Statements) and give an example of what this kind of statement means (i.e. "(SHALL contain 1 value)...with xsi:type ="   rather than "SHALL contain (1 value with xsi:type=....)")

      Attachments

        Activity

          People

            Unassigned Unassigned
            benjamin Benjamin Flessner
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: