You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FSH(FHIR Shorthand)中基于另一字段值设置字段必填规则

实现方案

你需要在Profile中添加FHIR结构化约束(Constraint),通过FHIRPath表达式定义条件校验规则,即可实现status为final时mitigation必填的要求。
修改后的完整Profile定义如下:

Profile: SystemPatientDetectedIssue
Parent: DetectedIssue
Id: patient-detectedissue
Title: "Patient Alert DetectedIssue"
Description: "Profile of DetectedIssue for capturing patient alerts"

// 新增约束:status为final时mitigation必填
* ^constraint[0].key = "detectedissue-mitigation-required-final"
* ^constraint[0].severity = #error
* ^constraint[0].human = "当记录状态为final时,必须填写整改措施(mitigation)字段"
* ^constraint[0].expression = "status = 'final' implies mitigation.exists()"

* status from SystemDetectedIssueStatusValueSet (required)
* code 1..1
* code from SystemDetectedIssueCodeValueSet (required)
* patient 1..1
* identifiedDateTime 1..1
* detail 1..1
* author 1..1
* author.identifier 1..1
* author.identifier.type from SystemIdentifierValueSet (required)

* mitigation 0..1
* mitigation.action.coding from SystemDetectedIssueMitigationActionValueSet
* mitigation.action.text 1..1
* mitigation.date 1..1
* mitigation.author 1..1

规则说明

  • severity 设为#error表示违反该规则时,资源校验直接不通过
  • FHIRPath表达式status = 'final' implies mitigation.exists()的逻辑是:如果status取值为final,那么mitigation字段必须存在
  • 你已经对mitigation的子字段设置了1..1的 cardinality,因此只要mitigation存在,其子字段的必填校验会自动生效,无需额外配置
  • 如果你的Profile之前已经定义了其他约束,把constraint[0]的索引数字改成对应的顺序即可,避免覆盖原有约束

内容的提问来源于stack exchange,提问作者nirojshrestha019

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:39:02