- 新增认证 API、类型与本地会话存储 - 登录页改为真实账号密码登录并移除验证码 - 请求拦截器改用 X-Token 并处理 401 跳转 - 添加 Vite /api 开发代理配置
142 lines
5.0 KiB
Markdown
142 lines
5.0 KiB
Markdown
# 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、登录页、首页、签署工作台第一版 Mock 和文档库管理页面。报表、用户权限、文档权限和系统设置仍保留页面骨架;登录和签署流程使用演示数据,尚未接入真实后端。
|
||
|
||
## 当前路由结构
|
||
|
||
```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` 目录,用于继续拆分当前页面组件。
|
||
|
||
跨页面复用的业务组件和 composable 不放在具体 View 目录中:
|
||
|
||
- `components/signing/NewSigningTaskDialog.vue`:新增签署任务公共弹窗,供签署工作台和文档库管理复用;
|
||
- `composables/useSigningTaskForm.ts`:封装患者定位、就诊选择、模板选择、签署方式、校验和任务提交状态。
|
||
|
||
## 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` 导出的单例请求实例。登录接口已接入 MEDISIGN 后端:
|
||
|
||
- `POST /api/v1/auth/login`:账号密码登录;
|
||
- `GET /api/v1/auth/me`:查询当前用户;
|
||
- `POST /api/v1/auth/logout`:注销当前会话;
|
||
- 后续请求自动携带 `X-Token` 请求头。
|
||
|
||
开发环境默认使用 `/api` 作为同源接口前缀,Vite 会将 `/api` 转发到 `https://ipad.shenynet.com`,因此浏览器不会直接跨域请求后端。代理配置位于 `vite.config.ts`,不改写 `/api/v1/...` 路径。修改代理配置后需要重启 Vite 开发服务。
|
||
|
||
生产环境不会使用 Vite 的开发代理,需要在 Nginx 或其他网关中配置同样的 `/api` 反向代理。
|
||
|
||
除登录外,当前业务 API 模块默认返回 mock 数据,设置 `VITE_USE_MOCK=false` 后切换为真实接口。使用本地开发代理时,`VITE_API_BASE_URL` 应填写 `/api`;如果改为直连后端,则需要后端配置允许当前前端源的 CORS。
|