437 lines
15 KiB
Markdown
437 lines
15 KiB
Markdown
# 医疗数据合规检测工具
|
||
|
||
`HIPAA` `医疗合规` `PHI检测` `数据安全` `HL7` `FHIR` `审计日志`
|
||
|
||
# HIPAA Guardian
|
||
|
||
**为 Claude、Cursor、Windsurf 及 AI 智能体提供 AI 驱动的 HIPAA 合规、PHI/PII 检测和医疗数据安全技能。**
|
||
|
||
HIPAA Guardian 是一套专为医疗专业人员、开发者及构建 HIPAA 合规系统的组织设计的专业技能集合。它提供以下自动化工具:
|
||
- 🔍 **检测受保护健康信息(PHI)** - 涵盖全部 18 类 HIPAA 标识符
|
||
- ✅ **验证医疗格式** - HL7 FHIR、HL7 v2、CDA、X12 EDI
|
||
- 📋 **审计日志** - 符合 45 CFR §164.312(b) 的不可篡改合规审计追踪
|
||
- 🛡️ **风险评估** - 数据泄露风险评分与修复指导
|
||
- 🔐 **合规映射** - HIPAA、NIST CSF 2.0、HITRUST 对齐
|
||
|
||
## ⚠️ 合规声明
|
||
|
||
- ✅ **HIPAA 就绪**:专为 HIPAA BAA(业务伙伴协议)环境设计
|
||
- ✅ **审计追踪**:支持符合 45 CFR §164.312(b) 的不可篡改日志记录
|
||
- ✅ **标准集成**:与 HL7 FHIR R5、NIST CSF 2.0、HITRUST CSF 对齐
|
||
- ✅ **开源**:MIT 许可证,安全优先的代码审查流程
|
||
|
||
> **注意**:本技能集合旨在支持 HIPAA 合规,但不保证完全符合 HIPAA 要求。在生产环境中,请咨询您的法律和合规团队,并与任何服务提供商签署业务伙伴协议(BAA)。
|
||
|
||
## 工作原理
|
||
|
||
### PHI 检测流程
|
||
|
||
```
|
||
输入文件/代码
|
||
↓
|
||
模式匹配(18 类 HIPAA 标识符)
|
||
↓
|
||
置信度评分(0-100%)
|
||
↓
|
||
风险评估
|
||
↓
|
||
HIPAA 规则映射
|
||
↓
|
||
报告生成 + 修复建议
|
||
```
|
||
|
||
### 检测内容
|
||
|
||
| 标识符 | 示例 | 风险等级 |
|
||
|--------|------|----------|
|
||
| **姓名** | 患者、医疗提供者、亲属 | 高 |
|
||
| **社会安全号(SSN)** | 社会安全号码 | 极危 |
|
||
| **病历号(MRN)** | 医疗记录编号 | 极危 |
|
||
| **出生日期(DOB)** | 出生日期、入院日期 | 高 |
|
||
| **电话/传真** | 所有格式均可检测 | 中 |
|
||
| **电子邮件** | 医疗相关邮件地址 | 中 |
|
||
| **地址** | 街道、城市、邮政编码 | 中 |
|
||
| **健康计划 ID** | 保险、保单编号 | 高 |
|
||
| **生物特征** | 照片、指纹、声纹 | 极危 |
|
||
| **设备 ID** | 序列号、UDI 代码 | 中 |
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
# 安装所有 HIPAA Guardian 技能
|
||
npx skills add 1Mangesh1/hipaa-guardian
|
||
|
||
# 安装特定技能
|
||
npx skills add 1Mangesh1/hipaa-guardian --skill hipaa-guardian
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 1. 扫描代码中的 PHI 泄漏
|
||
|
||
```bash
|
||
# 让 Claude/Copilot 扫描您的代码库
|
||
"扫描我们的后端代码,查找硬编码的 PHI,如患者姓名、SSN 或 MRN"
|
||
|
||
# 输出:详细发现报告,包含:
|
||
# - 文件位置
|
||
# - 行号
|
||
# - 风险评分
|
||
# - 修复步骤
|
||
```
|
||
|
||
**发现示例:**
|
||
```json
|
||
{
|
||
"file": "database/seeders/PatientSeeder.js",
|
||
"line": 42,
|
||
"finding": "检测到 SSN:123-45-6789",
|
||
"identifier_type": "ssn",
|
||
"risk_score": 95,
|
||
"severity": "CRITICAL",
|
||
"remediation": [
|
||
"从 seeder 中删除硬编码的 SSN",
|
||
"使用 faker.js 或测试数据库",
|
||
"使用环境变量存储测试凭证"
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. 验证医疗数据
|
||
|
||
```bash
|
||
# 验证 FHIR 患者资源
|
||
"检查此 FHIR 资源的 PHI 暴露情况和合规问题"
|
||
|
||
{
|
||
"resourceType": "Patient",
|
||
"id": "pat-123",
|
||
"identifier": [{"value": "MRN-2024-001"}],
|
||
"name": [{"given": ["John"], "family": "Doe"}],
|
||
"birthDate": "1985-01-15"
|
||
}
|
||
|
||
# 返回:✓ 有效的 FHIR R5 结构,✓ 所有 PHI 已正确识别
|
||
```
|
||
|
||
### 3. 生成审计日志
|
||
|
||
```bash
|
||
# 记录医疗数据访问以符合 HIPAA 合规
|
||
"为用户查看患者病历创建审计日志"
|
||
|
||
# 生成合规条目,包含:
|
||
# - 唯一审计 ID
|
||
# - 精确时间戳
|
||
# - 用户身份识别
|
||
# - 执行的操作
|
||
# - 访问的资源
|
||
# - 成功/失败状态
|
||
```
|
||
|
||
### 4. 生成合规报告
|
||
|
||
```bash
|
||
# 完整的 HIPAA 合规评估
|
||
"审计我们的代码库以确保 HIPAA 合规并生成报告"
|
||
|
||
# 生成综合报告,包含:
|
||
# - 执行摘要
|
||
# - 按严重程度划分的发现
|
||
# - HIPAA 规则映射
|
||
# - 风险评估
|
||
# - 修复手册
|
||
```
|
||
|
||
## 可用技能
|
||
|
||
| 技能 | 用途 | 激活触发词 | 版本 |
|
||
|------|------|-----------|------|
|
||
| [hipaa-guardian](./skills/hipaa-guardian/) | PHI/PII 检测、医疗格式验证、审计日志 | "扫描 PHI"、"HIPAA 合规"、"检测 PII"、"医疗数据安全" | 1.2.0 |
|
||
| [fhir-hl7-validator](./skills/fhir-hl7-validator/) | HL7 FHIR R5 & HL7 v2 验证 | "验证 FHIR"、"检查 HL7 消息"、"医疗格式" | 1.0.0 |
|
||
| [healthcare-audit-logger](./skills/healthcare-audit-logger/) | HIPAA 合规审计追踪日志 | "审计日志"、"合规日志"、"追踪医疗访问" | 1.0.0 |
|
||
|
||
### [hipaa-guardian](./skills/hipaa-guardian/) 技能 - 核心功能
|
||
|
||
#### PHI 检测引擎
|
||
- **18 类 HIPAA 安全港标识符**:姓名、SSN、MRN、出生日期、电话、邮件、地址、IP、生物特征等
|
||
- **置信度评分**:0-100% 匹配置信度与模式分析
|
||
- **风险评估**:基于敏感性和暴露程度的自动风险评分
|
||
- **文件类型支持**:JSON、CSV、XML、SQL、Python、JavaScript、YAML、FHIR、HL7、CDA
|
||
- **智能模式**:熵值检测、格式验证、跨字段分析
|
||
|
||
#### 医疗格式支持
|
||
```
|
||
HL7 FHIR R5 → Patient、Condition、Observation、MedicationRequest
|
||
HL7 v2.x → MSH、PID、DG1、OBX、RXO 段
|
||
CDA/C-CDA → 临床文档、patientRole 元素
|
||
X12 EDI → 医疗索赔(837、835 格式)
|
||
```
|
||
|
||
#### 代码安全扫描
|
||
```
|
||
✓ 源代码(所有语言)
|
||
✓ 注释和文档
|
||
✓ 测试夹具和模拟数据
|
||
✓ 配置文件(.env、secrets)
|
||
✓ 数据库种子和迁移
|
||
✓ API 响应示例
|
||
```
|
||
|
||
#### 合规功能
|
||
- **HIPAA 规则映射**:每项发现与具体法规条款关联
|
||
- **数据泄露风险评分**:0-100 风险分值,含严重级别(极危→低危)
|
||
- **去标识化验证**:验证数据删除是否符合 HIPAA 标准
|
||
- **审计追踪生成**:符合 45 CFR §164.312(b) 的合规日志
|
||
- **修复指导**:包含代码示例的分步修复说明
|
||
|
||
#### 集成就绪
|
||
- **Claude/Copilot/Windsurf**:通过技能触发词激活
|
||
- **GitHub Actions**:CI/CD 流水线集成
|
||
- **Pre-commit Hooks**:代码提交前自动扫描
|
||
- **VS Code 扩展**:编码时实时 PHI 检测
|
||
- **OpenAPI 3.1**:第三方集成的 REST API
|
||
|
||
### [fhir-hl7-validator](./skills/fhir-hl7-validator/)
|
||
|
||
依据 HL7 标准验证医疗数据:
|
||
- **FHIR R5 模式验证** - Patient、Condition、Observation 资源
|
||
- **HL7 v2 消息解析** - 完整的 v2.x 段验证
|
||
- **CDA 文档结构** - 临床文档架构合规
|
||
- **自定义验证规则** - 领域特定约束
|
||
|
||
### [healthcare-audit-logger](./skills/healthcare-audit-logger/)
|
||
|
||
HIPAA 合规审计追踪日志:
|
||
- **不可篡改日志** - 防篡改审计追踪
|
||
- **完整上下文** - 用户、操作、资源、时间戳、结果
|
||
- **访问控制日志** - 记录谁在何时访问了什么
|
||
- **事件分类** - CREATE、READ、UPDATE、DELETE、EXPORT 事件
|
||
- **留存管理** - 可配置的日志留存策略
|
||
|
||
## 真实使用场景
|
||
|
||
### 1. 代码审查 - 检测硬编码患者数据
|
||
|
||
**场景**:医疗初创公司构建患者门户后端
|
||
|
||
```bash
|
||
# 在 PR 审查期间扫描代码,防止意外提交 PHI
|
||
"审查此 PR 中是否有硬编码的患者数据"
|
||
|
||
# 发现:
|
||
// ❌ 极危:database/seeders/PatientSeeder.js:42
|
||
const mockPatient = {
|
||
name: "John Doe", // 高:患者姓名
|
||
ssn: "123-45-6789", // 极危:SSN
|
||
mrn: "MRN-2024-001", // 极危:MRN
|
||
dob: "01/15/1985", // 高:出生日期
|
||
};
|
||
|
||
// ✅ 修复:改用 faker.js
|
||
const faker = require('faker');
|
||
const mockPatient = {
|
||
name: faker.name.fullName(),
|
||
ssn: faker.datatype.string(11),
|
||
mrn: `MRN-${faker.datatype.uuid()}`,
|
||
dob: faker.date.past(),
|
||
};
|
||
```
|
||
|
||
### 2. 数据库安全审计 - 暴露的患者记录
|
||
|
||
**场景**:医院通过日志发现潜在数据泄露
|
||
|
||
```bash
|
||
# 扫描应用日志中的 PHI 暴露
|
||
"检查我们的日志中是否有不应出现的患者数据"
|
||
|
||
# 发现:
|
||
❌ application.log:2024-02-07T10:15:33Z
|
||
ERROR:患者 John Doe(SSN:123-45-6789)的查询失败
|
||
|
||
✅ 修复建议:
|
||
1. 从日志中删除特定标识符
|
||
2. 对敏感数据进行哈希或脱敏处理
|
||
3. 使用患者 ID 代替姓名
|
||
4. 实施日志过滤策略
|
||
|
||
// 良好的日志记录模式:
|
||
logger.error(`患者查询失败:${patient.id}`);
|
||
// 禁止记录:姓名、SSN、出生日期、MRN
|
||
```
|
||
|
||
### 3. FHIR API 验证 - 医疗数据交换
|
||
|
||
**场景**:构建 HL7 FHIR 合规的患者 API
|
||
|
||
```bash
|
||
# 在向客户端返回数据前验证 FHIR 资源
|
||
"检查此患者响应的 PHI 安全性和 FHIR 合规性"
|
||
|
||
// API 响应 - 自动检查:
|
||
{
|
||
"resourceType": "Patient",
|
||
"id": "pat-12345", // ✓ 仅使用安全 ID
|
||
"identifier": [...], // ✓ 病历号
|
||
"name": [{"given": [...]}], // ✓ 患者姓名(预期字段)
|
||
"telecom": [...], // ✓ 电话/邮件
|
||
"birthDate": "1985-01-15", // ✓ 出生日期(医疗场景预期字段)
|
||
"address": [...] // ✓ 地址数据
|
||
}
|
||
|
||
✓ 有效的 FHIR R5 Patient 资源
|
||
✓ 所有字段适用于医疗场景
|
||
✓ PHI 为预期且必要字段
|
||
✓ 可安全传输给授权客户端
|
||
```
|
||
|
||
### 4. 合规审计 - 满足 HIPAA 要求
|
||
|
||
**场景**:医疗 SaaS 公司年度 HIPAA 审计
|
||
|
||
```bash
|
||
# 生成完整合规报告
|
||
"对我们的整个代码库运行全面的 HIPAA 合规检查"
|
||
|
||
# 生成报告:
|
||
├── 执行摘要
|
||
│ ├── 总体风险:中等
|
||
│ ├── 极危发现:3 项
|
||
│ ├── 高危发现:12 项
|
||
│ └── 修复时间:约 16 小时
|
||
├── 按类别划分的发现
|
||
│ ├── 代码安全(12 个问题)
|
||
│ ├── 配置(5 个问题)
|
||
│ ├── 测试数据(8 个问题)
|
||
│ └── 文档(3 个问题)
|
||
├── HIPAA 规则映射
|
||
│ ├── 45 CFR §164.308(行政保障)
|
||
│ ├── 45 CFR §164.312(技术保障)
|
||
│ └── 45 CFR §164.504(BA 要求)
|
||
└── 修复手册
|
||
├── 优先级 1:极危修复(3 项)
|
||
├── 优先级 2:高危项目(12 项)
|
||
└── 时间表与责任人分配
|
||
```
|
||
|
||
## 法规参考
|
||
|
||
### HIPAA 规则(45 CFR)
|
||
- **隐私规则(§164.500+)**:患者权利、使用与披露、PHI 保护
|
||
- **安全规则(§164.300+)**:行政、物理和技术保障措施
|
||
- **数据泄露通知规则(§164.400+)**:通知要求与文档记录
|
||
|
||
### 医疗标准
|
||
- **[HL7 FHIR R5](https://www.hl7.org/fhir/R5/)**:国际医疗数据交换标准
|
||
- **[NIST 网络安全框架 2.0](https://www.nist.gov/cyberframework)**:治理、风险管理、检测/响应功能
|
||
- **[NIST SP 800-66](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-66r1.pdf)**:HIPAA 安全实施
|
||
- **[NIST SP 800-188](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-188.pdf)**:个人信息去标识化
|
||
|
||
### 外部资源
|
||
- **[HHS HIPAA 指导](https://www.hhs.gov/hipaa)**:HIPAA 官方合规门户
|
||
- **[OCR 执法](https://www.hhs.gov/hipaa/for-professionals/special-topics/enforcement)**:HIPAA 违规、纠正行动计划
|
||
- **[HITRUST CSF](https://hitrustalliance.net/csf/)**:经认证的 HIPAA 合规框架
|
||
|
||
## 贡献指南
|
||
|
||
欢迎贡献!改进方向包括:
|
||
- 新医疗数据格式支持
|
||
- 更多 HIPAA 规则映射
|
||
- Pre-commit hook 增强
|
||
- 特定语言的模式改进
|
||
|
||
请参阅 `./skills/*/` 目录中的技能特定文档,了解贡献指南。
|
||
|
||
## 文档
|
||
|
||
### 核心参考
|
||
- **[references/HIPAA-OVERVIEW.md](./references/HIPAA-OVERVIEW.md)** - 完整 HIPAA 规则参考
|
||
- **[references/HL7-FHIR-R5.md](./references/HL7-FHIR-R5.md)** - FHIR 资源规范
|
||
- **[references/NIST-CSF-2.0.md](./references/NIST-CSF-2.0.md)** - 网络安全框架
|
||
- **[references/HEALTHCARE-DATA-TYPES.md](./references/HEALTHCARE-DATA-TYPES.md)** - 医疗格式
|
||
|
||
### 技能文档
|
||
- **[skills/hipaa-guardian/](./skills/hipaa-guardian/)** - 核心 PHI 检测技能
|
||
- **[skills/fhir-hl7-validator/](./skills/fhir-hl7-validator/)** - 医疗格式验证
|
||
- **[skills/healthcare-audit-logger/](./skills/healthcare-audit-logger/)** - 审计日志
|
||
|
||
## 快速参考 - 激活短语
|
||
|
||
在 Claude、Cursor 或 Windsurf 中使用以下短语激活 HIPAA Guardian 技能:
|
||
|
||
### hipaa-guardian 技能
|
||
- "扫描 PHI" / "检测 PII"
|
||
- "HIPAA 合规检查" / "HIPAA 审计"
|
||
- "医疗数据安全" / "检查代码中的 PHI 泄漏"
|
||
- "扫描日志中的 PHI" / "检查 PHI 端点的认证"
|
||
- "生成 HIPAA 审计报告" / "查找敏感医疗数据"
|
||
|
||
### fhir-hl7-validator 技能
|
||
- "验证 FHIR 资源" / "检查 HL7 消息"
|
||
- "医疗格式验证"
|
||
- "验证 FHIR R5" / "检查 HL7 v2"
|
||
|
||
### healthcare-audit-logger 技能
|
||
- "创建审计日志" / "合规日志"
|
||
- "追踪医疗访问" / "审计追踪"
|
||
|
||
## 常见问题
|
||
|
||
**Q:我可以在生产环境中使用吗?**
|
||
A:这些技能旨在支持合规工作。请始终进行自己的安全审查,咨询法律/合规团队,并与任何外部提供商签署业务伙伴协议(BAA)。
|
||
|
||
**Q:它能检测所有 PHI 吗?**
|
||
A:它能以高置信度检测 18 类 HIPAA 安全港标识符。但某些依赖上下文的 PHI 可能需要人工审查。请始终将自动检测与人工审查相结合。
|
||
|
||
**Q:误报怎么处理?**
|
||
A:每项发现都提供置信度评分(0-100%)。低置信度发现可能是误报。请始终在上下文中审查发现。
|
||
|
||
**Q:我可以与 CI/CD 集成吗?**
|
||
A:可以!查看 [skills/hipaa-guardian/](./skills/hipaa-guardian/) 获取 GitHub Actions、pre-commit hook 和自定义集成示例。
|
||
|
||
**Q:如何报告安全问题?**
|
||
A:请通过私下邮件报告安全漏洞(不要为安全问题创建公开的 GitHub issue)。
|
||
|
||
## 故障排除
|
||
|
||
### 检测未发现预期的 PHI
|
||
|
||
1. **检查置信度阈值** - 可能过滤了低置信度匹配
|
||
2. **验证模式匹配** - 某些格式可能有变体(如 SSN:123-45-6789 与 123456789)
|
||
3. **上下文很重要** - 测试数据可能已有意进行去标识化处理
|
||
|
||
### 大型代码库扫描缓慢
|
||
|
||
1. **排除不必要的目录** - `.git`、`node_modules`、`dist`、`build`
|
||
2. **按文件类型过滤** - 专注于相关文件(代码、配置,而非二进制文件)
|
||
3. **使用批量扫描** - 将目录分成较小的块进行处理
|
||
|
||
### 修复指导不清晰
|
||
|
||
1. **查看具体示例** - 参考技能示例了解最佳实践
|
||
2. **查阅参考资料** - [references/](./references/) 包含详细指导
|
||
3. **联系我们** - 针对特定用例创建 issue
|
||
|
||
## 支持
|
||
|
||
- 📖 **文档**:[./references/](./references/) - 详细指南
|
||
- 🐛 **问题/功能**:[GitHub Issues](https://github.com/1Mangesh1/hipaa-guardian/issues)
|
||
- 🔒 **安全报告**:负责任地报告漏洞(不要创建公开 issue)
|
||
- 💬 **讨论**:[GitHub Discussions](https://github.com/1Mangesh1/hipaa-guardian/discussions)
|
||
|
||
## 许可证
|
||
|
||
MIT 许可证 - 参见 [LICENSE.txt](./LICENSE.txt)
|
||
|
||
**权限**:✓ 商业使用 | ✓ 修改 | ✓ 分发 | ✓ 私人使用
|
||
**条件**:⚠️ 需保留许可证和版权声明
|
||
**限制**:✗ 不提供担保 | ✗ 不承担责任
|
||
|
||
---
|
||
|
||
**仓库**:[1Mangesh1/hipaa-guardian](https://github.com/1Mangesh1/hipaa-guardian)
|
||
**最后更新**:2026 年 2 月
|
||
**状态**:✅ 积极开发中
|
||
**最新版本**:1.2.0
|
||
**许可证**:MIT |