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
+4 -4
View File
@@ -258,14 +258,14 @@ export function generateCourtDefensePdf(
doc.setFont('helvetica', 'bold');
doc.setFontSize(10);
doc.setTextColor(15, 23, 42);
doc.text('AFFIDAVIT OF CUSTODIAN OF MEDICAL RECORDS', margin + 12, y + 18);
doc.text('AFFIDAVIT & DECLARATION OF CUSTODIAN OF MEDICAL RECORDS (FED. R. EVID. 902(11))', margin + 12, y + 18);
doc.setFont('helvetica', 'normal');
doc.setFontSize(8);
doc.setFontSize(7.5);
doc.setTextColor(51, 65, 85);
const affidavitText = `I, the authorized Custodian of Records for ${tenant.name}, hereby certify under penalty of perjury that the attached medical records are true, exact, and complete duplicates of electronic health records created at or near the time of the occurrence of the matters set forth by Dr. ${soapNote.providerName}. These records are maintained in a secure, tamper-evident electronic health system in compliance with HIPAA 45 CFR § 164.312 and 21 CFR Part 11.`;
const affidavitText = `I, the authorized Custodian of Records for ${tenant.name}, hereby declare under penalty of perjury pursuant to 28 U.S.C. § 1746 and Fed. R. Evid. 902(11) that the attached medical records are true, authentic, and complete duplicates of electronic records of regularly conducted activity (Fed. R. Evid. 803(6)). These records were made at or near the time of the clinical encounter by Dr. ${soapNote.providerName}, kept in the regular course of business. System-level electronic authentication and data integrity are certified under Fed. R. Evid. 902(13) & 902(14) via the immutable SHA-256 cryptographic hash seal below, compliant with 21 CFR Part 11 and HIPAA 45 CFR § 164.312.`;
const splitAffidavit = doc.splitTextToSize(affidavitText, pageWidth - margin * 2 - 24);
doc.text(splitAffidavit, margin + 12, y + 32);
doc.text(splitAffidavit, margin + 12, y + 30);
y += 88;