# clinical-web 医签通医护端 Web 应用,面向医生、护士、科室人员和系统管理人员。 ## 使用场景 - 电脑浏览器; - 电子病历 iframe 嵌入; - 护士站电脑; - 后续可适配医院平板; - 电脑连接外接签字板。 签字板是医护端的一种硬件签署渠道,不是独立的移动端应用。 ## 核心职责 ### 医生端 - 从电子病历中发起知情同意; - 自动带入患者、就诊和医嘱信息; - 选择文书模板; - 确认已完成病情解释; - 发送手机签署或打开现场签署。 ### 护士/现场端 - 调出待签署任务; - 协助患者使用签字板; - 查看签署结果和异常状态。 护士可以协助操作,但不应被系统误记为病情解释人员。 ### 管理端 - 文书模板和版本管理; - 用户、角色和文档权限; - 签署记录查询; - 统计和报表; - 设备及系统配置。 ## 重点业务流程 ```text 电子病历中选择患者 → 选择就诊/医嘱/项目 → 选择或生成文书 → 医生完成解释并发起 → 手机、二维码或签字板签署 → 查看状态 → 回传电子病历 ``` ## 需要支持的异常 - 患者拒绝签署; - 患者或家属无法联系; - 实际陪同人和登记手机号不一致; - 签署链接过期; - 文书需要动态追加; - 急诊抢救紧急例外; - 签署成功但回传失败。 ## 当前技术栈 ```text Vue 3 TypeScript Vite Vue Router Pinia Element Plus Axios ``` TanStack Vue Query、PDF 预览、报表图表、自动化测试和签字板适配器暂不接入,等真实接口和业务流程稳定后再按需要增加。 签字板调用应通过独立的 `signature-adapter` 或本地桥接服务封装,业务页面不直接绑定具体厂商 SDK。 ## 非目标 - 不在前端自行判断最终签署法律效力; - 不在医护端直接修改已经签署的正式文书; - 不把患者完整病历发送到患者手机端。 ## 当前状态 已完成 Vite 基础初始化、路由、Pinia、原型主题 CSS、登录页和医护端整体布局。当前所有业务 View 暂时保留文字占位,登录使用演示认证逻辑,尚未接入真实后端。 ## 当前路由结构 ```text 公开页 └─ /login 登录页 ClinicalLayout ├─ 工作台 │ ├─ /workbench/home 首页 │ └─ /workbench/signing 签署工作台 └─ 管理 ├─ /management/documents 文档库管理 ├─ /management/reports 报表分析 ├─ /management/users 用户与权限 ├─ /management/document-permissions 文档权限 └─ /management/settings 系统设置 ``` 布局拆分为 `Menu`、`Header` 和 `Container` 三个公共组件,页面内容由各自的 View 负责。 页面目录按业务域组织:`auth` 保留登录页;工作台页面位于 `views/workbench`;管理页面位于 `views/management`。每个具体页面目录都有 `index.vue` 入口和 `components` 目录,用于继续拆分当前页面组件。 ## API 与类型约定 API 模块与页面按业务域对应。工作台页面使用 `api/workbench` 下的页面文件,管理页面使用 `api/management` 下的直接文件: - `api/workbench/home.ts` - `api/workbench/signing.ts` - `api/management/documents.ts` - `api/management/reports.ts` - `api/management/users.ts` - `api/management/document-permissions.ts` - `api/management/settings.ts` API 请求和响应类型按业务域放在 `api/workbench/types.ts`、`api/management/types.ts`;页面展示和交互类型放在对应 View 目录的 `types.ts`;全局复用类型放在 `types/common.ts`。 所有接口统一使用 `utils/request.ts` 导出的单例请求实例。当前 API 模块默认返回 mock 数据,设置 `VITE_USE_MOCK=false` 后切换为真实接口。