CQF Ruler HAPI FHIR服务器执行$evaluate-measure时无法加载CQL/ELM求助
问题排查与解决方案
核心问题定位
报错HAPI-0389: Failed to call access method: java.lang.IllegalStateException: Unable to load CQL/ELM for library: .的关键在于CQF Ruler无法正确识别Library中的CQL/ELM内容,哪怕资源已存储在服务器中。
针对性排查步骤
- 检查Library的content条目编码格式
确保text/cql和application/elm+json的content字段是Base64编码的字符串,而非原始文本。CQF Ruler要求嵌入的代码内容必须经过Base64编码,直接存储原始CQL/ELM会导致加载失败。 - 验证Library的内容类型匹配
确认每个content条目的contentType准确对应:- CQL内容的
contentType必须是text/cql - ELM内容的
contentType必须是application/elm+json
同时检查Library的type字段是否严格设为logic-library,不能有拼写错误。
- CQL内容的
- 检查Measure对Library的引用完整性
除了Measure.library匹配Library的url,还要确保Measure的relatedArtifact中正确声明依赖的Library,包括完整的url和version,示例格式如下:"relatedArtifact": [ { "type": "depends-on", "resource": { "url": "[LibraryUrl]", "version": "[LibraryVersion]", "display": "[LibraryName]" } } ] - 测试CQF Ruler的Library解析能力
调用CQF Ruler的$resolve-library操作直接验证单个Library的有效性:
如果返回成功并包含解析后的ELM结构,说明Library格式合规;若失败,根据返回的OperationOutcome信息定位具体格式问题。POST /Library/[LibraryId]/$resolve-library HTTP/1.1 Content-Type: application/fhir+json - 确认Patient Bundle的资源完整性
执行$evaluate-measure时,传入的Patient Bundle必须包含Measure/Library依赖的所有临床资源(如Condition、MedicationRequest等),缺失必要资源可能触发间接加载错误。
正确执行流程
- 重新上传符合要求的Library:每个content条目使用Base64编码的CQL/ELM内容,确保
contentType和type字段准确无误。 - 上传关联的Measure,确认
library字段和relatedArtifact中的依赖引用完全匹配目标Library的url和version。 - 使用包含完整患者数据的Bundle调用
$evaluate-measure,示例请求如下:POST /Measure/[MeasureId]/$evaluate-measure HTTP/1.1 Content-Type: application/fhir+json Body: { "resourceType": "Parameters", "parameter": [ { "name": "periodStart", "valueDate": "2023-01-01" }, { "name": "periodEnd", "valueDate": "2023-12-31" }, { "name": "bundle", "valueBundle": [完整的Patient Bundle JSON内容] } ] }
内容的提问来源于stack exchange,提问作者kartik kumar
相关产品推荐
相关产品推荐

