Files

3.1 KiB
Raw Permalink Blame History

patient-h5

医签通患者/家属手机签署端,是通过短信或二维码打开的移动 H5 页面。

产品定位

patient-h5 只服务于一次或一组知情同意签署,不是完整的移动版电子病历,也不需要患者安装原生 App。

用户流程

短信/二维码打开
→ 短信验证码或签署 Token 校验
→ 确认患者和实际签署人
→ 选择与患者的关系
→ 阅读文书
→ 勾选同意/不同意项目
→ 手写签名
→ 提交
→ 显示签署结果

页面规划

  • 签署入口页;
  • 身份/手机号验证页;
  • 文书阅读页;
  • 签署人关系确认页;
  • 手写签名页;
  • 提交成功页;
  • 过期、拒签和异常页。

安全要求

  • 签署链接使用短时效、不可猜测的 Token
  • 后端校验 Token、任务状态和文书版本
  • URL 不直接携带身份证号、完整病历等敏感信息;
  • 避免在本地长期保存患者信息和签名数据;
  • 防止重复提交和重复签署;
  • 所有最终状态以服务端结果为准;
  • 需要兼容微信、手机浏览器和常见 iOS/Android 浏览器。

当前技术栈

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并在提交时携带 deliveryIduploadToken 和幂等键。Token 消费接口目前只返回投递凭证,不返回正式文书内容,因此真实模式会停在安全提示页,不会让患者在未阅读正式文书时提交签名。待后端提供患者端文书读取接口后,再接入 PDF/文书展示和正式提交闭环。

默认 VITE_USE_MOCK=true 时可以无 Token 演示完整页面交互;联调真实 Token 流程时设置 VITE_USE_MOCK=false,或直接使用带 token/signToken/t 查询参数的签署链接。

与医护端的关系

医护端创建签署任务patient-h5 完成签署,后端统一保存结果:

clinical-web → 后端签署任务 → patient-h5
patient-h5   → 后端提交签署结果 → clinical-web / 电子病历

patient-h5 不直接访问医院完整电子病历。

当前状态

已完成 Vite 基础初始化、路由、签署流程状态管理和第一版移动端页面骨架。Mock 模式可以演示完整交互;真实模式已经接入一次性 Token 消费和 PNG 签名上传请求,并增加路由保护、重复提交保护和服务端结果展示。正式文书公开读取接口尚未提供,因此真实模式暂不会进入签署步骤。