如何在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
相关产品推荐
相关产品推荐

