元素组合的 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]字段转换为特定类型,以便对其进行更多操作。