mcpField
H
hipaa-compliance

hipaa-compliance

github.com/curiositech安全257204 次安装4 天前更新
代码仓库

关于 hipaa-compliance

hipaa-compliance 是面向 Recovery Coach 开发者的技能,帮助处理涉及受保护健康信息(PHI)的功能。内容涵盖审计日志、数据脱敏、会话安全和紧急访问流程,并提供代码示例与检查清单。

主要功能

  1. 01识别应用中的 PHI
  2. 02记录访问与修改审计日志
  3. 03避免在日志中记录 PHI 内容
  4. 04落实会话安全要求
  5. 05遵循紧急访问流程

适用场景

  1. 01开发访问 PHI 的 API 路由
  2. 02为用户数据查看添加审计记录
  3. 03发布 PHI 功能前进行合规检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/curiositech/some_claude_skills --skill hipaa-compliance

安装后在 Claude Code 中输入/hipaa-compliance确认已加载。

附带文件.claude-plugin/plugin.json

详细介绍

Recovery Coach 的 HIPAA 合规性

此技能可帮助你在开发处理受保护健康信息(PHI)的功能时遵守 HIPAA 要求。

此应用中的 PHI 是什么?

数据类型PHI 状态处理方式
签到时的心情/渴求PHI审计所有访问
日记条目PHI审计所有访问
聊天对话PHI审计所有访问
用户个人资料(姓名、电子邮件)PHI审计所有修改
戒酒日期PHI审计访问
紧急联系人PHI审计访问
使用情况分析(汇总)非 PHI无需审计
页面浏览量(不含内容)非 PHI无需审计

审计日志要求

何时记录

务必记录以下操作:

  • 查看任何 PHI(签到、日记、消息)
  • 创建/更新/删除 PHI
  • 导出用户数据
  • 管理员访问用户信息
  • 身份验证失败的尝试
  • 安全事件(速率限制、未授权访问)
如何记录

使用 src/lib/hipaa/audit.ts 中的审计日志工具:

import {
  logPHIAccess,
  logPHIModification,
  logSecurityEvent,
  logAdminAction
} from '@/lib/hipaa/audit';

// Viewing PHI
await logPHIAccess(
  userId,
  'checkin',        // targetType
  checkinId,        // targetId
  AuditAction.PHI_VIEW
);

// Modifying PHI
await logPHIModification(
  userId,
  'journal',
  journalId,
  AuditAction.PHI_UPDATE,
  { field: 'content' }  // Never include actual content!
);

// Security event
await logSecurityEvent(
  userId,
  AuditAction.RATE_LIMIT,
  { path: '/api/chat', attempts: 60 }
);

// Admin action
await logAdminAction(
  adminId,
  AuditAction.ADMIN_USER_VIEW,
  'user',
  targetUserId
);

数据清理

切勿记录以下字段

审计系统会自动清理,但仍需明确注意:

// BAD - Contains PHI
await logPHIAccess(userId, 'journal', id, action, {
  content: journalEntry.content  // NEVER DO THIS
});

// GOOD - Only metadata
await logPHIAccess(userId, 'journal', id, action, {
  wordCount: journalEntry.content.length,
  hasAttachments: false
});
已清理字段(自动脱敏)
  • password、token、secret、key
  • authorization、cookie、session
  • credential、content、message、notes

会话安全要求

来自 src/lib/auth.ts:

  • 会话超时:无操作 15 分钟(HIPAA 要求)
  • 会话最长时长:绝对上限为 8 小时
  • 登录失败锁定:尝试 5 次 = 禁止登录 30 分钟
  • 密码要求:至少 12 个字符,包含大小写字母、数字和特殊字符

代码模式

带审计日志的 API 路由
import { getSession, requireAuth } from '@/lib/auth';
import { logPHIAccess } from '@/lib/hipaa/audit';

export async function GET(request: Request) {
  const session = await getSession();
  if (!session) {
    return Response.json({ error: 'Unauthorized' }, { status: 401 });
  }

  // Fetch the data
  const data = await fetchUserData(session.userId);

  // Log the access
  await logPHIAccess(
    session.userId,
    'userdata',
    session.userId,
    AuditAction.PHI_VIEW
  );

  return Response.json(data);
}
访问 PHI 的组件
'use client';

import { useEffect } from 'react';

export function JournalViewer({ entryId }: { entryId: string }) {
  useEffect(() => {
    // Log view on mount (server-side preferred, but client backup)
    fetch('/api/audit/log', {
      method: 'POST',
      body: JSON.stringify({
        action: 'PHI_VIEW',
        targetType: 'journal',
        targetId: entryId
      })
    });
  }, [entryId]);

  // ... render
}

合规性检查清单

发布任何涉及 PHI 的功能前:

  • 所有 PHI 访问均已记录审计日志
  • 日志中不包含 PHI 内容(仅包含 ID 和元数据)
  • 访问数据需要通过身份验证
  • 管理员访问有单独的审计记录
  • 访问失败的尝试均已记录
  • 数据导出包含审计记录
  • 敏感字段已加密存储
  • 已强制执行会话超时

审计日志保留

  • 最低期限:6 年(HIPAA 要求)
  • 格式:原始日志保留 1 年,此后压缩
  • 位置:数据库中的 audit_log 表
  • 导出:用于合规审计的加密导出文件

紧急访问(破窗访问)

紧急情况下,请使用破窗访问:

import { requestBreakGlassAccess } from '@/lib/hipaa/break-glass';

// This creates enhanced audit trail
const access = await requestBreakGlassAccess(
  adminId,
  targetUserId,
  'Emergency support required - user reported crisis'
);

破窗访问:

  • 需要提供书面理由
  • 创建永久审计记录
  • 向合规负责人触发警报
  • 必须在 24 小时内审核

资源

  • HIPAA 安全规则:45 C.F.R. § 164.312
  • 审计控制标准:45 C.F.R. § 164.312(b)
  • 事件响应计划:docs/INCIDENT-RESPONSE-PLAN.md
  • 安全文档:docs/SECURITY-HARDENING.md

评论

支持 Markdown