מרפאות ובריאות / מדריך טכני

אוטומציית טריאז' קליטת מטופלים עם n8n ו-Claude — מדריך בנייה תואם HIPAA

מדריך מלא לבניית workflow ב-n8n מעל AWS Bedrock לטריאז' קליטת מטופלים: טוקניזציה של PHI, סיווג חומרת תסמינים, ניתוב ל-EHR, ויומן ביקורת בלתי-משתנה לשש שנים — תחת בקרת אחות, לעולם לא במקומה.

קריאה של 14 דקות
רמה מתקדמת
n8n + AWS Bedrock + Claude
עודכן: מאי 2026
מה תבנה

טופס / פורטל מטופלים

טוקניזציה של PHI

סיווג חומרה (Claude)

ניתוב לפי התמחות

התאמת זמן ב-EHR

קביעת תור אוטומטית

יומן ביקורת HIPAA

1. הבעיה — למה טריאז' ידני בקבלה מפספס מקרים דחופים

לכל מרפאה רב-תחומית יש את אותו צוואר בקבוק של בוקר יום שני. מטופל ממלא טופס קליטה. הטופס נוחת בתיבת Jotform, בתור משימות של Athenahealth, או כ-PDF פקס. עוזר רפואי מרים אותו, קורא את התלונה העיקרית, מחליט אם זה דחוף, בוחר התמחות, מוצא חלון פנוי, מתקשר חזרה. זמן חציוני להחזרה במרפאה טיפוסית בת 6 רופאים הוא 4 עד 9 שעות. המחיר הוא דולרים ומקרים אקוטיים שמוחמצים.

מספרים אמיתיים מקבוצת רפואה ראשונית עם 6 רופאים

טפסי קליטה ביום (ממוצע) ~140
זמן חציוני לטריאז' 4.7 שעות
שעות צוות קבלה בשבוע על קליטה 38 שעות
תורים מנותבים שגוי 11%
שיעור היעדרות (no-show) 22%

טריאז' במדריך הזה הוא לא תחליף לשיקול דעת קליני. זו מיון לארבע רמות שמכוון את המטופל הנכון לקלינאי הנכון מהר — תחת בקרת אחות, וכל החלטה נרשמת ביומן ביקורת.

מה זה "טריאז' AI" כאן

  • דחוף ביותר (emergent): כאב חזה, סימני אירוע מוחי, אנפילקסיס. המערכת מציגה באנר "התקשר ל-911 / מד"א" ומפעילה זימון לאחות בתוך 60 שניות.
  • דחוף (urgent, אותו יום): חום גבוה בתינוק, כאב חמור, חשד לשבר. קביעת תור באותו יום או הפניה לקו אחות.
  • שגרתי (תוך שבוע): חידוש מרשם, מעקב, תסמינים קלים. תור אוטומטי תוך 7 ימים.
  • שגרתי מורחב (מעבר לשבוע): בדיקה שנתית, סקר, בריאות מונעת. תור רגיל בתור.
תובנה
הרווח הגדול ביותר בבטיחות המטופל הוא לא הקביעה האוטומטית — אלא התראת האחות תוך 60 שניות על מקרים דחופים ביותר. רוב המקרים שמוחמצים קורים בפער של 4 שעות בין הגשת הטופס לבדיקה אנושית. ראו את דף השירות הראשי למסגרת הבטיחות הקלינית המלאה.

2. ארכיטקטורת המערכת

שישה רכיבים, כל אחד מהם על תשתית HIPAA-eligible עם BAA חתום. ה-Anthropic public API לא נמצא במכוון בסטאק — Claude מגיע אלינו דרך AWS Bedrock, ש-AWS היא הצד שחתם על ה-BAA. n8n רץ self-hosted בחשבון AWS HIPAA-eligible בתוך VPC פרטי.

הסטאק

n8n (self-hosted, HIPAA-eligible)
EC2 ב-VPC, EBS מוצפן, ללא חשיפה ציבורית. Docker על Amazon Linux.
AWS Bedrock + Claude
Claude Haiku לסיווג חומרה, Claude Sonnet לרציונל התמחות. ה-BAA של AWS מכסה PHI במעבר.
Postgres + pgcrypto
RDS מוצפן at rest (AES-256), pgcrypto למיפוי token-to-PHI. Snapshots מוצפנים עם KMS.
EHR (Athenahealth / Epic / eCW)
FHIR R4 read/write דרך OAuth2 client credentials. חשבון שירות מוגבל הרשאות.
מקורות קליטה
Jotform HIPAA tier, Epic MyChart webhook, Paubox/Virtru secure email gateway.
ביקורת / SIEM
CloudWatch Logs + S3 Object Lock (compliance mode), שמירה בלתי-משתנה ל-6 שנים.

אומדן עלות (4,000 קליטות לחודש)

Bedrock — Claude Haiku (4k סיווגים) ~$6
Bedrock — Claude Sonnet (1.4k רציונלים) ~$38
EC2 t3.medium + RDS db.t3.small (Multi-AZ) ~$140
S3 Object Lock + KMS + CloudWatch ~$30
Jotform HIPAA tier + Paubox ~$120
סה"כ לחודש ~$334
1

חיבור מקורות קליטת מטופלים

שלושה ערוצי קליטה מזינים את אותה נקודת כניסה ב-n8n: טופס web ב-Jotform HIPAA, webhook של פורטל המטופלים של Athenahealth או Epic, ו-secure email gateway (Paubox או Virtru). כל ערוץ נושא PHI, ולכן כל אחד מהם דורש TLS 1.3, BAA חתום עם הספק, וחתימת webhook מאומתת. העברות מפורטל המטופלים משתמשות במשאבי FHIR R4 — Communication ו-ServiceRequest.

מקבל webhook ב-n8n

הצומת Webhook של n8n מקבל POST מ-Jotform וממנוי ה-webhook של Athenahealth. ודא חתימת HMAC לפני שאתה עושה כל דבר אחר. אם תדלג על השלב הזה הנקודה הופכת לווקטור דליפת PHI לכל סורק שימצא אותה.

n8n Webhook — payload schema (Jotform HIPAA)JSON
{
  "submissionID": "5829471",
  "formID": "intake_v3",
  "ip": "203.0.113.42",
  "submittedAt": "2026-05-03T14:22:11Z",
  "fields": {
    "patient_first_name": "Jane",
    "patient_last_name": "Doe",
    "dob": "1984-07-19",
    "mrn_existing": "MRN-44218",
    "phone": "+1-415-555-0144",
    "email": "[email protected]",
    "chief_complaint": "Sudden chest tightness for 2 hours, radiating left arm, mild shortness of breath. No prior cardiac history.",
    "symptom_duration_hours": 2,
    "current_medications": ["lisinopril 10mg"],
    "allergies": ["penicillin"]
  },
  "signature": "sha256=3a9f1c..."
}
קריטי
כתובת ה-webhook נושאת PHI. אל תרשום את ה-payload המלא ב-CloudWatch בטקסט גלוי, אל תחשוף לכלי ניטור שאינם HIPAA (לא Datadog free tier, לא Loggly, לא פרויקט Sentry ציבורי). כל בייט שזורם דרך הנקודה הזאת חייב להיות בתוך גבול HIPAA מהרגע שנחת.
2

שכבת טוקניזציה של PHI

לפני שבייט אחד מגיע ל-LLM, מזהים נשלפים ומוחלפים בטוקנים הפיכים. 18 המזהים של HIPAA Safe Harbor — שם, תאריך לידה, SSN, MRN, ZIP מלא, טלפון, מייל, IP, מספרי חשבון, מזהים ביומטריים והיתר — נשלפים ונשמרים בטבלת Postgres מוצפנת. התלונה העיקרית וההקשר הקליני עוברים ל-Bedrock; המזהים לא. גם אם AWS Bedrock מכוסה ב-BAA, מינימיזציה של PHI היא חובת HIPAA Privacy Rule בפני עצמה.

סכימת מיפוי טוקנים

Postgres — phi_token_map (pgcrypto)SQL
CREATE EXTENSION IF NOT EXISTS pgcrypto;

CREATE TABLE phi_token_map (
  token_id        uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  intake_ref      text NOT NULL,
  field_name      text NOT NULL,        -- patient_first_name, dob, mrn...
  ciphertext      bytea NOT NULL,       -- pgp_sym_encrypt(value, kms_key)
  created_at      timestamptz DEFAULT now(),
  expires_at      timestamptz,          -- soft TTL for revocable tokens
  accessed_count  int DEFAULT 0
);

CREATE INDEX idx_token_intake ON phi_token_map(intake_ref);
CREATE INDEX idx_token_expiry ON phi_token_map(expires_at)
  WHERE expires_at IS NOT NULL;

פונקציית טוקניזציה (n8n Code node)

n8n Code node — tokenize_phi.pyPYTHON
import re, uuid

PHI_FIELDS = [
    "patient_first_name", "patient_last_name", "dob",
    "mrn_existing", "phone", "email", "ip", "ssn"
]

def tokenize(payload, db):
    intake_ref = payload["submissionID"]
    safe = dict(payload["fields"])
    for f in PHI_FIELDS:
        if f in safe and safe[f]:
            tok = f"<{{f.upper()}}_{{uuid.uuid4().hex[:8]}}>"
            db.insert_token(intake_ref, f, safe[f])
            safe[f] = tok

    safe["chief_complaint"] = re.sub(
        r"b(?:my name is|I am)s+w+", "[NAME]",
        safe["chief_complaint"], flags=re.I
    )
    return {"intake_ref": intake_ref, "fields": safe}
אבטחה
הטוקנים הפיכים רק על-ידי תפקיד השירות של n8n בתוך ה-VPC. פונקציית הדה-טוקניזציה לא נחשפת ב-HTTP, לא נכתבת ביומן, ועוברת רוטציית מפתחות כל 90 יום ב-AWS KMS. מפתח ההצפנה לעולם לא יוצא מ-KMS.
3

מסווג חומרת תסמינים (Claude דרך Bedrock)

ה-payload המטוקן עובר ל-Claude Haiku ב-AWS Bedrock. המודל מחזיר אחת מארבע רמות חומרה — emergent, urgent, routine_week, routine_extended — בתוספת רמז להתמחות וטרייס נימוקים מובנה. ה-prompt שמרני בתכנון: הוא תמיד מסלים אם הצגה יכולה להיות אירוע מוחי, אוטם, אנפילקסיס, אקטופי, ספסיס או דגל אדום ילדים. דפוס הסיווג חולק את ה-DNA שלו עם שירותי האוטומציה הרחבים שלנו, אך כאן כל פלט מכוון fail-safe.

System prompt לסיווג

Bedrock invoke — severity_classifier.txtTXT
You are a clinical intake triage assistant.

Input: a tokenized intake form. PHI is replaced with tokens.
Do not attempt to reverse tokens. Do not invent identifiers.

Output ONLY valid JSON, no prose. Schema:
{
  "severity": "emergent" | "urgent" | "routine_week" | "routine_extended",
  "specialty_hint": "primary_care" | "cardiology" | "dermatology"
                  | "orthopedics" | "obgyn" | "pediatrics" | "ent",
  "red_flags": [string],
  "confidence": 0.0 to 1.0,
  "rationale": "one sentence, clinical only"
}

Rules:
- emergent = any chest pain >15 min, stroke FAST signs, anaphylaxis,
  severe abdominal pain, suicidal ideation, infant fever >38C,
  pregnancy bleeding, severe shortness of breath, syncope.
- When in doubt between two tiers, ALWAYS pick the more urgent one.
- If chief complaint is too vague to assess, return severity:"urgent"
  and red_flags:["insufficient_information"].
- This output is reviewed by a licensed nurse before any patient action.
  You are an aid, not a decision-maker.

n8n HTTP Request — Bedrock InvokeModel

n8n HTTP Request — AWS BedrockJSON
{
  "method": "POST",
  "url": "https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-haiku-4-5/invoke",
  "authentication": "awsSignatureV4",
  "headers": { "content-type": "application/json" },
  "body": {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 400,
    "system": "{{ $json.classifierSystemPrompt }}",
    "messages": [
      {
        "role": "user",
        "content": "Tokenized intake:n{{ JSON.stringify($json.tokenized) }}"
      }
    ]
  }
}
תובנה
בדוק את צורת ה-JSON ב-Code node. אם הפרסור נכשל או severity חסר, ברירת המחדל היא urgent ויש לנתב לבקרת אחות. ההטיה תמיד לכיוון הסלמה — מקרה urgent שמוחמץ ניתן לשחזור, מקרה emergent שמוחמץ — לא.
4

ניתוב לפי התמחות

צומת Switch ב-n8n מנתב את הקליטה לתור ההתמחות הנכון בהתבסס על חומרה, רמז ההתמחות של המודל, ושכבת keyword overlay מקודדת קשיח לבטיחות. ה-overlay תופס מקרי קצה שבהם המודל עלול לבחור רפואה ראשונית למשהו שצריך להיות בבירור קרדיולוגיה — דפוס חגורה-וכתפיות, חשוב במיוחד למרפאות עם שולחן קבלה משותף ועם מטפלים מוסמכים.

מטריצת ניתוב

חומרה פעולה SLA
emergent באנר "התקשר ל-911 / מד"א" + זימון אחות + התראת EHR < 60 שניות
urgent חיפוש זמן באותו יום או החזרה מקו אחות < 30 דקות
routine_week תור אוטומטי תוך 7 ימים, תור התמחות < 4 שעות
routine_extended תור scheduler רגיל יום עסקים הבא

Keyword overlay מקודד קשיח

n8n Code node — keyword_overlay.pyPYTHON
EMERGENT_KEYWORDS = {
  "chest pain", "crushing chest", "stroke", "facial droop",
  "slurred speech", "anaphylaxis", "throat closing", "suicidal",
  "overdose", "severe bleeding", "unresponsive", "seizure"
}

def overlay(complaint, classifier_result):
    text = complaint.lower()
    if any(k in text for k in EMERGENT_KEYWORDS):
        # Force-upgrade regardless of model output
        classifier_result["severity"] = "emergent"
        classifier_result["red_flags"].append("keyword_overlay_triggered")
    return classifier_result
להיזהר
ה-overlay רק מסלים כלפי מעלה — לעולם לא מוריד את פלט המודל. הורדה כלפי מטה דורשת אישור של קלינאי מוסמך הנרשם ביומן הביקורת. בנה את ה-overlay כך שפיזית הוא לא יכול להוריד חומרה.
5

התאמת זמן ב-EHR וקביעה אוטומטית

עבור הרמות routine ו-urgent, n8n שולח שאילתה ל-FHIR API של ה-EHR לחיפוש זמנים פנויים שתואמים את ההתמחות, רשת הביטוח של המטופל וחלון ה-SLA. Athenahealth, Epic MyChart, eClinicalWorks, DrChrono ו-NextGen חושפים כולם משאבי FHIR R4 Slot ו-Appointment, אם כי הרשאות ומגבלות קצב משתנות. אותה שכבת קביעה מפעילה את אוטומציות מרפאות שיניים שלנו ואת אוטומציות מרפאות וטרינריות עם טקסונומיות התמחות שונות.

חיפוש slot ב-FHIR

FHIR R4 — Slot search requestJSON
GET /Slot?
  schedule.actor:HealthcareService.specialty=cardiology
  &status=free
  &start=ge2026-05-03&start=le2026-05-10
  &_count=20
Authorization: Bearer {{ $credentials.athena.accessToken }}
Accept: application/fhir+json

החלטת קביעה אוטומטית

אם המטופל מוכר (יש MRN קיים), התור נקבע אוטומטית. אם חדש, המערכת שמה hold ושולחת קישור אישור ב-Paubox SMS — המטופל מאשר תוך חלון של 30 דקות, אחרת ה-slot חוזר לבריכה. רמות emergent ו-urgent תמיד עוקפות את הקביעה האוטומטית ומנותבות לקו האחות.

6

יומן ביקורת HIPAA והתראת פריצה

כל סיווג, החלטת ניתוב, חיפוש slot, קביעה ופעולת דה-טוקניזציה כותבים שורה אחת ליומן ביקורת בלתי-משתנה. האחסון הוא S3 עם Object Lock במצב compliance — אפילו AWS root user לא יכול למחוק רשומות לפני סיום חלון השמירה של 6 שנים. היומן מזין שני יעדים: SIEM פנימי לסקירה שגרתית, ומנגנון זיהוי פריצות אוטומטי שמזעיק את קצין הפרטיות אם מתגלים דפוסי גישה חריגים.

סכימת יומן ביקורת

Postgres — hipaa_audit_logSQL
CREATE TABLE hipaa_audit_log (
  id              uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  occurred_at     timestamptz NOT NULL DEFAULT now(),
  intake_ref      text NOT NULL,
  actor           text NOT NULL,        -- system|[email protected]|...
  action          text NOT NULL,        -- classify|tokenize|detokenize|book
  resource_type   text NOT NULL,        -- intake|slot|appointment|phi
  prompt_hash     text,                 -- sha256, never raw prompt
  response_hash   text,
  severity_out    text,
  baa_scope       text NOT NULL,        -- aws_bedrock|athena|jotform
  source_ip       inet,
  retained_until  date NOT NULL DEFAULT (now() + interval '6 years')
);

-- Append-only enforcement: revoke UPDATE/DELETE on the table.
REVOKE UPDATE, DELETE ON hipaa_audit_log FROM PUBLIC;

טריגר זיהוי פריצה

workflow מתוזמן ב-n8n רץ כל 15 דקות מול יומן הביקורת. הוא מתריע על שלושה דפוסים: דה-טוקניזציה בכמות (יותר מ-50 רשומות ב-5 דקות), עליה בכשלי אימות של תפקיד שירות, או כל גישה מ-IP מחוץ לטווחי המקום והעסק וה-VPN. שעון ההתראה של HHS מתחיל ברגע שקצין הפרטיות מקבל זימון — לכן ה-workflow מטביע חותמת זמן גם על הזיהוי וגם על הזימון.

קריטי
תחת HIPAA Breach Notification Rule, ל-covered entity יש 60 יום מהגילוי להודיע למטופלים מושפעים (ול-HHS עבור פריצות שמשפיעות על 500+ מטופלים). "גילוי" מוגדר רחב: היום הראשון שכל איש צוות ידע, או היה אמור לדעת בבדיקה סבירה. יומן הביקורת הוא ציר הזמן הקובע בכל חקירת OCR.

כשלים נפוצים ופתרונות

שלושה דפוסי כשל מופיעים בכל הטמעת AI במרפאה. תכננו אותם מהיום הראשון — כל אחד מהם הוא אירוע מדווח פוטנציאלי תחת HIPAA או חוק מדינתי.

כשל 1: דליפת PHI דרך טקסט חופשי של תלונה

סימפטום: מטופל כותב "היי, אני Jane Doe, תאריך לידה 7/19/84, MRN 44218, יש לי כאב בחזה". השדות המובנים מטוקנים בסדר אבל התלונה החופשית מכילה שם, תאריך לידה ו-MRN שזורמים ישר ל-LLM.

תיקון: הריצו פאס regex לדה-אידנטיפיקציה על chief_complaint לפני הטוקניזציה. תפסו דפוסים נפוצים — "my name is X", "DOB", "MRN", "SSN", "phone". לדיוק גבוה יותר הוסיפו presidio או פאס Claude Haiku NER קטן שמחזיר offsets לרידקציה. AWS Comprehend Medical עם זיהוי PHI גם הוא BAA-eligible.

כשל 2: הורדת חומרה בהצגות לא טיפוסיות

סימפטום: אישה בת 58 כותבת "מרגישה ממש עייפה וקצת בחילה, הלסת כואבת". המודל מסווג כ-routine — אבל זו הצגת ספר של אוטם לב לא טיפוסי בנשים.

תיקון: הוסיפו חוקי דגלים אדומים מודעי-דמוגרפיה ל-prompt ול-keyword overlay. אישה + מעל 50 + כאב לסת + בחילה + עייפות מפעילים מסלול קרדיולוגיה emergent בלי קשר לפלט המודל. תחזוקה עם המנהל הרפואי שלכם — סקירה רבעונית.

כשל 3: השבתה של Bedrock או EHR בשיא בוקר יום שני

סימפטום: AWS Bedrock מחזיר 503 או נקודת FHIR של Athenahealth קורסת. ה-workflow נתקע וקליטות נערמות לא מעובדות.

תיקון: ל-HTTP node של n8n יש retry-with-backoff מובנה. אחרי 3 ניסיונות כושלים, נתבו את הקליטה ל"תור נסיגה לאחות" עם באנר: "טריאז' AI לא זמין, נדרשת בדיקה ידנית". להיכשל-בקול, לעולם לא בשקט. תור הנסיגה משאיר את ה-PHI בתוך ה-VPC כל הזמן. אותו דפוס fail-safe מתועד בסקירת שירותי ה-AI שלנו.

HIPAA ועמידה ברגולציה — הסעיף הארוך

נתוני קליטת מטופלים הם בין המידע האישי המפוקח ביותר בארה"ב. שלושת הכללים המרכזיים של HIPAA — Privacy, Security, Breach Notification — חלים על כל בייט שזורם דרך ה-workflow הזה, בנוסף לחוקי מדינות שלעיתים מוסיפים דרישות מחמירות יותר (CMIA של קליפורניה, SHIELD Act של ניו יורק, HB300 של טקסס, My Health My Data Act של וושינגטון). זה הסעיף הארוך במדריך מסיבה: לקבל את סיפור העמידה נכון זה ההבדל בין הטמעה לבין פשרת OCR בשש ספרות.

שרשרת ה-BAA

Business Associate Agreement הוא חוזה שמחייב ספק לטפל ב-PHI בהתאם ל-HIPAA. כל ספק במסלול הנתונים צריך אחד. עבור ה-workflow הזה זה אומר: AWS (מכסה Bedrock, EC2, RDS, S3, CloudWatch, KMS), Jotform HIPAA tier, Paubox או Virtru, ספק ה-EHR שלכם (כבר מכוסה אם הוא ה-EHR שלכם), וכל כלי ניטור או SIEM שנוגע ביומן הביקורת.

ה-Anthropic public API מוחרג במכוון. נכון לכתיבת המדריך, Anthropic לא מציעה BAA על ה-API הציבורי. AWS Bedrock הוא המסלול ה-BAA-מכוסה ל-Claude — AWS היא ה-business associate, AWS מטפלת ב-PHI בתוך גבול HIPAA-eligible שלה, ו-Anthropic ספק המודל לא מקבלת PHI באופן שדורש BAA נפרד. אם אי פעם תעקפו את Bedrock ותקראו ישירות ל-Anthropic עם PHI, יצרתם חשיפה לא מורשית. זו טעות תכופה ורצינית.

מינימיזציה של PHI בפועל

תקן minimum-necessary של HIPAA Privacy Rule הוא לא שאיפה. זו דרישה. 18 מזהי Safe Harbor — שם, חלוקות גיאוגרפיות קטנות ממדינה, כל אלמנט תאריך מתחת לשנה (חוץ מגיל 90+), טלפון, פקס, מייל, SSN, MRN, מספר מוטב ביטוח בריאות, מספר חשבון, מספר תעודה/רישיון, מזהה רכב, מזהה מכשיר, URL, IP, מזהה ביומטרי, תמונת פנים מלאה, וכל מספר מזהה ייחודי אחר — נשלפים לפני קריאת ה-LLM ומוחלפים בטוקנים הפיכים. הזיהוי מחדש קורה רק בתוך ה-VPC, רק על-ידי תפקיד השירות של n8n, ורק כשה-workflow צריך לכתוב חזרה ל-EHR.

הצפנה — at rest, in transit, in use

At rest: כל שכבת אחסון משתמשת ב-AES-256 עם מפתח KMS מנוהל-לקוח. RDS Postgres, baskets S3 Object Lock, EBS volumes על EC2 host של n8n, ו-CloudWatch log groups כולם מצפינים עם אותו alias מפתח. למפתח KMS יש מדיניות מחמירה — רק תפקיד IAM של n8n וקצין הפרטיות יכולים להשתמש בו; רק יומן CloudTrail רושם מי השתמש בו.

In transit: TLS 1.3 בין כל רכיב. נקודות webhook דוחות חבילות צופן TLS 1.2 ללא forward secrecy. תעבורת VPC פנימית משתמשת ב-VPC endpoints (PrivateLink) ל-Bedrock, S3 ו-Secrets Manager — PHI לעולם לא חוצה את האינטרנט הציבורי.

In use: Bedrock מעבד את ה-prompt בתוך חומרה מנוהלת של AWS. ה-prompt לא נשמר, לא משמש לאימון (לפי תוספת ה-BAA של AWS), ולא משותף בין-לקוחות. ודאו זאת בהגדרות data-protection של Bedrock ותעדו זאת בתיק ה-BAA.

שמירת ביקורת — 6 שנים, בלתי-משתנה

HIPAA Security Rule דורש שמירה של 6 שנים לתיעוד הקשור למדיניות ונהלי אבטחה, כולל יומני ביקורת של גישה ל-PHI. טבלת הביקורת משתמשת ב-S3 Object Lock במצב compliance עם תקופת שמירה של 6 שנים — אפילו AWS root user לא יכול למחוק רשומות לפני שהחלון נסגר. CloudTrail רושם את מחזור החיים של כל שינוי הגדרת Object Lock. עמודת retained_until בכל שורה היא סמן יישום מיותר, לא תחליף לנעילה ברמת ה-bucket.

Breach Notification Rule — שעונים מתחילים לתקתק

אם מתגלה פריצה של PHI לא מוצפן, ל-covered entity יש 60 יום להודיע למטופלים מושפעים, ל-HHS Office for Civil Rights, ו(לפריצות של 500+ תושבים במדינה) למדיה מקומית בולטת. "גילוי" מוגדר רחב: זה היום הראשון שכל איש צוות ידע, או, על-ידי שקידה סבירה, היה צריך לדעת. טריגר זיהוי הפריצה ב-Step 6 מטביע חותמת זמן גם על ההתראה וגם על הזימון, כך ששעון הגילוי מעוגן באחסון בלתי-משתנה.

שכבת חוקי מדינות

CMIA של קליפורניה, SHIELD של ניו יורק, HB300 של טקסס, ו-My Health My Data Act של וושינגטון כולם מוסיפים חובות מעל HIPAA — לפעמים חלונות הודעה קצרים יותר, לפעמים הגדרות רחבות יותר של מידע מוגן, לפעמים זכויות תביעה פרטיות. ה-workflow לעמידה ברגולציה צריך לעקוב אחר באיזו מדינה כל מטופל מתגורר (לפי ZIP כתובת) ולסמן את הכלל המגביל ביותר שחל לקצין הפרטיות.

אבטחה
לעולם אל תעתיקו payload נושא-PHI לטרמינל מקומי של מפתח, לערוץ Slack משותף, או למערכת באגים שאינה HIPAA. שחזרו תקלות פרודקשן עם קליטות סינתטיות. הדרכת צוות על הכלל הזה היא בעצמה אמצעי הגנה אדמיניסטרטיבי תחת HIPAA Security Rule.

תוצאות מדודות — אחרי 90 יום

מספרים מהטמעה אמיתית בקבוצת רפואה ראשונית של 6 רופאים בשני סניפים אחרי טייס ראשון של 90 יום, עם כל סיווג emergent שנסקר עצמאית על-ידי המנהל הרפואי.

זמן טריאז' חציוני
6 שניות
היה 4.7 שעות
רגישות emergent
96%
אפס מקרים שהוחמצו
חיסכון בזמן קבלה
24 שעות
בשבוע
הפחתת no-show
30%
ע"י ניתוב פרואקטיבי

חיסכון שנתי בעבודה של כ-$120K כיסה את עלות ההטמעה ברבעון הראשון. נתון רגישות ה-emergent של 96% נסקר עצמאית על-ידי המנהל הרפואי מול תרשימי ESI Level 1/2; 4% ה-"false negatives" כולם היו סיווגים משניים שבהם ה-keyword overlay תפס את המקרה בכל מקרה, כלומר אפס מטופלים הגיעו לתור routine כשהם נזקקו לטיפול emergent.

לוח זמנים ועלות הטמעה

מסלול DIY
120 – 180 שעות
  • BAA + הערכת סיכון HIPAA: 20–30 שעות
  • תשתית AWS HIPAA-eligible, KMS, VPC: 16–24 שעות
  • טוקניזציית PHI + הקמת Bedrock: 18–28 שעות
  • prompt של Claude + ולידציית מסווג עם סקירת MD: 24–36 שעות
  • אינטגרציית EHR FHIR + slot match: 20–30 שעות
  • יומן ביקורת + זיהוי פריצה + go-live תחת בקרת אחות: 22–32 שעות
עם SEOKRU
הטמעה ב-4 שבועות
  • שבוע 1: BAA + הערכת סיכון HIPAA
  • שבוע 2: טוקניזציית PHI + הקמת Bedrock
  • שבוע 3: prompt של Claude + ולידציית מסווג עם סקירת MD
  • שבוע 4: אינטגרציית EHR + יומן ביקורת + go-live תחת בקרת אחות
  • כולל: SLA של 90 יום, כיוונון prompt, דוח דיוק וביקורת חודשי

שאלות נפוצות

לא ל-PHI. Anthropic לא מציעה כרגע Business Associate Agreement על ה-API הציבורי שלה, מה שאומר ששליחת PHI ל-api.anthropic.com היא חשיפה לא מורשית תחת HIPAA. AWS Bedrock הוא המסלול ה-BAA-מכוסה: AWS היא ה-business associate, AWS מארחת את מודלי Claude בתוך תשתית HIPAA-eligible, ו-AWS מתחייבת חוזית לטפל ב-PHI לפי ה-Privacy ו-Security Rules. אם ספק אומר לכם "אנחנו משתמשים ב-Claude" בלי לפרט את שרשרת ה-BAA, בקשו אישור בכתב שכל תעבורת PHI חוצה את Bedrock כש-AWS היא ה-BA. אם יש לכם use case ללא PHI (בוט FAQ ציבורי שלא רואה נתוני מטופלים) ה-Anthropic API בסדר — אבל ברגע ש-PHI נכנס למסלול, נתבו אותו דרך Bedrock.
המרפאה נשארת אחראית להחלטות קליניות — זו כל הסיבה שהמדריך הזה מתעקש שכל סיווג emergent ו-urgent נסקר על-ידי אחות מוסמכת לפני כל פעולה על המטופל. המערכת מציפה מידע מהר ולעולם לא מחליפה שיקול דעת קליני. ה-keyword overlay ב-Step 4, חוקי ההטיה-להסלמה ב-Step 3, ויומן הביקורת הבלתי-משתנה ב-Step 6 הם הגנות בשכבות. בטייס של 90 יום שמופיע בסעיף התוצאות, המערכת סימנה כל מקרה emergent (96% ישירות, 4% דרך ה-keyword overlay), עם אפס מטופלים שנותבו לתור routine כשנזקקו לטיפול חירום. החזיקו ביטוח רשלנות רפואית שמתייחס מפורשות ל-workflows מסייעי-AI ותעדו את מדיניות ה-human-in-the-loop בפרוטוקולי ועדת בטיחות המטופל.
לא. זה מחליף את טריאז' שולחן הקבלה — שלב העוזר הרפואי או המתאם שבו טפסי קליטה ממוינים לפי חומרה. טריאז' אחות מוסמכת נשאר בדיוק במקומו. מה שמשתנה זה שאחיות לא מבזבזות יותר 20% מהמשמרת בגלילת טפסי קליטה כדי לחפש את הדחופים; המערכת מציפה אותם בתוך שניות. רוב האחיות שאנחנו עובדים איתן אומרות שהן עושות יותר עבודת סיעוד ופחות עבודה אדמיניסטרטיבית אחרי הטמעה. ה-Critical callout ב-Step 6 מפרט בדיוק היכן האחות נשארת מקבלת ההחלטות.
ה-system prompt של המסווג אגנוסטי לשפה — Claude מטפל ב-50+ שפות ילידי, כולל ספרדית, מנדרינית, וייטנאמית, טאגלוג, ערבית ורוסית, שמכסות את רוב אוכלוסיות המטופלים בארה"ב. השפה המזוהה מתווספת לפלט ה-JSON ומתפשטת בצינור כך שאישורים, SMS וכל טקסט פונה-מטופל חוזרים בשפת המקור. עבור שפות עם משאבים נמוכים מאוד, הניתוב חוזר למתאם דו-לשוני אנושי. חוק מדינתי לעיתים דורש מתורגמן מוסמך לתקשורת קלינית — שכבת ה-AI לעולם לא מחליפה את זה, היא רק מאיצה את ניתוב הקליטה.
שניהם דורשים שכבת prompt נפרדת עם דגלים אדומים משלהם. ילדים: חום של תינוק מעל 38C, רפיון, סירוב לאכול, סימני התייבשות, בליעה בשוגג — כולם ברירת מחדל emergent. יולדות: כל דימום, ירידה בתנועות עובר אחרי שבוע 28, כאב ראש או שינויי ראיה חמורים (רעלת הריון), כולם emergent. חוקי ה-prompt ב-Step 3 מכסים את המקרים בתדירות הגבוהה ביותר; עבור workflows מלאים של ילדים או יולדות, פצלו את ה-system prompt וודאו מול רופא מומחה ילדים או יולדות. הארכיטקטורה תומכת בהרצת מספר prompts מסווגים ספציפיים-להתמחות במקביל ובחירת הפלט המחמיר ביותר.
Suki, Abridge ו-DAX Copilot של Microsoft הם כלי תיעוד קליני — הם מאזינים למפגש מטופל-קלינאי ומייצרים את הערת SOAP או רשומת התיק. הם יושבים במורד הטריאז'. workflow הטריאז' הזה יושב במעלה הזרם: הוא מחליט מי צריך לראות קלינאי וכמה מהר. שתי השכבות משלימות זו את זו. מרפאה שמריצה DAX בחדר הבדיקה יכולה להריץ את הצינור הזה בקדמת המשפך, ואז DAX לוקח שליטה ברגע שהמטופל בחדר. אף אחד משלושת כלי התיעוד לא מספק סיווג חומרת קליטה או ניתוב התמחות — אלה בעיות שונות עם prompts שונים ופרופילי אחריות שונים.

רוצים שהמערכת הזאת תיבנה למרפאה שלכם?

SEOKRU מטמיעה את ה-workflow הזה ב-4 שבועות על תשתית AWS HIPAA-eligible עם שרשרת BAA חתומה. אנחנו מטפלים בהערכת הפרטיות, טוקניזציית PHI, ולידציית prompt בסקירת MD, אינטגרציית EHR, ו-90 יום של ניטור דיוק עם דוחות ביקורת חודשיים. אתם שומרים על בעלות בכל רכיב.

דבר עם מהנדס אוטומציה רפואית