我在验证xml文档时遇到问题,我需要使用标记map cannot be resoved to a type!
和<templateId root="2.16.840.1.113883.10.20.33.4.4"/>
来定位,这两个条件必须达到,因为如果这两个条件实现,我将能够检查entryRelationship是否有<entryRelationship>
。我这样做了:
<templateId root="2.16.840.1.113883.10.20.33.4.2"/>
但不行,我需要帮助,非常感谢。
这是xml:
<rule context="//cda:entry/cda:organizer/cda:component/cda:observation[(./templateId/*[@root='2.16.840.1.113883.10.20.33.4.4']) and (./entryRelationship/*[@typeCode='REFR'])]">
<!--<rule context='*[cda:templateId/@root="2.16.840.1.113883.10.20.33.4.4"]'>-->
<assert test="self::cda:entryRelationship[@typeCode='REFR']">
FAIL: CONF-QR-176: The entryRelationship, if present, SHALL contain exactly one [1..1] @typeCode="REFR" (CodeSystem: HL7ActRelationshipType 2.16.840.1.113883.5.1002). Line:
<value-of select="@_line"/>
</assert>
<assert test="count(cda:entryRelationship/cda:observation/cda:templateId[@root='2.16.840.1.113883.10.20.33.4.2'])=1">
FAIL: CONF-QR-177: The entryRelationship, if present,SHALL contain exactly one [1..1] Question Help Text Pattern Observation template (templateId 2.16.840.1.113883.10.20.32.4.19). Line:
<value-of select="@_line"/>
</assert>
</rule>
答案 0 :(得分:0)
如果我正确理解了这个问题,根据您的规则上下文属性的xpath,您可以尝试这种方式(格式化为可读性):
//cda:entry
/cda:organizer
/cda:component
/cda:observation[
templateId/@root='2.16.840.1.113883.10.20.33.4.4'
and
entryRelationship/@typeCode='REFR'
]
然后关于“断言测试”的xpath,由于上下文节点是<observation>
,self::cda:entryRelationship
对我来说没有多大意义。试试这个 - 或者在开头可能没有/
:
<assert test="/cda:entryRelationship[@typeCode='REFR']">
<entryRelationship>
是上下文节点的子节点,而不是它自己的上下文节点,所以上面的表达式更有意义。