如何从FHIR Questionnaire的GCS示例中程序化获取实际评分值?FHIR问卷资源的评分计算逻辑如何定义?
我来帮你拆解这两个关于FHIR Questionnaire和QuestionnaireResponse的核心问题,结合GCS的场景来解释会更清楚:
一、实际评分值存储在哪里?
你提到的LOINC ValueSet(比如LL357-5)里的概念代码(如LA6562-8)本身并不直接携带数值评分——LOINC的概念属性里会包含这些分值,但FHIR的ValueSet资源只是引用这些概念,不会重复存储分值映射。要在FHIR体系里关联选项和评分,通常有两种方式:
在Questionnaire的item中通过扩展定义分值
你可以给Questionnaire里的每个选项(item.option)添加HL7官方的评分扩展,直接绑定分值。比如:{ "item": [ { "linkId": "motor-response", "text": "Motor Response", "type": "choice", "option": [ { "valueCoding": { "system": "http://loinc.org", "code": "LA6562-8", "display": "No motor response" }, "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-option-score", "valueInteger": 1 } ] }, { "valueCoding": { "system": "http://loinc.org", "code": "LA6567-7", "display": "Obeys commands" }, "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-option-score", "valueInteger": 6 } ] } ] } ] }这种方式把分值直接嵌入Questionnaire的选项中,系统渲染或计算时可以直接读取。
用Observation资源存储最终评分结果
QuestionnaireResponse主要用于记录用户的原始回答(比如选择了哪个LOINC代码),而计算后的GCS总分属于衍生的临床数据,更适合放在Observation资源里。你可以通过Observation.derivedFrom引用QuestionnaireResponse的ID,把最终的GCS评分存在Observation的valueInteger字段中。
二、Questionnaire能否指示或指向评分计算方式?
当然可以,FHIR提供了多种机制来定义评分逻辑,让系统能自动根据回答计算出结果:
使用Questionnaire的
scoring元素
如果是简单的求和评分(比如GCS是三个维度分值相加),可以直接设置Questionnaire的scoring字段为http://hl7.org/fhir/questionnaire-scoring#sum,同时给每个选项绑定分值(如上面的扩展方式)。系统识别这个scoring类型后,会自动累加所有选项的分值得到总分。用Expression扩展定义复杂计算逻辑
对于更复杂的规则,比如某些选项有特殊权重,可以使用http://hl7.org/fhir/StructureDefinition/questionnaire-expression扩展,在Questionnaire的item或根节点里编写FHIRPath表达式。比如计算GCS总分的FHIRPath表达式:%response.item.where(linkId='eye-response').answer.valueCoding.extension('http://hl7.org/fhir/StructureDefinition/questionnaire-option-score').valueInteger + %response.item.where(linkId='verbal-response').answer.valueCoding.extension('http://hl7.org/fhir/StructureDefinition/questionnaire-option-score').valueInteger + %response.item.where(linkId='motor-response').answer.valueCoding.extension('http://hl7.org/fhir/StructureDefinition/questionnaire-option-score').valueInteger这个表达式会从QuestionnaireResponse中提取三个维度的选项分值,求和得到GCS总分。
关联Library资源承载复杂计算逻辑
如果计算逻辑涉及多组临床规则,可以把CQL编写的逻辑放在Library资源里,然后在Questionnaire中通过扩展引用这个Library的ID。系统可以调用Library里的逻辑来完成评分计算。
程序化获取GCS评分的步骤
- 从Questionnaire中读取每个选项绑定的分值扩展;
- 从QuestionnaireResponse中提取用户选择的每个维度的Coding;
- 匹配对应的分值,按Questionnaire定义的计算逻辑(如求和)得到总分;
- 将总分存入Observation资源,或在QuestionnaireResponse的扩展中添加计算结果(更推荐用Observation承载衍生数据)。
内容的提问来源于stack exchange,提问作者oligofren

