yelan 82acc03442 feat(签署工作台): 补代签标签、关联处方卡、线上等待态与只读副本
按原型 V10.2 详情页补齐四块:

- 任务列表「代签」标签(原型 .vtag.chk 橙底):SigningTaskRecord 增加
  signerType / signerRelation,仅签署人非「本人」时显示。
  有意偏离:关系为空时不输出空括号(原型会渲染成「家属代签()」)。
- 「关联处方」可折叠卡(原型 rxCard):新建 api/workbench/prescriptions.ts
  统一处方来源,把弹窗里那份搬过来消除重复,并新增详情用的 7 列明细。
  原型两处处方口径本就不同(弹窗按就诊号哈希、详情按任务号派生),分开维护不合并。
  真实模式返回空 → 整卡不渲染,不显示空表(会被读成「系统查过了,确实没处方」)。
  顺带按原型调了详情卡片顺序:文书 → 签署文件 → 关联处方 → 操作留痕。
- 短信 / 公众号待签署的等待态(原型 .tg-wait):号码取后端 smsMobileMasked,
  没有值时不拼号码,不拿患者档案里的号码冒充发送目标。
- 已签署的「在线预览(PDF)」与「只读副本」:
  预览弹窗复用 SigningDocumentInteractive(只读态),保证预览 / 工作台 / 导出 PDF
  三处版式一致;只读副本走 signing-pdf 新增的 watermark 选项,
  在 html2canvas 克隆体上平铺斜排水印,审计编号直接用任务号。
  水印行数按克隆体 scrollHeight 算,写死行数会让长文书下半部分没水印。
2026-09-26 19:45:40 +08:00

medical-sign

医签通(医疗知情同意电子签署平台)前端项目。

当前状态

已完成两个 Vite 应用的基础初始化、ESLint + Prettier 工程化配置,以及第一版业务页面骨架:

  • clinical-web:医护端布局、工作台、签署任务、文书库、报表和设置页面;
  • patient-h5:签署入口、文书确认、签署人信息、手写签名和结果页面;
  • 默认仍使用演示数据,但医护端已按 MEDISIGN 接口文档接入登录、患者/就诊、模板、签署任务、文件产物、投递、用户组织和模板权限等真实接口;患者 H5 已接入一次性 Token 消费和签名上传请求;
  • packages 目录暂时保留,等接口和公共类型稳定后再接入共享包。

项目定位

医签通用于管理医疗知情同意文书的生成、签署、回传、校验和审计,核心对象是:

患者 + 就诊 + 医嘱/项目 + 签署任务 + 文书版本 + 签署证据

目标流程:

医生在电子病历中发起
→ 患者或家属通过手机 H5 / 现场签字板签署
→ 医签通保存签署证据
→ 结果回传电子病历
→ 收费、检查或治疗前校验

目录结构

medical-sign/
├─ clinical-web/       医护端、电子病历嵌入端和管理功能
├─ patient-h5/         患者/家属手机签署端
└─ packages/
   ├─ api-client/      公共接口客户端
   └─ types/           公共 TypeScript 类型

前端规划

clinical-web

面向医生、护士和系统管理人员,电脑端优先,后续可适配医院平板。

计划包含:

  • 电子病历嵌入入口;
  • 患者、就诊和医嘱关联;
  • 签署任务创建和查询;
  • 手机签署和签字板签署;
  • 文书模板、版本、权限和报表;
  • 签署结果回传及异常处理。

patient-h5

面向患者和家属的手机网页,不是完整的移动版电子病历。

计划包含:

  • 短信/二维码打开;
  • 身份和签署人关系确认;
  • 阅读知情同意文书;
  • 勾选同意/不同意项目;
  • 手写签名和提交;
  • 成功、过期、拒签和异常状态展示。

packages

存放两个前端共同使用的类型、接口和基础逻辑,不单独部署。

技术栈规划

  • 医护端:Vue 3 + TypeScript + Vite + Vue Router + Pinia + Element Plus + Axios;
  • 患者端:Vue 3 + TypeScript + Vite + Vue Router + Axios,移动端先使用原生 Canvas 完成签名演示;
  • 接口数据:先通过 Axios 封装请求,接口稳定后再评估 OpenAPI 类型生成;
  • 服务端数据:医护端后续再评估 TanStack Vue Query;
  • 测试:待最小业务闭环稳定后再补充 Vitest + Playwright。

开发原则

  • 签署任务必须尽量关联具体就诊和医嘱/项目;
  • 解释医生、实际签署人和协助操作人员需要分别记录;
  • 术中新增处置应创建追加签署任务,不修改已签署文书;
  • 文书版本、签署时间、签署渠道和文档哈希必须可追溯;
  • 前端不负责最终权限和签署有效性判断,后端必须重新校验;
  • 患者 H5 不在 URL 中暴露身份证号、完整病历等敏感信息。

构建与部署规划

两个应用分别构建为 dist:

clinical-web/dist/  → 医护端网页
patient-h5/dist/    → 患者手机签署网页

packages 中被使用的代码会在构建时打包进对应应用。生产环境不需要部署 node_modules 或 packages 源码。

两个应用的构建资源名都会包含构建 ID 和内容哈希。构建 ID 默认使用当前毫秒时间戳,确保连续发布不会复用同名 JS/CSS;CI 可通过 BUILD_ID(例如流水线编号或提交短 SHA)显式指定。生产 Nginx 应对 index.html 使用 Cache-Control: no-cache,对带构建 ID 的 /assets/ 文件使用长期缓存。

医护端通常部署在医院内网;患者 H5 如果需要院外访问,应通过医院安全网关、DMZ 或反向代理提供服务。

后续工作

  1. 用真实调研结果校准页面字段、状态和角色权限;
  2. 完成“医护端发起 → 患者 H5 签署 → 结果回传”的最小闭环;
  3. 再接入 packages 中的公共类型和接口客户端;
  4. 验证电子病历 iframe、单点登录和签字板调用;
  5. 补充收费拦截、动态补签和急诊例外流程。
S
Description
No description provided
Readme
5 MiB
Languages
Vue 56.1%
TypeScript 38.5%
JavaScript 3.4%
CSS 1.8%
HTML 0.2%