# Kylin Medical - 法律合规文档

> **版本**: 1.1
> **最后更新**: 2026-06-20
> **适用范围**: 所有使用 kylin/medical 扩展包的医疗健康系统

---

## 一、适用法律法规

### 1.1 《处方管理办法》(2007.5.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第七条 | 处方一般不得超过 7 日用量；急诊处方一般不得超过 3 日用量 | `MedicalService::createPrescription()` 强制校验，普通 7 天 / 急诊 3 天 |
| 第十八条 | 每张处方不得超过 5 种药品 | `max_items_per_prescription = 5`，超出抛异常 |
| 第三十六条 | 药师应当对处方进行审核 | `reviewPrescription()` 强制药师审核流程 |

### 1.2 《中华人民共和国个人信息保护法》(2021.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第六条 | 最小必要原则 | 仅收集诊疗相关的患者信息 |
| 第二十八条 | 医疗健康信息属于敏感个人信息 | `Patient` 模型对 `allergy_history` / `address` 字段使用 `Crypt::encryptString()` 加密存储 |
| 第二十八条 | 敏感信息访问需脱敏展示 | `Patient::toArray()` 自动脱敏（首尾保留 + 中间星号） |
| 第四十四条 | 个人信息处理知情权 | 病历查阅需权限校验，非本人或未授权访问拒绝并记录审计 |

### 1.3 《电子病历应用管理规范》(2017.4.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第十条 | 电子病历应使用电子签名 | `MedicalService::signMedicalRecord()` 使用 HMAC-SHA256 签名 |
| 第二十二条 | 门（急）诊电子病历保存时间不少于 15 年，住院电子病历保存时间不少于 30 年 | `record_retention` 配置（门诊 15 年 / 住院 30 年） |

### 1.4 《医疗机构病历管理规定》(2014.1.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十八条 | 医疗机构应当受理患者本人或其委托代理人复制或者查阅病历资料的申请 | `getPatientRecords()` 权限校验：仅本人或授权代理人可查阅 |

### 1.5 《中华人民共和国执业医师法》(2022.3.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十三条 | 医师在执业活动中应当使用经批准的药品 | 处方药品需从药品目录中选择 |

### 1.6 《中华人民共和国电子签名法》(2005.4.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第十三条 | 电子签名需专属于电子签名人，并受其控制 | 病历签名使用医师 ID + 应用密钥生成 HMAC-SHA256 |

### 1.7 《中华人民共和国网络安全法》(2017.6.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 采取监测、记录网络运行状态、网络安全事件的技术措施，日志留存 >= 180 天 | 所有关键操作（挂号/退号/开方/审方/签名/病历查阅）写入 `kylin/audit-log` |

---

## 二、行业规范

### 2.1 医疗数据标准

- 电子病历：WS 445 数据集标准（主诉、现病史、就诊日期、就诊科室必填）
- 疾病编码：ICD-10 国际疾病分类
- 药品编码：国家药品编码

### 2.2 处方管理

- 处方用量：普通 7 天 / 急诊 3 天（强制校验）
- 每张处方最多 5 种药品（强制校验）
- 处方需药师审核（强制流程）
- 处方有效期：普通 7 天 / 急诊 3 天

### 2.3 病历管理

- 门诊病历保存不少于 15 年
- 住院病历保存不少于 30 年
- 电子病历需电子签名（HMAC-SHA256）
- 签名后状态变更为 `archived`，不可再修改

### 2.4 挂号管理

- 退号需提前 24 小时（可配置）
- 退号时释放号源
- 挂号编号格式：`AP + YmdHis + 4位随机数`

---

## 三、合规检查清单

### 3.1 处方管理

- [x] 处方用量限制（普通 7 天 / 急诊 3 天）— `MedicalService::createPrescription()`
- [x] 每张处方药品上限（`max_items_per_prescription = 5`）
- [x] 药师审核流程 — `MedicalService::reviewPrescription()`
- [x] 处方有效期校验

### 3.2 数据安全

- [x] 敏感信息加密（`allergy_history` / `address`）— `Patient` 模型访问器/修改器
- [x] 敏感信息脱敏展示 — `Patient::toArray()`
- [x] 病历保存期限（门诊 15 年 / 住院 30 年）— `record_retention` 配置

### 3.3 电子病历

- [x] 电子签名（HMAC-SHA256）— `MedicalService::signMedicalRecord()`
- [x] 签名后不可修改（状态机：draft → signed → archived）
- [x] 病历查阅权限校验 — `MedicalService::getPatientRecords()`

### 3.4 预约挂号

- [x] 退号时限（提前 24 小时）— `MedicalService::cancelAppointment()`
- [x] 号源并发控制（`lockForUpdate()`）
- [x] 退号释放号源

### 3.5 审计日志

- [x] 挂号创建/退号审计
- [x] 处方开具/审核审计
- [x] 病历签名审计
- [x] 病历查阅审计（含拒绝访问记录）

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| 处方用量限制 | ✅ 已通过 | `createPrescription()` 强制校验普通 7 天 / 急诊 3 天 |
| 单张处方药品上限 | ✅ 已通过 | `max_items_per_prescription=5`，超出抛异常 |
| 药师审核流程 | ✅ 已通过 | `reviewPrescription()` 强制流程 |
| 敏感数据加密 | ✅ 已通过 | `Patient` 模型 `allergy_history` / `address` 加密存储 |
| 敏感数据脱敏 | ✅ 已通过 | `toArray()` 自动脱敏 |
| 病历保存期限 | ✅ 已通过 | `record_retention`（门诊 15 年 / 住院 30 年） |
| 退号时限 | ✅ 已通过 | `cancelAppointment()` 校验提前 24 小时 |
| 电子签名 | ✅ 已通过 | `signMedicalRecord()` HMAC-SHA256 签名 |
| 病历查阅权限 | ✅ 已通过 | `getPatientRecords()` 本人/授权代理人校验 |
| ICD-10 编码 | ✅ 已通过 | `medical_records.diagnosis_code` 字段 |
| WS 445 数据集 | ✅ 已通过 | 主诉/现病史/就诊日期/就诊科室必填 |
| 审计日志 | ✅ 已通过 | 所有关键操作写入 `kylin/audit-log` |
| 并发控制 | ✅ 已通过 | `lockForUpdate()` 防止号源超卖 |

### 4.2 审计事件清单

| 事件 | 说明 | 法律依据 |
|------|------|------|
| `appointment_created` | 挂号创建 | 《网络安全法》第二十一条 |
| `appointment_cancelled` | 退号 | 《网络安全法》第二十一条 |
| `prescription_created` | 处方开具 | 《处方管理办法》第七条 |
| `prescription_approved` | 处方审核通过 | 《处方管理办法》第三十六条 |
| `prescription_rejected` | 处方退回 | 《处方管理办法》第三十六条 |
| `medical_record_signed` | 病历签名 | 《电子病历应用管理规范》第十条 |
| `medical_record_accessed` | 病历查阅 | 《医疗机构病历管理规定》第二十八条 |
| `medical_record_access_denied` | 病历查阅拒绝 | 《医疗机构病历管理规定》第二十八条 |

### 4.3 审查结论

**本包代码合规性良好。** 处方管理、病历保存、数据安全、电子签名、审计日志核心功能完整。

---

## 五、免责声明

本扩展包在代码层面实现了医疗健康管理的合规基础能力，但不构成法律建议。使用方应：

1. 确保电子病历符合当地卫健委要求
2. 对接合法电子签名服务（如 CFCA、BJCA 等第三方 CA 机构）
3. 咨询专业法律顾问，确保系统整体合规
4. 定期评估处方规则配置是否符合最新版《处方管理办法》
