[906] | 1 | <!-- HL7 QRDA Category I Header (Section 2) -->
|
---|
| 2 |
|
---|
| 3 | <!-- errors -->
|
---|
| 4 | <pattern id="p-2.16.840.1.113883.10.20.12-errors">
|
---|
| 5 | <title>HL7 QRDA Category I Header (Section 2) - errors validation phase</title>
|
---|
| 6 |
|
---|
| 7 | <rule context='/'>
|
---|
| 8 | <assert test='.//cda:templateId/@root="2.16.840.1.113883.10.20.12"'>
|
---|
| 9 | Error: CONF-QRDA-I-5: The value of one ClinicalDocument/templateId/@root SHALL be
|
---|
| 10 | 2.16.840.1.113883.10.20.12 representing conformance to the generic
|
---|
| 11 | QRDA Category I framework constraints.
|
---|
| 12 | </assert>
|
---|
| 13 | </rule>
|
---|
| 14 |
|
---|
| 15 | <rule context='*[cda:templateId/@root="2.16.840.1.113883.10.20.12"]'>
|
---|
| 16 | <assert test='cda:realmCode[@code = "US"]'>
|
---|
| 17 | Error: CONF-QRDA-I-2: The realmCode element SHALL be present where the value of @code is US.
|
---|
| 18 | </assert>
|
---|
| 19 | <assert test='cda:typeId[@root = "2.16.840.1.113883.1.3" and @extension = "POCD_HD000040"]'>
|
---|
| 20 | Error: CONF-QRDA-I-3: The value of typeId/@root SHALL be 2.16.840.1.113883.1.3 and value of
|
---|
| 21 | typeId/@extension SHALL be POCD_HD000040.
|
---|
| 22 | </assert>
|
---|
| 23 | <assert test='count(cda:code) = 1 and cda:code[@code="55182-0" and @codeSystem="2.16.840.1.113883.6.1"]'>
|
---|
| 24 | Error: CONF-QRDA-I-6: A QRDA Category I report SHALL contain exactly one
|
---|
| 25 | ClinicalDocument/code with a value of 55182-0 2.16.840.1.113883.6.1
|
---|
| 26 | LOINC STATIC.
|
---|
| 27 | </assert>
|
---|
| 28 | <assert test="contains(translate(cda:title,'QWERTYUIOPASDFGHJKLZXCVBNM','qwertyuiopasdfghjklzxcvbnm'),'qrda incidence report') or
|
---|
| 29 | contains(translate(cda:title,'QWERTYUIOPASDFGHJKLZXCVBNM','qwertyuiopasdfghjklzxcvbnm'),'quality measure report')">
|
---|
| 30 | Error: CONF-QRDA-I-7: A QRDA Category I report SHALL contain exactly one
|
---|
| 31 | ClinicalDocument/title element valued with a case-insensitive, text
|
---|
| 32 | string containing "QRDA Incidence Report" or "Quality measure
|
---|
| 33 | Report".
|
---|
| 34 | </assert>
|
---|
| 35 | <assert test='count(cda:recordTarget/cda:patientRole) = 1'>
|
---|
| 36 | Error: CONF-QRDA-I-8: A QRDA Category I report SHALL contain exactly one
|
---|
| 37 | ClinicalDocument/recordTarget/PatientRole.
|
---|
| 38 | </assert>
|
---|
| 39 | <assert test='cda:author/cda:assignedAuthor/cda:assignedPerson or
|
---|
| 40 | cda:author/cda:assignedAuthor/cda:assignedAuthoringDevice '>
|
---|
| 41 | Error: CONF-QRDA-I-9: A QRDA Category I report SHALL contain one or more
|
---|
| 42 | ClinicalDocument/author/assignedAuthor/assignedPerson and/or
|
---|
| 43 | ClinicalDocument/author/assignedAuthor/assignedAuthoringDevice.
|
---|
| 44 | </assert>
|
---|
| 45 | <assert test='count(cda:informant) = 1'>
|
---|
| 46 | Error: CONF-QRDA-I-10: A QRDA Category I report SHALL contain exactly one
|
---|
| 47 | ClinicalDocument/informant, which represents the reporting facility.
|
---|
| 48 | CONF-QRDA-I-11: An organization source of information SHALL be represented with
|
---|
| 49 | informant.
|
---|
| 50 | </assert>
|
---|
| 51 | <assert test='cda:custodian/cda:assignedCustodian/cda:representedCustodianOrganization/cda:id/@root or
|
---|
| 52 | cda:custodian/cda:assignedCustodian/cda:representedCustodianOrganization/cda:id[@nullFlavor="MSK"]'>
|
---|
| 53 | Error: CONF-QRDA-I-12: A QRDA Category I report SHALL contain exactly one
|
---|
| 54 | custodian/assignedCustodian/representedCustodianOrganization/
|
---|
| 55 | id element.
|
---|
| 56 | CONF-QRDA-I-13: The value of custodian/assignedCustodian/
|
---|
| 57 | representedCustodianOrganization/id element @root SHALL be the id
|
---|
| 58 | root of the custodian organization.
|
---|
| 59 | </assert>
|
---|
| 60 | <assert test='not(cda:legalAuthenticator) or count(cda:legalAuthenticator/cda:time) = 1'>
|
---|
| 61 | Error: CONF-QRDA-I-15: If present, a QRDA Category I report legalAuthenticator SHALL
|
---|
| 62 | contain exactly one ClinicalDocument/legalAuthenticator/time element.
|
---|
| 63 | </assert>
|
---|
| 64 | <assert test='not(cda:legalAuthenticator) or count(cda:legalAuthenticator/cda:signatureCode) = 1'>
|
---|
| 65 | Error: CONF-QRDA-I-16: If present, a QRDA Category I report legalAuthenticator SHALL
|
---|
| 66 | contain exactly one signatureCode element.
|
---|
| 67 | </assert>
|
---|
| 68 | <assert test='not(cda:legalAuthenticator) or
|
---|
| 69 | cda:legalAuthenticator/cda:signatureCode[@code="S"] or
|
---|
| 70 | cda:legalAuthenticator/cda:signatureCode[@nullFlavor="MSK"]'>
|
---|
| 71 | Error: CONF-QRDA-I-17: The value of a QRDA ClinicalDocument/signatureCode/@code
|
---|
| 72 | SHALL be S.
|
---|
| 73 | </assert>
|
---|
| 74 | <assert test='not(cda:legalAuthenticator) or
|
---|
| 75 | cda:legalAuthenticator/cda:assignedEntity'>
|
---|
| 76 | Error: CONF-QRDA-I-18: If present, a QRDA Category I report legalAuthenticator SHALL
|
---|
| 77 | contain exactly one assignedEntity element that represents the legal
|
---|
| 78 | authenticator of the document.
|
---|
| 79 | </assert>
|
---|
| 80 | <assert test='not(cda:legalAuthenticator) or
|
---|
| 81 | cda:legalAuthenticator/cda:assignedEntity/cda:id'>
|
---|
| 82 | Error: CONF-QRDA-I-19: The ClinicalDocument/legalAuthenticator/assigned entity
|
---|
| 83 | SHALL contain an id element.
|
---|
| 84 | </assert>
|
---|
| 85 | <assert test='cda:component/cda:structuredBody'>
|
---|
| 86 | Error: CONF-QRDA-I-20: A QRDA Category I report SHALL contain exactly one
|
---|
| 87 | ClinicalDocument/component/structuredBody.
|
---|
| 88 | </assert>
|
---|
| 89 | <!--
|
---|
| 90 |
|
---|
| 91 | Changed as per email discussion between Len Gallagher and Liora Alschuler
|
---|
| 92 |
|
---|
| 93 | <assert test='count(cda:component/cda:structuredBody/cda:component/cda:section/cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]) > 0'>
|
---|
| 94 | Error: CONF-QRDA-I-21: A QRDA Category I report SHALL contain at least one and MAY contain
|
---|
| 95 | more than one non-nested top-level Measure section each containing
|
---|
| 96 | information about a single measure.
|
---|
| 97 | </assert>
|
---|
| 98 | -->
|
---|
| 99 |
|
---|
| 100 | <assert test='count(.//cda:section/cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]) > 0'>
|
---|
| 101 | Error: CONF-QRDA-I-21: A QRDA Category I report SHALL contain at least one and MAY contain
|
---|
| 102 | more than one Measure section each containing information about a single measure.
|
---|
| 103 | </assert>
|
---|
| 104 |
|
---|
| 105 | </rule>
|
---|
| 106 |
|
---|
| 107 |
|
---|
| 108 | <!-- Measure Section -->
|
---|
| 109 |
|
---|
| 110 | <rule context='*[cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 111 | <!--
|
---|
| 112 | <assert test='self::/cda:ClinicalDocument/cda:component/cda:structuredBody/cda:component/cda:section or
|
---|
| 113 | parent::cda:section[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]/cda:component'>
|
---|
| 114 | Error: CONF-QRDA-I-22: The Measure section SHALL be a top-level section if it is not part of a
|
---|
| 115 | measure set.
|
---|
| 116 | </assert>
|
---|
| 117 | -->
|
---|
| 118 | <assert test='self::cda:section[parent::cda:component[parent::cda:structuredBody[parent::cda:component[parent::cda:ClinicalDocument]]]] or
|
---|
| 119 | parent::cda:section[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]/cda:component'>
|
---|
| 120 | Error: CONF-QRDA-I-22: The Measure section SHALL be a top-level section if it is not part of a
|
---|
| 121 | measure set.
|
---|
| 122 | </assert>
|
---|
| 123 |
|
---|
| 124 | <assert test='cda:templateId'>
|
---|
| 125 | Error: CONF-QRDA-I-33: The Measure section SHALL contain at least one templateId uniquely
|
---|
| 126 | identifying each Measure name and version
|
---|
| 127 | </assert>
|
---|
| 128 | <assert test='not(parent::cda:section[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]/cda:entry) or
|
---|
| 129 | contains(translate(cda:title,"QWERTYUIOPASDFGHJKLZXCVBNM","qwertyuiopasdfghjklzxcvbnm"),"measure section: ")'>
|
---|
| 130 | Error: CONF-QRDA-I-36: A non-nested Measure section SHALL be valued with section/title
|
---|
| 131 | with a case-insensitive, text string containing "measure section:
|
---|
| 132 | <measure name>".
|
---|
| 133 | </assert>
|
---|
| 134 | <assert test='not(parent::cda:ClinicalDocument/cda:component/cda:structuredBody/cda:component/cda:section) or
|
---|
| 135 | contains(translate(cda:title,"QWERTYUIOPASDFGHJKLZXCVBNM","qwertyuiopasdfghjklzxcvbnm"),"measure section")'>
|
---|
| 136 | Error: CONF-QRDA-I-37: A nested Measure section SHALL be valued with section/title with
|
---|
| 137 | a case-insensitive, text string containing "measure section".
|
---|
| 138 | </assert>
|
---|
| 139 | <assert test='count(.//cda:section[cda:code[@code = "55187-9" and @codeSystem="2.16.840.1.113883.6.1"]]) = 1'>
|
---|
| 140 | Error: CONF-QRDA-I-39: A Measure section SHALL contain exactly one nested Reporting
|
---|
| 141 | Parameters section (as described in Section 2.4.3 Reporting Parameters
|
---|
| 142 | Section).
|
---|
| 143 | </assert>
|
---|
| 144 | <assert test='count(.//cda:section[cda:code[@code = "55188-7" and @codeSystem="2.16.840.1.113883.6.1"]]) = 1'>
|
---|
| 145 | Error: CONF-QRDA-I-40: A Measure section SHALL contain exactly one nested Patient Data
|
---|
| 146 | section (as described in Section 2.4.4 Patient Data Section).
|
---|
| 147 | </assert>
|
---|
| 148 | <assert test='cda:entry/cda:act[@classCode="ACT" and @moodCode="DEF"]'>
|
---|
| 149 | Error: CONF-QRDA-I-42: Each measure SHALL be represented with act.
|
---|
| 150 | CONF-QRDA-I-43: For each act in the Measure section, the value for act/@classCode
|
---|
| 151 | in a measure act SHALL be ACT 2.16.840.1.113883.5.6 ActClass STATIC.
|
---|
| 152 | CONF-QRDA-I-44: For each act in the Measure section the act/@moodCode in a
|
---|
| 153 | measure act SHALL be DEF 2.16.840.1.113883.5.1001 ActMood STATIC.
|
---|
| 154 | </assert>
|
---|
| 155 | </rule>
|
---|
| 156 |
|
---|
| 157 | <!-- Measure -->
|
---|
| 158 |
|
---|
| 159 | <rule context='*[cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]]/cda:entry/cda:act[@classCode="ACT" and @moodCode="DEF"]'>
|
---|
| 160 | <assert test='cda:code'>
|
---|
| 161 | Error: CONF-QRDA-I-45: For each act in the Measure section there SHALL be an act/code
|
---|
| 162 | reflecting the measure name and version.
|
---|
| 163 | </assert>
|
---|
| 164 | </rule>
|
---|
| 165 |
|
---|
| 166 | <!-- Measure Set Section -->
|
---|
| 167 |
|
---|
| 168 | <rule context='*[cda:code[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 169 | <assert test='count(.//cda:section[cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]]) = 1'>
|
---|
| 170 | Error: CONF-QRDA-I-24: The Measure Set section SHALL contain one nested Measure section
|
---|
| 171 | and SHALL NOT contain more than one nested Measure section.
|
---|
| 172 | </assert>
|
---|
| 173 | <assert test='cda:templateId'>
|
---|
| 174 | Error: CONF-QRDA-I-26: The Measure Set section SHALL contain a templateId uniquely
|
---|
| 175 | identifying the Measure Set name and version.
|
---|
| 176 | </assert>
|
---|
| 177 | <assert test="contains(translate(cda:title,'QWERTYUIOPASDFGHJKLZXCVBNM','qwertyuiopasdfghjklzxcvbnm'),'measure set: ')">
|
---|
| 178 | Error: CONF-QRDA-I-29: The Measure Set section SHALL be valued with section/title with a
|
---|
| 179 | case-insensitive, text string containing "Measure set: <measure set
|
---|
| 180 | name>".
|
---|
| 181 | </assert>
|
---|
| 182 | <assert test='count(.//cda:section/cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]) > 0 '>
|
---|
| 183 | Error: CONF-QRDA-I-31: The nested Measure section SHALL contain at least one measure that
|
---|
| 184 | belongs to the measure set.
|
---|
| 185 | </assert>
|
---|
| 186 | </rule>
|
---|
| 187 |
|
---|
| 188 | <!-- Reporting Parameters Section -->
|
---|
| 189 |
|
---|
| 190 | <rule context='*[cda:code[@code="55187-9" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 191 | <assert test='contains(translate(cda:title,"QWERTYUIOPASDFGHJKLZXCVBNM","qwertyuiopasdfghjklzxcvbnm"),"reporting parameters")'>
|
---|
| 192 | Error: CONF-QRDA-I-49: The Reporting Parameters section SHALL be valued with
|
---|
| 193 | section/title with a case-insensitive, text string containing "Reporting
|
---|
| 194 | Parameters".
|
---|
| 195 | </assert>
|
---|
| 196 | <assert test='cda:entry/cda:act[@classCode="ACT" and @moodCode="EVN"]/cda:code[@code="252116004" and @codeSystem="2.16.840.1.113883.6.96"]'>
|
---|
| 197 | Error: CONF-QRDA-I-50: The Reporting Parameters section SHALL contain exactly one
|
---|
| 198 | Observation Parameters Act, represented as an act.
|
---|
| 199 | CONF-QRDA-I-51: The value for act/@classCode in an Observation Parameters Act
|
---|
| 200 | SHALL be ACT 2.16.840.1.113883.5.6 ActClass STATIC.
|
---|
| 201 | CONF-QRDA-I-52: The value for act/@moodCode in an Observation Parameters Act
|
---|
| 202 | SHALL be EVN 2.16.840.1.113883.5.1001 ActMood STATIC.
|
---|
| 203 | CONF-QRDA-I-53: The value for act/code SHALL be 252116004 Observation
|
---|
| 204 | Parameters 2.16.840.1.113883.6.96 SNOMED-CT STATIC.
|
---|
| 205 | </assert>
|
---|
| 206 | <assert test='cda:entry/cda:act[@classCode="ACT" and @moodCode="EVN"][cda:code[@code="252116004" and @codeSystem="2.16.840.1.113883.6.96"]]/cda:effectiveTime[cda:low and cda:high]'>
|
---|
| 207 | Error: CONF-QRDA-I-54: The reporting time period SHALL be represented with an
|
---|
| 208 | effectiveTime/low element combined with a high element representing
|
---|
| 209 | respectively the first and last days of the period reported.
|
---|
| 210 | </assert>
|
---|
| 211 | </rule>
|
---|
| 212 |
|
---|
| 213 | <!-- Patient Data Section -->
|
---|
| 214 |
|
---|
| 215 | <rule context='*[cda:code[@code="55188-7" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 216 | <assert test='contains(translate(cda:title,"QWERTYUIOPASDFGHJKLZXCVBNM","qwertyuiopasdfghjklzxcvbnm"),"patient data")'>
|
---|
| 217 | Error: CONF-QRDA-I-57: The Patient Data section SHALL be valued with section/title with a
|
---|
| 218 | case-insensitive, text string containing "Patient Data".
|
---|
| 219 | </assert>
|
---|
| 220 |
|
---|
| 221 | </rule>
|
---|
| 222 |
|
---|
| 223 | </pattern>
|
---|
| 224 |
|
---|
| 225 | <pattern id="p-2.16.840.1.113883.10.20.12-warnings">
|
---|
| 226 | <title>HL7 QRDA Category I Header (Section 2) - warning validation phase</title>
|
---|
| 227 | <rule context='*[cda:templateId/@root="2.16.840.1.113883.10.20.12"]'>
|
---|
| 228 | <assert test='count(cda:legalAuthenticator) = 1'>
|
---|
| 229 | Warning: CONF-QRDA-I-14: A QRDA Category I report SHOULD contain exactly one
|
---|
| 230 | legalAuthenticator element.
|
---|
| 231 | </assert>
|
---|
| 232 | </rule>
|
---|
| 233 | </pattern>
|
---|
| 234 |
|
---|
| 235 | <pattern id="p-2.16.840.1.113883.10.20.12-notes">
|
---|
| 236 | <title>HL7 QRDA Category I Header (Section 2) - note validation phase</title>
|
---|
| 237 | <rule context='*[cda:templateId/@root="2.16.840.1.113883.10.20.12"]'>
|
---|
| 238 | <assert test='count(cda:component/cda:structuredBody/cda:component/cda:section/cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]) > 1'>
|
---|
| 239 | Note: CONF-QRDA-I-21: A QRDA Category I report ... MAY contain
|
---|
| 240 | more than one non-nested top-level Measure section each containing
|
---|
| 241 | information about a single measure.
|
---|
| 242 | </assert>
|
---|
| 243 | <assert test='.//cda:section/cda:code[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]'>
|
---|
| 244 | Note: CONF-QRDA-I-23: A QRDA Category I report MAY contain one or more Measure Set
|
---|
| 245 | sections.
|
---|
| 246 | </assert>
|
---|
| 247 | <assert test='cda:component/cda:structuredBody/cda:component/cda:section/cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"] and
|
---|
| 248 | .//cda:section/cda:code[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]'>
|
---|
| 249 | Note: CONF-QRDA-I-25: A QRDA Category I report MAY contain both Measure Set sections and
|
---|
| 250 | individual top-level Measure sections.
|
---|
| 251 | </assert>
|
---|
| 252 |
|
---|
| 253 | </rule>
|
---|
| 254 |
|
---|
| 255 | <!-- Measure Section -->
|
---|
| 256 |
|
---|
| 257 | <rule context='*[cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 258 |
|
---|
| 259 | <assert test='cda:text'>
|
---|
| 260 | Note: CONF-QRDA-I-41: The Measure section MAY contain a section/text element for the
|
---|
| 261 | description of the measure(s).
|
---|
| 262 | </assert>
|
---|
| 263 | </rule>
|
---|
| 264 |
|
---|
| 265 | <!-- Measure -->
|
---|
| 266 |
|
---|
| 267 | <rule context='*[cda:code[@code="55186-1" and @codeSystem="2.16.840.1.113883.6.1"]]/cda:entry/cda:act[@classCode="ACT" and @moodCode="DEF"]'>
|
---|
| 268 | <assert test='cda:text'>
|
---|
| 269 | Note: CONF-QRDA-I-46: Each measure act MAY contain an act/text element containing a
|
---|
| 270 | description of the measure.
|
---|
| 271 | </assert>
|
---|
| 272 | </rule>
|
---|
| 273 |
|
---|
| 274 | <!-- Measure Set Section -->
|
---|
| 275 |
|
---|
| 276 | <rule context='*[cda:code[@code="55185-3" and @codeSystem="2.16.840.1.113883.6.1"]]'>
|
---|
| 277 | <assert test='cda:text'>
|
---|
| 278 | Note: CONF-QRDA-I-30: The Measure Set section MAY contain a section/text element for
|
---|
| 279 | the description of the measure set or MAY contain a formal representation of
|
---|
| 280 | a description of the measure set.
|
---|
| 281 | </assert>
|
---|
| 282 | </rule>
|
---|
| 283 | </pattern>
|
---|
| 284 |
|
---|