AnpherosAnpheros PlatformDevelopers

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

虚拟护理和 AI 医生所需的数据

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

虚拟诊所 — 无论是视频中的临床医生还是协助他们的 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) 的三次家庭血压读数、高血压作为一种病症以及依那普利作为一种药物。

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 代理访问医疗记录的权限 和 FHIR MCP 服务器。

Anpheros 的功能和局限性

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

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

常见问题解答

什么是虚拟医生?

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

哪个 FHIR 资源将就诊标记为虚拟?

Encounter.class,其 v3 ActCode 为 VR(“virtual”)。预约是 Appointment;就诊是 QuestionnaireResponse,而对于症状,则是 Observations。

AI 医疗助手需要哪些数据?

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

如何将患者报告和设备数据与临床数据分开?

记录谁编写了每项内容。在 Anpheros 中,每次写入都带有作者类型 — 患者、设备、执业者、导入或 AI — 并且提供给模型的上下文会用它来标记每一行。

AI 助手能否在未经患者同意的情况下读取患者记录?

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

相关资源

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