远程医疗咨询应用后端模板
安全的预约、候诊室、实时在线状态和会议审核日志
一个生产就绪的 远程医疗后端 在 Back4app 上,具有预约、虚拟候诊室、以 HIPAA 为中心的会议记录、病人/Provider 资料、实时在线状态和审核轨迹。包括 ER 图,数据字典,JSON 模式,API 游乐场,以及一个 AI 代理提示,便于快速启动。
关键要点
获取一个处理预约生命周期、虚拟候诊室、实时存在和以HIPAA为中心的会议日志的远程医疗后端,让您的团队专注于临床用户体验和集成。
- 了解HIPAA的会议日志 — 捕获视频会议元数据、时间戳、参与者和加密审计负载,作为追加-only 日志以便进行可追溯性。
- 虚拟候诊室 — 管理患者登记、队列顺序、预计等待时间和Provider的准备情况,并保留明确的候诊室记录。
- 实时存在更新 — 通过Live Queries推送存在和队列变化,以便Provider和患者无需轮询即可看到准确状态。
- 预约优先工作流程 — 通过链接患者和Provider指针对模型进行调度、取消、重新调度和缺席处理。
- 跨平台就绪 — 相同的后端通过REST和GraphQL API及SDK支持移动、Web和kiOSk客户端,适用于{tech}。
什么是远程医疗咨询应用模板?
Back4app是一个后端即服务(BaaS),用于快速产品交付。远程医疗咨询应用模板建模预约、虚拟候诊室、会话日志和存在状态,使开发团队能够更快地构建符合HIPAA的远程医疗功能。
最佳适用:
概述
远程医疗工作流程需要准确的预约状态、队列管理和会话元数据的安全记录,以确保合规和账单对账。
此模板定义了患者、Provider、预约、候诊室、视频会议日志和审计日志,具有所有权和CLP建议,以便团队能够快速实施远程医疗工作流程并考虑合规性。
核心远程医疗功能
本中心的每个技术卡都使用相同的远程医疗后端架构,包括患者、Provider、预约、候诊室、视频会议日志和审核日志。
预约生命周期
创建、重新安排、取消和列出与患者和 Provider 指针及生命周期状态相关的预约。
虚拟候诊室
WaitingRoom 类跟踪队列顺序、患者签到时间、预计等待时间和分配给 Provider 的信息。
符合HIPAA要求的视频会议日志
VideoSessionLog 记录会议的开始/结束时间、参与者、持续时间、事件标记以及用于审计的加密元数据。
患者和 Provider 的个人资料
患者和 Provider 类别存储调度和临床背景所需的重要身份、联系及元数据。
实时状态和队列更新
使用 Live Queries 广播 Provider 的可用性、候诊状态和会议状态变更。
集中审核日志
AuditLog记录了谁在何时以及为何执行操作,以便于合规和故障排除。
为什么要使用Back4app构建您的远程医疗后端?
Back4app去除了后台操作开销,团队可以专注于临床流程、安全控制和用户体验。
- •安全的会话记录: 将视频会话元数据和加密有效负载存储在仅追加的日志中,以支持审计和报销工作流程。
- •虚拟候诊室原语: 内置候诊室和排队模型让您在无需自定义实时处理的情况下管理签到、分诊和Provider指派。
- •实时和API灵活性: 使用Live Queries进行状态和排队更新,同时暴露REST和GraphQL用于计划呼叫和集成。
快速推出远程医疗功能,使用合规的数据模型和现成的实时模式。
核心优势
一个帮助产品团队快速发布安全、可审计咨询工作流程的远程医疗后端。
符合HIPAA的审核面板
不可变的会话日志和集中审核记录使合规和事件审查变得简单。
减少缺席和更顺畅的诊所流程
虚拟候诊室和签到流程帮助诊所管理患者排队,减少临床医生的闲置时间。
实时诊所协调
实时存在感和排队更新为Provider、患者和员工创造了同步的体验。
以权限为先的架构
ACL/CLP模式和云代码钩子防止未经授权访问个人身份信息和敏感会话数据。
跨平台API
REST和GraphQL端点为网络门户、移动应用和与电子健康记录或计费系统的集成提供服务。
一键式AI辅助启动
使用AI代理提示生成有效的后端,种子示例数据,并搭建前端集成。
准备好构建一个符合HIPAA标准的远程医疗解决方案吗?
让 Back4app AI代理为您的远程医疗后端搭建框架,并从一个提示生成预约、等待室、会话日志和审计记录。
免费开始——每月50个AI代理提示,无需信用卡
技术栈
此远程医疗后端模板中包含的一切。
ER 图
远程医疗后端架构的实体关系模型。
涵盖患者、Provider、预约生命周期、候诊室、会话日志和审核的架构。
查看图表源
erDiagram
PatientProfile ||--o{ Appointment : "books"
ProviderProfile ||--o{ Appointment : "assigned to"
Appointment ||--o{ VirtualWaitingRoom : "has"
Appointment ||--o{ VideoSessionLog : "logs"
Appointment ||--o{ AuditLog : "audited by"
ProviderProfile ||--o{ VideoSessionLog : "conducts"
PatientProfile ||--o{ VideoSessionLog : "attends"
PatientProfile {
String objectId PK
Pointer user FK
String fullName
Date dateOfBirth
String medicalRecordNumber
String phone
String email
Date consentSignedAt
Date createdAt
Date updatedAt
}
ProviderProfile {
String objectId PK
Pointer user FK
String fullName
String licenseNumber
String specialty
Boolean telehealthEnabled
Object availability
Date createdAt
Date updatedAt
}
Appointment {
String objectId PK
Pointer patient FK
Pointer provider FK
Date scheduledAt
Number durationMinutes
String status
Boolean prefersVideo
String notes
Pointer waitingRoom FK
Date createdAt
Date updatedAt
}
VirtualWaitingRoom {
String objectId PK
Pointer appointment FK
Array participants
Number queuePosition
Array announcements
Boolean isActive
Date createdAt
Date updatedAt
}
VideoSessionLog {
String objectId PK
Pointer appointment FK
Pointer provider FK
Pointer patient FK
Date startedAt
Date endedAt
Number durationSeconds
Object mediaAudit
Object consentSnapshot
String notesSummary
Date createdAt
Date updatedAt
}
AuditLog {
String objectId PK
Pointer actor FK
String entityType
String entityId
String action
String summary
Object metadata
Date createdAt
Date updatedAt
}
集成流程
典型运行流程包括身份验证、候诊室转换、会话开始/停止和安全视频会话日志记录。
查看图表源
sequenceDiagram
participant User
participant App as Telehealth Consultation App
participant Back4app as Back4app Cloud
User->>App: Sign in with secure credentials (MFA)
App->>Back4app: POST /login (return session token)
Back4app-->>App: Session token + user role
User->>App: View upcoming telehealth appointment
App->>Back4app: GET /classes/Appointment?where={"patient":Pointer("PatientProfile","pat1")}
Back4app-->>App: Appointment object with waitingRoom pointer
User->>App: Join virtual waiting room 10 min before scheduledAt
App->>Back4app: POST /classes/VirtualWaitingRoom/{wrId}/join (create participant pointer) + POST /classes/AuditLog
Back4app-->>App: Participant added + audit confirmation
Provider->>App: Open provider console and accept next patient
App->>Back4app: PUT /classes/Appointment/{apptId} { status: "in_session" } + POST /classes/VideoSessionLog
Back4app-->>App: Appointment updated + VideoSessionLog objectId
App->>Back4app: LiveQuery subscribe on VirtualWaitingRoom and VideoSessionLog
Back4app-->>App: Live events for join/leave and session updates
App-->>User: Real-time waiting-room countdown and "Your provider is ready" notification数据字典
Telehealth架构中每个类的字段级参考。
| 字段 | 类型 | 描述 | 必需 |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | 自动 |
| user | Pointer<_User> | Linked Back4app user account | |
| fullName | String | Patient full name | |
| dateOfBirth | Date | Patient date of birth | — |
| medicalRecordNumber | String | Internal MRN for cross-references | |
| phone | String | Contact phone number | — |
| String | Contact email | — | |
| consentSignedAt | Date | Timestamp when telehealth consent was recorded | — |
| createdAt | Date | Auto-generated creation timestamp | 自动 |
| updatedAt | Date | Auto-generated last-update timestamp | 自动 |
10 字段在 PatientProfile 中
安全性和权限
ACL、CLP 和 Cloud Code 如何保护个人识别信息(PII)、会话日志和等待室状态。
基于角色的访问控制
为患者、Provider、诊所工作人员和管理员定义角色,以便每个人仅查看允许的记录和操作。
仅追加的会话日志
通过 CLP 和 Cloud Code 强制执行 VideoSessionLog 的仅追加约束,以便日志在审计中保持防篡改。
加密的元数据和最少的 PII
仅在 VideoSessionLog 中存储必要的会话元数据并加密敏感负载;避免在后端存储原始媒体。
模式 (JSON)
可复制到 Back4app 的原始 JSON 模式定义或用作实现参考。
{
"classes": [
{
"className": "PatientProfile",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"user": {
"type": "Pointer",
"required": true,
"targetClass": "_User"
},
"fullName": {
"type": "String",
"required": true
},
"dateOfBirth": {
"type": "Date",
"required": false
},
"medicalRecordNumber": {
"type": "String",
"required": true
},
"phone": {
"type": "String",
"required": false
},
"email": {
"type": "String",
"required": false
},
"consentSignedAt": {
"type": "Date",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "ProviderProfile",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"user": {
"type": "Pointer",
"required": true,
"targetClass": "_User"
},
"fullName": {
"type": "String",
"required": true
},
"licenseNumber": {
"type": "String",
"required": true
},
"specialty": {
"type": "String",
"required": true
},
"telehealthEnabled": {
"type": "Boolean",
"required": true
},
"availability": {
"type": "Object",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Appointment",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"patient": {
"type": "Pointer",
"required": true,
"targetClass": "PatientProfile"
},
"provider": {
"type": "Pointer",
"required": true,
"targetClass": "ProviderProfile"
},
"scheduledAt": {
"type": "Date",
"required": true
},
"durationMinutes": {
"type": "Number",
"required": true
},
"status": {
"type": "String",
"required": true
},
"prefersVideo": {
"type": "Boolean",
"required": true
},
"notes": {
"type": "String",
"required": false
},
"waitingRoom": {
"type": "Pointer",
"required": false,
"targetClass": "VirtualWaitingRoom"
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "VirtualWaitingRoom",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"appointment": {
"type": "Pointer",
"required": true,
"targetClass": "Appointment"
},
"participants": {
"type": "Array",
"required": false
},
"queuePosition": {
"type": "Number",
"required": false
},
"announcements": {
"type": "Array",
"required": false
},
"isActive": {
"type": "Boolean",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "VideoSessionLog",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"appointment": {
"type": "Pointer",
"required": true,
"targetClass": "Appointment"
},
"provider": {
"type": "Pointer",
"required": true,
"targetClass": "ProviderProfile"
},
"patient": {
"type": "Pointer",
"required": true,
"targetClass": "PatientProfile"
},
"startedAt": {
"type": "Date",
"required": true
},
"endedAt": {
"type": "Date",
"required": true
},
"durationSeconds": {
"type": "Number",
"required": true
},
"mediaAudit": {
"type": "Object",
"required": false
},
"consentSnapshot": {
"type": "Object",
"required": false
},
"notesSummary": {
"type": "String",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "AuditLog",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"actor": {
"type": "Pointer",
"required": true,
"targetClass": "_User"
},
"entityType": {
"type": "String",
"required": true
},
"entityId": {
"type": "String",
"required": true
},
"action": {
"type": "String",
"required": true
},
"summary": {
"type": "String",
"required": true
},
"metadata": {
"type": "Object",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}使用 AI 代理构建
使用 Back4app AI 代理从此模板生成完整的远程医疗应用程序,包括后端模式、示例数据和前端集成代码片段。
在 Back4app 上创建一个远程医疗后端,使用以下模式和行为。 模式: 1. 病人: 用户(指向用户的指针,必填),全名(字符串,必填),出生日期(日期,必填),联系方式(对象),病例号(字符串,选填)。 2. Provider: 用户(指向用户的指针,必填),名称(字符串,必填),执照号码(字符串),专长(数组),可用性(对象)。 3. 预约: 病人(指向病人的指针,必填),Provider(指向 Provider 的指针,必填),预定时间(日期,必填),时长分钟(数字,必填),状态(字符串: 预定,已签到,正在咨询,已完成,已取消),备注(字符串,选填)。 4. 等候室: 预约(指向预约的指针,必填),签到时间(日期),队列位置(数字),预计等待时间(数字),状态(字符串: 等待,准备,就绪)。 5. 视频会议记录: 预约(指向预约的指针,必填),Provider(指向 Provider 的指针,必填),病人(指向病人的指针,必填),开始时间(日期),结束时间(日期),时长(数字),事件(数组),加密负载(对象,选填);对于大多数角色为追加模式。 6. 审计日志: 操作员(指向用户的指针,必填),操作(字符串,必填),实体类型(字符串,必填),实体 ID(字符串,必填),负载(对象);对象 ID,创建时间,更新时间(系统)。 安全性: - 使用 ACL/CLP 和云代码限制访问。视频会议记录应仅对标准用户可追加,且仅可由受信任的诊所管理员编辑。加密敏感负载并避免存储媒体块。 认证: - 员工和病人注册/登录流程。Provider 帐户需要验证标记。 行为: - 认证,列出用户的即将到来的预约,将病人签到到等候室,Provider 接受病人并开始写入视频会议记录的会话,并为敏感转变保留审计日志条目。 交付: - 带有模式、ACL、CLP 的 Back4app 应用程序;用于认证、病人签到、管理等候室、开始会话和捕获会话日志的示例前端代码片段。
按下面的按钮打开带有此模板提示预填充的代理。
这是没有技术后缀的基本提示。您可以在之后调整生成的前端栈。
API 游乐场
在 Telehealth 模式下尝试 REST 和 GraphQL 端点。响应使用模拟数据,无需 Back4app 账户。
使用与此模板相同的模式。
选择您的技术
展开每个卡片以获取集成步骤、状态模式、数据模型示例和离线说明。
Flutter 远程医疗后端
React 远程医疗后端
React 原生 远程医疗后端
Next.js 远程医疗后端
JavaScript 远程医疗后端
Android 远程医疗后端
iOS 远程医疗后端
Vue 远程医疗后端
Angular 远程医疗后端
GraphQL 远程医疗后端
REST API 远程医疗后端
PHP 远程医疗后端
.NET 远程医疗后端
您从每项技术中获得的内容
每个栈都使用相同的远程医疗后端架构和 API 合同。
统一的远程医疗数据管理
轻松管理患者记录、预约和日志,使用集中式模式。
安全的视频会议用于远程医疗
HIPAA 合规的视频会议,以确保患者在咨询过程中的隐私。
实时预约调度
允许患者在应用内无缝预约和管理预约。
虚拟候诊室功能
创建和管理虚拟候诊室以提升患者体验。
REST/GraphQL API 用于集成
灵活的 API 可有效连接其他健康服务和工具。
远程医疗的会话日志
自动会话日志,以确保合规和审查,以跟踪患者互动。
远程医疗咨询框架比较
比较支持技术的设置速度、SDK 风格和 AI 支持。
| 框架 | 设置时间 | 远程医疗咨询的好处 | SDK类型 | AI支持 |
|---|---|---|---|---|
| ~5 分钟 | 移动和网络上的远程医疗咨询唯一代码库。 | Typed SDK | 完整 | |
| 大约 5 分钟 | 远程医疗咨询的快速网络控制面板。 | Typed SDK | 完整 | |
| 不足 5 分钟 | 用于远程医疗咨询的跨平台移动应用。 | Typed SDK | 完整 | |
| ~3–7 分钟 | 用于远程医疗咨询的服务器渲染网页应用。 | Typed SDK | 完整 | |
| 不足 5 分钟 | 用于远程医疗咨询的轻量级网页集成。 | Typed SDK | 完整 | |
| ~5 分钟 | 用于远程医疗咨询的原生 Android 应用。 | Typed SDK | 完整 | |
| 大约 5 分钟 | 用于远程医疗咨询的原生 iOS 应用。 | Typed SDK | 完整 | |
| 不足 5 分钟 | Reactive 用于远程医疗咨询的网页用户界面。 | Typed SDK | 完整 | |
| ~3–7 分钟 | 用于远程医疗咨询的企业网页应用。 | Typed SDK | 完整 | |
| ~2 分钟 | 灵活的 GraphQL API,用于远程医疗咨询。 | GraphQL API | 完整 | |
| 不足 2 分钟 | REST API 集成用于远程医疗咨询。 | REST API | 完整 | |
| ~3–5 分钟 | 用于远程医疗咨询的服务器端 PHP 后端。 | REST API | 完整 | |
| 不足 5 分钟 | .NET 后端用于远程医疗咨询。 | Typed SDK | 完整 |
设置时间反映从启动到第一次预约和使用此模板架构的候诊室查询的预期持续时间。
常见问题解答
关于使用此模板构建远程医疗后端的常见问题。