AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

如何规范化医疗数据

教程:将来自多个来源的医疗数据转化为一种可比较的形式——LOINC 查询,UCUM 单位,ISO 日期,参考范围,重试时不重复,以及根据欧洲实验室配置文件进行验证。

标准化医疗数据意味着将以多种形式接收到的值转换为一种可比较的形式:相同的测试使用相同的代码,相同的单位系统,日期采用一种格式,每个值都附带其参考范围和来源,并且没有重复。本教程演示了如何在数据进入 HL7 FHIR R4 记录之前执行此操作:查询 LOINC 和 ATC 代码,使用 UCUM 单位,拒绝模糊日期,保留范围,避免重试时重复,并根据欧洲实验室配置文件检查结果。所示的每个响应均来自 Anpheros API。

重要性

同样的 HbA1c 结果可能以多种形式出现,例如“HbA1c 6,4 %”、“Hemoglobina glicozilata: 6.4”、“Glycated haemoglobin 46 mmol/mol”或某个实验室独有的代码。在这些值统一为一个代码和单位之前:

标准化应在数据进入记录的入口点完成,只需一次,而不是在之后读取它的每个应用程序中都进行。

标准化值包含哪些部分

部分 标准化形式 示例
测量内容 来自标准系统的代码 LOINC 4548-4 (HbA1c), RxNorm 6809 (metformin), ICD-10 E11 (2型糖尿病)
值 数字,或仅当结果非数字时的文本 6.4
单位 UCUM %, mg/dL, mm[Hg], kg
时间 ISO 8601 日期时间,当时间很重要时包含时区 2026-10-01T07:30:00Z
正常范围 低值和高值,使用相同单位 4.0–5.6
来源 谁生成的以及来自哪个系统 import 来自 labx
标识 使重复项可识别的内容 幂等性键或源标识符

哪些代码系统与哪些资源类型对应,请参见 FHIR 代码系统。

步骤 1:查找代码

通过英文或罗马尼亚文名称或缩写搜索平台的术语:

curl "https://platform.anpheros.com/v1/terminology/loinc?q=hba1c" -H "Authorization: Bearer $KEY"
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hemoglobina%20glicozilata" -H "Authorization: Bearer $KEY"

两者都返回相同的概念:

{"data": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
           "display_ro": "Hemoglobină glicozilată (HbA1c)", "category": "laboratory", "unit": "%"}], "total": 1}

对于药品,Anpheros Search 按名称或品牌查找物质,并提供其 RxNorm 成分代码和 EMA 产品编号:

curl "https://platform.anpheros.com/v1/search?q=metformin&type=treatment" -H "Authorization: Bearer $KEY"

unit 字段是 LOINC 为该测试期望的单位。使用它来检查您收到的内容。为每个源构建从其自身名称到代码的映射,每个源一次,并将其保存在您的集成中。不要在写入时猜测:当名称不明确且源中没有任何内容可以解决时,将其保留为未映射并询问源。如何将实验室结果导入 FHIR 记录 显示了未映射的实验室标记如何保留和报告。

步骤 2:使用代码、单位和范围进行编写

curl -X POST "https://platform.anpheros.com/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" -H "Idempotency-Key: lab-77-hba1c" -d '{
  "code": "4548-4", "category": "laboratory",
  "value": 6.4, "unit": "%", "effective_at": "2026-10-01T07:30:00Z",
  "reference_range": {"low": 4.0, "high": 5.6},
  "author_type": "import"
}'
{"id": "3296315c-…", "code": "4548-4", "system": "http://loinc.org", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
 "category": "laboratory", "effective_at": "2026-10-01T07:30:00Z", "value": 6.4, "unit": "%",
 "reference_range": {"low": 4.0, "high": 5.6}, "status": "final", "fhir": "Observation/3296315c-…"}

当您仅发送代码时,平台会在 REST API 和 FHIR API (/fhir/R4) 上填充标准的 LOINC 名称,以便所有应用程序读取相同的 display。您自己发送的 display 将保持不变。

请保留原始措辞。对于实验室报告,FHIR Observation 中的 code.text 会在实验室名称(“糖化血红蛋白 (HbA1c)”)旁边保留 LOINC 编码。患者仍然可以识别他们的纸质报告,并且如果映射受到质疑,也不会丢失任何信息。

步骤 3:单位

使用 UCUM 代码:mg/dL、mmol/L、%、mm[Hg]、kg、cm、/min、Cel。以下两条规则可防止大多数错误:

Anpheros 不会为您转换单位;它会存储您发送的单位。

第 4 步:日期

在写入之前,请使用源已知格式将日期转换为 ISO 8601。01.10.2026 在罗马尼亚和许多欧洲国家表示 10 月 1 日,但 10/01/2026 仅在美国表示 10 月 1 日。API 会拒绝任何非 ISO 格式的内容,而不是进行猜测:

{"error": {"type": "invalid", "message": "Input should be a valid datetime or date, invalid character in year (at effective_at)", "field": "effective_at"}}

实验室连接器是一个例外:它接受 DD.MM.YYYY 和 DD/MM/YYYY,因为它知道它正在读取一份欧洲报告。

对于一天中的时间很重要的测量值(血压、血糖、药物剂量),请发送带有时区的日期。布加勒斯特时间晚上 11:30 的读数在 UTC 时间是前一天,患者期望它显示在他们测量当天的日期。

步骤 5:无重复项

重复项可能源于重试、同一报告被发送两次以及同一值通过两条路径到达。

步骤 6:与配置文件进行检查

对于实验室结果,在依赖平台提供的资源之前,请询问平台该资源与 HL7 Europe 实验室报告配置文件相比如何:

curl -X POST "https://platform.anpheros.com/fhir/R4/Observation/\$validate?profile=eu-lab" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" -d '{
  "resourceType": "Observation", "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"text": "HbA1c"}, "subject": {"reference": "Patient/'$PID'"},
  "valueQuantity": {"value": 6.4, "unit": "%"}
}'

此非标准化结果会得到一个精确的列表:

{"resourceType": "OperationOutcome", "issue": [
  {"severity": "error", "code": "invalid", "diagnostics": "Observation.code must carry a LOINC coding.", "expression": ["Observation.code"]},
  {"severity": "error", "code": "required", "diagnostics": "Observation.effective[x] is required.", "expression": ["Observation.effective"]},
  {"severity": "warning", "code": "business-rule", "diagnostics": "valueQuantity should carry a UCUM system and code.", "expression": ["Observation.valueQuantity"]},
  {"severity": "warning", "code": "informational", "diagnostics": "No referenceRange: interpretation will need the laboratory's ranges.", "expression": ["Observation.referenceRange"]},
  {"severity": "information", "code": "informational", "diagnostics": "No performer (laboratory) recorded.", "expression": ["Observation.performer"]},
  {"severity": "information", "code": "informational", "diagnostics": "No issued time (when the laboratory released the result).", "expression": ["Observation.issued"]}]}

每个问题都对应上述步骤中的一个。在您的集成测试中运行 $validate,并使用来自每个源的真实样本。

步骤 7:保留来源

标准化会改变值的书写方式,但不会改变其来源。发送 author_type(device、import、practitioner、patient)和 X-Anpheros-Source-System 来进行每一次写入。这使得医生、审计员或 AI 模型能够区分实验室结果和在家中输入的数值。请参阅 医学数据溯源详解。

检查清单

常见问题解答

什么是医疗数据标准化?

将来自不同来源的健康数据转换为一种标准形式:共享代码(LOINC 用于测试和测量,ICD-10 用于诊断,ATC 用于药物),UCUM 单位,ISO 日期,参考范围和记录的来源,以便可以比较、合并和交换来自不同系统的值。

我应该将所有值转换为一个单位吗?

只要单位是有效的 UCUM 单位且与代码匹配,就存储源测量时的单位,并在显示或分析时进行转换。这样可以使每个存储的值都可追溯到其原始报告。

标准化可以完全自动化吗?

大部分可以。源中的代码、已知名称和格式正确的单位可以自动映射。含糊不清的名称和未知的本地代码需要每种来源一次人工决策,之后映射即可自动进行。

相关内容

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy