# 虚拟护理和 AI 医生：他们需要的数据

> FHIR R4 数据中的虚拟就诊 — 预约、录入、家庭读数、就诊、随访 — 以及 AI 助手如何获得经过同意、带有来源标签的视图。已测试流程。

Source: https://developers.anpheros.com/zh/guides/virtual-care-ai-data

**虚拟诊所 — 无论是视频中的临床医生还是协助他们的 AI 助手 — 其质量仅取决于就诊前、就诊中和就诊后能够看到的患者数据：最近的测量值、活动性问题和用药、患者报告的内容以及所做决定的记录。** 视频通话是比较容易的部分。本页将虚拟就诊映射到 HL7 FHIR R4 资源，展示了如何为 AI 助手提供经过同意、带有来源标签的记录视图，并在 Anpheros Platform 上运行整个流程，包括我们在执行过程中发现的一个限制。

## 虚拟就诊即数据

| 阶段 | 发生的事情 | FHIR R4 资源 |
|---|---|---|
| 预约 | 患者选择视频就诊时间 | `Appointment` |
| 问诊 | 患者回答问题并报告症状 | `QuestionnaireResponse`, `Observation` (category `symptom`) |
| 家庭数据 | 自上次就诊以来血压计、体重秤或手表读数 | `Observation` (vital signs, activity), marked as device data |
| 准备 | 临床医生或为其服务的 AI 助手，审阅记录 | read: `Condition`, `MedicationStatement`, `AllergyIntolerance`, `Observation`, `DocumentReference` |
| 就诊 | 谁、何时、为何以及是虚拟就诊 | `Encounter` with `class` = `VR` (virtual) |
| 结果 | 诊断、药物变更、开具的检查、随访 | `Condition`, `MedicationStatement`, `ServiceRequest`, `CarePlan`, `Appointment` |
| 追踪 | 谁编写了每项内容，来自哪个系统 | `Provenance` on every write |

与面对面就诊相比，有两点不同。临床医生更依赖患者生成的数据（家庭读数、问卷），因此记录必须显示哪些值来自设备或患者，哪些来自临床医生。准备阶段是 AI 当今最有用的地方——将数月的读数总结为变化的内容——因此记录必须在患者同意的情况下可供软件读取。

## AI 的定位及其应看到的数据

| AI 角色 | 所需数据 | 不应获取的数据 |
|---|---|---|
| 录入助手（就诊前与患者交流） | 活动性问题和用药情况，以便提出相关问题 | 不需要的文件和记录 |
| 临床医生就诊前摘要 | 近期测量趋势、新症状、用药变更、近期结果 | 超出问题范围的多年历史记录 |
| 就诊后文档草稿 | 就诊情况、讨论内容、结果 | 其他患者的数据，任何时候 |
| 后续随访 | 护理计划和所需测量值 | 计划之外的任何内容 |

通用规则：为每个 AI 角色提供**最小的数据片段**以回答其问题，**标记每个值的来源**，以便模型和临床医生能够权衡家庭读数与实验室结果，**记录每次读取**以便患者可以看到 AI 看到的内容，并为任何诊断性操作**保持人工监督**。进行诊断或推荐治疗的 AI 可能被视为医疗器械软件（在美国由 FDA 管辖；在欧盟根据医疗器械法规和人工智能法案管辖）；数据平台不会改变这一点。

## Anpheros 上的流程，分步说明

下面的代码使用了 Anpheros TypeScript SDK，并在带有沙盒密钥的本地平台实例上运行。患者已经有来自血压计 (`author_type: device`) 的三次家庭血压读数、高血压作为一种病症以及依那普利作为一种药物。

```ts
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const subject = { reference: `Patient/${patientId}` };

// 1. Before the visit: the booking and the intake questionnaire
await anpheros.fhir.create({ resourceType: 'Appointment', status: 'booked', description: 'Video visit: blood pressure follow-up',
  start: '2026-10-14T15:00:00-05:00', end: '2026-10-14T15:20:00-05:00',
  participant: [{ actor: subject, status: 'accepted' }] } as any);
await anpheros.fhir.create({ resourceType: 'QuestionnaireResponse', status: 'completed', subject, authored: '2026-10-14T09:12:00-05:00',
  item: [
    { linkId: 'reason', text: 'What would you like to discuss?', answer: [{ valueString: 'Higher readings this week and dizziness in the morning' }] },
    { linkId: 'missed-doses', text: 'Did you miss any doses in the last 7 days?', answer: [{ valueBoolean: false }] },
  ] } as any, { author_type: 'patient' });

// The symptom itself, as a patient-reported Observation, so it reaches the context below
await anpheros.observations.create(patientId, { code: 'R42', system: 'http://hl7.org/fhir/sid/icd-10', display: 'Dizziness and giddiness',
  category: 'symptom', effective_at: '2026-10-13T07:45:00-05:00', value_text: 'Dizzy for a few minutes after getting up', author_type: 'patient' });

// 2. What the clinician (or an AI assistant helping them) reads: a budgeted, source-labelled context
const ctx = await anpheros.context.build({ patient: patientId, task: 'prepare a video visit',
  question: 'blood pressure trend and dizziness in the last 2 weeks', budget_tokens: 700, format: 'text' });

// 3. After the visit: the encounter, written as the clinician
const encounter = await anpheros.fhir.create({ resourceType: 'Encounter', status: 'finished',
  class: { system: 'http://terminology.hl7.org/CodeSystem/v3-ActCode', code: 'VR', display: 'virtual' },
  subject, period: { start: '2026-10-14T15:02:00-05:00', end: '2026-10-14T15:18:00-05:00' },
  reasonCode: [{ text: 'Blood pressure follow-up' }] } as any, { author_type: 'practitioner', source_system: 'video-clinic' });
```

第二步返回的上下文（700 个 token 中的第 487 个；这就是您会放在模型前面或展示给临床医生的内容）：

```
## Summary
Maria Lopez, 58 y, female. Active conditions: Essential (primary) hypertension. Active medications: Enalapril 10 mg.
Allergies: none recorded. Record: 0 lab values, 3 vital signs, 0 documents. As of 2026-10-13.
## Vitals
- Blood pressure panel: latest 2026-10-12 146/90 mm[Hg] ; weekly 2026-10-05: 150/93.5; 2026-10-12: 146/90 [device]
## Symptoms
- Dizziness and giddiness: 1 occurrence(s): 2026-10-13 [patient]
## Timeline
- 2026-10-13 symptom: Dizziness and giddiness: Dizzy for a few minutes after getting up [patient]
```

每一行都带有其来源 — 血压计为 `[device]`，症状为 `[patient]` — 并且读数被记录在访问日志中。就诊的来源显示为来自 `video-clinic` 的 `practitioner`，患者的时间线现在显示为：虚拟就诊、视频就诊预约、头晕、三次血压读数、药物和病症。

**我们在运行过程中发现的问题：** 上下文 API 今天不包含 `QuestionnaireResponse` 的答案。第一次运行，仅在问卷中包含头晕信息，生成的摘要中并未提及。将患者报告的症状记录为 `Observation`，类别为 `symptom`（如上），或者自行将问卷传递给您的模型。

## 授予 AI 代理访问权限并获得同意

当 AI 在他人的应用程序中运行时，它不会获得您的项目密钥。该应用程序通过 OAuth 2.1 和 SMART on FHIR 向患者征求同意，范围限定在 `patient/Observation.rs?category=vital-signs` 以内，有效期固定，可随时撤销。代理还可以通过 Anpheros MCP 服务器访问记录，除非患者允许更多，否则为只读。请参阅 [如何授予 AI 代理访问医疗记录的权限](https://developers.anpheros.com/zh/guides/ai-agent-access-medical-records) 和 [FHIR MCP 服务器](https://developers.anpheros.com/zh/guides/mcp)。

## Anpheros 的功能和局限性

Anpheros 提供记录及其周边控制：上表中所有资源的 FHIR R4 存储、每个应用的授权、每次写入的溯源信息、患者可查看的访问日志，以及将记录转化为预算化、标签化摘要以供模型使用的上下文 API。

它不提供视频通话、日程安排界面、电子处方、计费或临床决策支持，也不托管或选择 AI 模型。基于 Anpheros 构建的虚拟诊所需要自行实现这些功能，并承担相应的临床责任。

## 常见问题解答

### 什么是虚拟医生？
指通过视频、电话或消息远程看诊患者的临床医生。该术语也用于会与患者交谈的 AI 助手；实际上，这些助手是协助人类临床医生，而不是取代他们，并且依赖于相同的患者数据。

### 哪个 FHIR 资源将就诊标记为虚拟？
`Encounter.class`，其 v3 ActCode 为 `VR`（“virtual”）。预约是 `Appointment`；就诊是 `QuestionnaireResponse`，而对于症状，则是 `Observation`s。

### AI 医疗助手需要哪些数据？
仅需要其任务所需的数据：对于就诊前摘要，需要最近的测量趋势、新症状、活动性问题和药物，以及最近的结果 — 每项都标有其来源和时间。为其提供一个预算范围内的上下文，而不是整个记录。

### 如何将患者报告和设备数据与临床数据分开？
记录谁编写了每项内容。在 Anpheros 中，每次写入都带有作者类型 — 患者、设备、执业者、导入或 AI — 并且提供给模型的上下文会用它来标记每一行。

### AI 助手能否在未经患者同意的情况下读取患者记录？
在 Anpheros 上不能。除创建记录的应用程序之外的应用程序需要患者的 OAuth 同意，该同意仅限于他们选择的范围和期限，并且每次读取都会出现在其访问日志中。

## 相关资源

- [AI 医疗保健应用](https://developers.anpheros.com/zh/guides/ai-healthcare)
- [如何使用 FHIR 后端构建 AI 医疗保健应用](https://developers.anpheros.com/zh/guides/build-ai-healthcare-app)
- [如何使用结构化数据构建医疗聊天机器人](https://developers.anpheros.com/zh/guides/ai-medical-assistant)
- [FHIR 中的可穿戴设备数据](https://developers.anpheros.com/zh/guides/wearable-data-fhir)：虚拟就诊所依赖的家庭读数
- [如何构建个人健康记录应用](https://developers.anpheros.com/zh/guides/personal-health-record-app)
- [医疗数据溯源详解](https://developers.anpheros.com/zh/guides/medical-data-provenance)
- [使用 FHIR 进行远程患者监控](https://developers.anpheros.com/zh/guides/remote-patient-monitoring-fhir)
- [医疗应用和 AI 代理的用药数据](https://developers.anpheros.com/zh/guides/medication-data-ai-agents)
