Files
xh-medical-sign-web/patient-h5/README.md

84 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# patient-h5
医签通患者/家属手机签署端,是通过短信或二维码打开的移动 H5 页面。
## 产品定位
patient-h5 只服务于一次或一组知情同意签署,不是完整的移动版电子病历,也不需要患者安装原生 App。
## 用户流程
```text
短信/二维码打开
→ 短信验证码或签署 Token 校验
→ 确认患者和实际签署人
→ 选择与患者的关系
→ 阅读文书
→ 勾选同意/不同意项目
→ 手写签名
→ 提交
→ 显示签署结果
```
## 页面规划
- 签署入口页;
- 身份/手机号验证页;
- 文书阅读页;
- 签署人关系确认页;
- 手写签名页;
- 提交成功页;
- 过期、拒签和异常页。
## 安全要求
- 签署链接使用短时效、不可猜测的 Token
- 后端校验 Token、任务状态和文书版本
- URL 不直接携带身份证号、完整病历等敏感信息;
- 避免在本地长期保存患者信息和签名数据;
- 防止重复提交和重复签署;
- 所有最终状态以服务端结果为准;
- 需要兼容微信、手机浏览器和常见 iOS/Android 浏览器。
## 当前技术栈
```text
Vue 3
TypeScript
Vite
Vue Router
Axios
```
Vant、Zod、PDF 预览、第三方签名组件和自动化测试暂不接入;当前签名区域使用原生 Canvas先验证业务流程和交互。
患者端应采用移动优先设计,按钮、文字和签名区域需要适合老年患者使用。
## API 接入
开发环境默认使用 `/api`,由 `vite.config.ts` 代理到 `https://ipad.shenynet.com`;生产环境需要由 Nginx 或医院网关配置同路径反向代理。
已接入的真实接口:
- `POST /api/v1/sign-deliveries/token/consume`:消费短信/二维码一次性签署 Token
- `POST /api/v1/sign-deliveries/{taskId}/signature`:以 `multipart/form-data` 上传真实 PNG 签名和签署元数据。
真实流程会在进入页面时消费 Token并在提交时携带 `deliveryId``uploadToken` 和幂等键。Token 消费接口目前只返回投递凭证,不返回正式文书内容,因此真实模式会停在安全提示页,不会让患者在未阅读正式文书时提交签名。待后端提供患者端文书读取接口后,再接入 PDF/文书展示和正式提交闭环。
默认 `VITE_USE_MOCK=true` 时可以无 Token 演示完整页面交互;联调真实 Token 流程时设置 `VITE_USE_MOCK=false`,或直接使用带 `token`/`signToken`/`t` 查询参数的签署链接。
## 与医护端的关系
医护端创建签署任务patient-h5 完成签署,后端统一保存结果:
```text
clinical-web → 后端签署任务 → patient-h5
patient-h5 → 后端提交签署结果 → clinical-web / 电子病历
```
patient-h5 不直接访问医院完整电子病历。
## 当前状态
已完成 Vite 基础初始化、路由、签署流程状态管理和第一版移动端页面骨架。Mock 模式可以演示完整交互;真实模式已经接入一次性 Token 消费和 PNG 签名上传请求,并增加路由保护、重复提交保护和服务端结果展示。正式文书公开读取接口尚未提供,因此真实模式暂不会进入签署步骤。