元素组合的 FHIR HAPI 验证
FHIR HAPI Validation for Combination of Elements
我有基于观察资源的自定义结构定义。使用 HAPI 进行验证。有没有办法验证值组合?
例如:
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "76536-2",
"display": "Mean Arterial Pressure, Cuff"
}
]
},
使用这个时,valueQuantity 中的度量单位应该只有相应的值,而不是 unitofmeasure 的代码值集中的任何内容。
"valueQuantity": {
"value": 90,
"unit": "mm Hg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
换句话说,对于Mean Arial Pressure
LOINC代码,valueQuantity.code
不应该允许kg
,例如
我不是 FHIRPath/clinical 数据专家,但我认为这对你有用
{
"resourceType": "StructureDefinition",
"url": "https://test.com/test",
"type": "Observation",
"status": "draft",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
"snapshot": {
"element": [
{
"path": "Observation",
"id": "Observation",
"min": 0,
"max": "*",
"base": {
"min": 0,
"max": "*"
},
"constraint" : [{
"severity" : "error",
"expression": "code.coding.where(system = 'http://loinc.org' and code = '76536-2').exists() implies (value as Quantity).where(code='mm[Hg]' and system='http://unitsofmeasure.org').exists()"
}]
}
]
}
}
条件的第一部分确定您在何处使用适当的代码进行观察。如果是这样,它将要求您的值具有正确的单位。
编辑:添加更多关于这里发生的事情的信息。
我们正在使用 FHIRPath 约束来表达这个更复杂的验证规则。
.where(...)
(docs) 条件过滤掉 repeated/single 字段,如果它匹配条件,在这种情况下,就是在 LOINC 代码中匹配的 code/system 组合你在乎。
.exists()
(docs) returns 如果集合非空则为真。
implies
(docs) 仅当左侧条件为真时才计算右侧条件。
最后使用(... as Quantity)
运算符(docs)将value[x]
字段转换为特定类型,以便对其进行更多操作。
我有基于观察资源的自定义结构定义。使用 HAPI 进行验证。有没有办法验证值组合?
例如:
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "76536-2",
"display": "Mean Arterial Pressure, Cuff"
}
]
},
使用这个时,valueQuantity 中的度量单位应该只有相应的值,而不是 unitofmeasure 的代码值集中的任何内容。
"valueQuantity": {
"value": 90,
"unit": "mm Hg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
换句话说,对于Mean Arial Pressure
LOINC代码,valueQuantity.code
不应该允许kg
,例如
我不是 FHIRPath/clinical 数据专家,但我认为这对你有用
{
"resourceType": "StructureDefinition",
"url": "https://test.com/test",
"type": "Observation",
"status": "draft",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
"snapshot": {
"element": [
{
"path": "Observation",
"id": "Observation",
"min": 0,
"max": "*",
"base": {
"min": 0,
"max": "*"
},
"constraint" : [{
"severity" : "error",
"expression": "code.coding.where(system = 'http://loinc.org' and code = '76536-2').exists() implies (value as Quantity).where(code='mm[Hg]' and system='http://unitsofmeasure.org').exists()"
}]
}
]
}
}
条件的第一部分确定您在何处使用适当的代码进行观察。如果是这样,它将要求您的值具有正确的单位。
编辑:添加更多关于这里发生的事情的信息。
我们正在使用 FHIRPath 约束来表达这个更复杂的验证规则。
.where(...)
(docs) 条件过滤掉 repeated/single 字段,如果它匹配条件,在这种情况下,就是在 LOINC 代码中匹配的 code/system 组合你在乎。
.exists()
(docs) returns 如果集合非空则为真。
implies
(docs) 仅当左侧条件为真时才计算右侧条件。
最后使用(... as Quantity)
运算符(docs)将value[x]
字段转换为特定类型,以便对其进行更多操作。