feat(compliance): add 45 CFR § 164.312 inactivity lockout, break-glass protocol, Fed R Evid 902(11) self-authenticating affidavit, and aai.dev legal dossier

This commit is contained in:
2026-09-07 10:41:40 -07:00
parent 9f376486a3
commit b8b03a2b3c
5 changed files with 306 additions and 4 deletions
+28
View File
@@ -37,6 +37,7 @@ import { TelehealthRoom } from '@/components/telehealth/TelehealthRoom';
import { WaitlistModal } from '@/components/waitlist/WaitlistModal';
import { CourtAuditVaultModal } from '@/components/compliance/CourtAuditVaultModal';
import { CommandPalette } from '@/components/ui/CommandPalette';
import { InactivityLockoutModal } from '@/components/ui/InactivityLockoutModal';
import { ClinicalToastContainer, ToastMessage } from '@/components/ui/ClinicalToast';
import { clinicalAudio } from '@/lib/clinical-audio';
import {
@@ -60,6 +61,7 @@ import {
VolumeX,
Sparkles,
Scale,
Lock,
} from 'lucide-react';
export default function Home() {
@@ -90,6 +92,7 @@ export default function Home() {
// Polish state: Command Palette, Toasts & Audio
const [isCommandPaletteOpen, setIsCommandPaletteOpen] = useState(false);
const [isCourtVaultOpen, setIsCourtVaultOpen] = useState(false);
const [isTerminalLocked, setIsTerminalLocked] = useState(false);
const [toasts, setToasts] = useState<ToastMessage[]>([]);
const [audioEnabled, setAudioEnabled] = useState(true);
@@ -360,6 +363,20 @@ export default function Home() {
<span className="sm:hidden">Vault</span>
</button>
{/* Quick Terminal Lockout Button (HIPAA 45 CFR § 164.312(a)(2)(iii)) */}
<button
type="button"
onClick={() => {
clinicalAudio.playClick();
setIsTerminalLocked(true);
}}
className="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg bg-slate-100 hover:bg-rose-50 border border-slate-200 hover:border-rose-300 text-slate-700 hover:text-rose-700 text-xs font-bold transition shadow-2xs"
title="Lock Clinical Terminal (Cmd+L / 45 CFR § 164.312(a)(2)(iii))"
>
<Lock className="w-3.5 h-3.5 text-slate-500 hover:text-rose-600" />
<span className="hidden md:inline">Lock</span>
</button>
{/* Clinic Dropdown */}
<div className="relative">
<select
@@ -705,6 +722,16 @@ export default function Home() {
activeTenant={activeTenant}
/>
{/* HIPAA Inactivity & Break-Glass Lockout Modal (45 CFR § 164.312(a)(2)(iii) & § 164.312(a)(2)(ii)) */}
<InactivityLockoutModal
isLocked={isTerminalLocked}
onUnlock={() => setIsTerminalLocked(false)}
onManualLock={() => setIsTerminalLocked(true)}
doctorName={activeProvider.name}
clinicName={activeTenant.name}
inactivityTimeoutMinutes={15}
/>
{/* Global Command Palette (Cmd+K) */}
<CommandPalette
isOpen={isCommandPaletteOpen}
@@ -726,6 +753,7 @@ export default function Home() {
onToggleAudio={handleToggleAudio}
audioEnabled={audioEnabled}
onOpenCourtVault={() => setIsCourtVaultOpen(true)}
onLockTerminal={() => setIsTerminalLocked(true)}
/>
{/* Hospital Clinical Toast Notification System */}