קידום אתרים
תחום מרפאות שיניים / מדריך טכני
אוטומציית recall והפעלה מחדש במרפאת שיניים עם n8n ו-Claude מודעות HIPAA, שלב אחר שלב
מדריך מלא לבניית pipeline על n8n עם Claude שמושך מטופלים לא פעילים מה-PMS שלך (Open Dental, Dentrix, Eaglesoft, Curve, Dolphin), בודק יתרת הטבות ביטוח, מנסח הודעת recall אישית, וקובע תור ב-SMS דו-כיווני. כל זה עם יומן ביקורת HIPAA מאחורי כל שלב.
שליפה מ-PMS (Open Dental, Dentrix…)
פילוח לא פעילים (6/12/18 חודשים)
בדיקת יתרת הטבות (Vyne)
Claude מנסח הודעה מותאמת
שליחה SMS / מייל / קולית (Weave)
קביעת תור דו-כיוונית (NexHealth)
יומן ביקורת HIPAA ל-S3
1. הבעיה (למה רשימות recall מתפוררות מהר ממה שמרפאות מודות)
לכל מרפאת שיניים כללית עם יותר משני כיסאות יש את אותה בעיה. בערך 11% מה"מטופלים הפעילים" שיושבים ב-PMS לא הגיעו ל-hygiene יותר מחצי שנה, ולמזכירות פשוט אין זמן לעבוד על הרשימה הזאת באמת. גלויות מודפסות, נשלחות בדואר, מתעלמים מהן. הכיסא של ההיגייניסטית עם עמודות פנויות. ומטופלים שעוברים את ה-18 חודשים פשוט מפסיקים לחשוב עליך כעל "הרופא שלהם" (אתה סתם מישהו שיש לו את הצילומים הישנים).
מספרים אמיתיים ממרפאה כללית עם 3 רופאים (4,200 מטופלים פעילים)
| מטופלים פעילים ב-PMS | 4,200 |
| לא פעילים מעל 6 חודשים (בלי hygiene) | ~460 (11%) |
| תגובה היסטורית ל-recall (גלויה + SMS bulk אחד) | 8% |
| מטופלים עם יתרת הטבות 2025 שתפוג ב-31/12 | ~310 |
| production ממוצע שנאבד למטופל hygiene לא פעיל בשנה | $640 |
החשבון פשוט. 460 מטופלים לא פעילים, כפול 14 נקודות עליה בשיעור התגובה, כפול שווי לאורך חיים ממוצע של מטופל. זה מחזיר את העלות של כל ה-stack בתוך הרבעון הראשון, ועוד לפני שאתה סופר את ה-production מהמטופלים שעמדו להפוך ללא פעילים בחודש הבא ועכשיו לא. האילוץ הוא לא רצון. האילוץ הוא bandwidth. למזכירות יש 20 דברים בוערים והרשימה של ה-recall אף פעם לא הכי רועשת.
מה זה "AI recall" כאן
זה לא SMS bulk אחד שאומר "הגיע הזמן לניקוי". מתעלמים מזה אחרי החודש הראשון, וזה גם שורף את הסבלנות של מטופלים שמקבלים את אותו תבנית ארבע פעמים. החלק של ה-AI עושה שלושה דברים שטמפלייט סטטי לא יודע לעשות:
- פילוח לפי עומק חוסר הפעילות: 6 חודשים, 12 חודשים, 18 חודשים. לכל אחד טון אחר, הצעה אחרת, ומקצב ערוצי שונה.
- פרסונליזציה מתוך הכרטיס: תאריך ה-hygiene האחרון, הבדיקה האחרונה, פריטי תוכנית טיפול שעדיין פתוחים, ההיגייניסטית שאהבו, השעה ביום שהם מעדיפים.
- תזמון ליתרת הטבות: מטופלת עם $890 הטבות לא מנוצלות שתוקפן יפוג ב-31/12 מקבלת הודעה אחרת באוקטובר ואחרת בפברואר.
2. ארכיטקטורת המערכת
שבעה רכיבים. כל אחד ניתן להחלפה. כל אחד מכוסה ב-BAA לפני שטיפת מטופל אחת נוגעת בו. שכבת ה-orchestration היא n8n self-hosted על תשתית AWS HIPAA-eligible. זה אומר EC2 ב-VPC פרטי, EBS מוצפן ב-KMS, בלי כניסה ציבורית חוץ מ-webhook לתשובות SMS (שגם הוא רץ דרך API Gateway עם WAF). PHI לא יוצא מהאזור שהמרפאה פועלת בו.
ה-stack
הערכת עלות (4,200 פעילים, ~460 לא פעילים, מחזור חודשי)
| Claude על Bedrock (~460 קריאות פרסונליזציה + סיווג) | ~$24 |
| בדיקות eligibility (Vyne Trellis, ~310 שאילתות) | ~$95 |
| SMS / voicemail (חבילת Weave) | ~$80 |
| תשתית AWS (EC2 + RDS + S3 Object Lock + KMS) | ~$140 |
| מנוי NexHealth או LocalMed | ~$249 |
| Monitoring (CloudWatch + Healthchecks) | ~$22 |
| סך הכל לחודש | ~$610 |
מטופלת אחת שחזרה לעבור hygiene ועוד quadrant של SRP מחזירה עלות של חודשיים. שכבת ה-orchestration נכנסת גם ל-שירותי האוטומציה ה-AI הרחבים שאנחנו מריצים למרפאות.
שליפה מה-PMS ופילוח לא פעילים
ה-pipeline מתחיל בתוך ה-PMS. המקור הכי נקי ל"לא פעיל" הוא תאריך last_hygiene_visit ברשומת המטופל, joined לרשומת recall_due בתוכנית ה-recall. Open Dental חושף את שניהם דרך REST API; Dentrix צריך את ה-middleware של DDP; Eaglesoft בדרך כלל ניגשים אליו ב-SQL ישיר על המסד SQL Anywhere; Curve ו-Dolphin שניהם מספקים endpoints של REST.
שלוש רמות של חוסר פעילות
- לא פעילים 6-12 חודשים: warm. עדיין חושבים עליך כעל הרופא שלהם. נגיעה ידידותית, לשים דגש על יתרת ההטבות ועל נוחות.
- לא פעילים 12-18 חודשים: מתרחקים. להכיר בפער, להציע חלון ספציפי, להזכיר פריטים פתוחים בתוכנית הטיפול.
- 18+ חודשים: בסיכון לעבור למרפאה אחרת. פנייה אישית, רצוי חתומה על שם הרופא או ההיגייניסטית שראו אצלם אחרון.
שאילתת Open Dental לקוהורט הלא פעילים
cron לילי ב-n8n רץ ב-02:00 שעון מקומי, פוגע ב-endpoints של Open Dental (/patients ו-/recalls), וכותב את הקוהורט לטבלת staging ב-Postgres בתוך אותו VPC. השאילתה למטה היא הצורה הקנונית לחיבורי PMS עם SQL ישיר (Eaglesoft, Dentrix on-prem), מותאמת לסכמה של Open Dental.
DoNotContact על המטופל בנוסף ל-PatStatus = 4 לנפטרים. ב-Dentrix דגלים נפרדים בבלוק המטופל. להוציא את שניהם זה משפט AND אחד, ומונע את סוג האסון התדמיתי שמסיים קריירות.בדיקת יתרת הטבות ביטוח
הודעת recall שמזכירה סכום דולרי ספציפי של הטבות שתוקפן יפוג בסוף שנה ממירה בערך פי 2.4 מהודעה שלא מזכירה. החומר הוא eligibility בזמן אמת דרך Vyne Trellis או DentalXChange. לשניהם יש BAA, שניהם מחזירים את המקסימום השנתי שנותר, סטטוס deductible, ומגבלות תדירות על קודים נפוצים (D1110, D0150, D0274, D0210). אותו דפוס בדיקת eligibility חוזר בעבודה שלנו על אוטומציות AI למרפאות רפואיות.
מה מחזירה קריאת ה-eligibility
- מקסימום שנתי שנותר. השדה הכי שימושי. הוא מניע את שורת הדחיפות.
- סטטוס deductible. אם כבר נפרע, המטופל משלם פחות. שווה להגיד.
- מגבלות תדירות. D1110 בדרך כלל פעמיים בשנה. אם עברו אחד בפברואר, אולי לא מגיע להם עד אוגוסט.
- תאריך איפוס שנת תוכנית. רוב התוכניות מתאפסות ב-1/1, אבל חלק לא מבוטל רץ על שנת הטבות שקשורה למועד הצטרפות.
- כיסוי על D0274 (bitewings) ו-D0210 (FMX). מחליטים אם לצרף צילומים ל-recall.
SQL: cache לתשובות eligibility לפי carrier ותוכנית
שכבת פרסונליזציה (Claude)
טמפלייט סטטי מתייחס לאמא לשלושה ילדים שלא הגיעה 7 חודשים עם $620 הטבות שנותרו, בדיוק אותו דבר כמו לגמלאי שלא הגיע 18 חודשים על תוכנית אחרת. הם לא אותו מטופל ולא מגיבים לאותה הודעה. Claude לוקח את התקציר מהכרטיס בנוסף לתמונת ה-eligibility, מפעיל את כללי הטון של המרפאה, ופולט payload מובנה עם גוף ההודעה, ערוץ מועדף, וחשוב מכל, הסיבה המפורשת למה ההודעה הזאת נוסחה ככה. זה מה שהופך את הפלט ל-auditable.
5 הצירים של הפרסונליזציה
רמה 6 / 12 / 18 חודשים. קובעת רגיסטר טון.
דולרים שנותרו, כפול חודשים עד איפוס שנת התוכנית.
פריטי טיפול שלא אושרו: SRP, כתר, מגן חסימה.
ההיגייניסטית האחרונה, הרופא המטפל האחרון. חתום בשמם.
שדה PreferContactMethod ב-PMS, plus היסטוריית engagement.
System prompt של ה-recall
ה-prompt דעתני לגבי מה לא לכלול ב-SMS. גוף הודעת SMS לעולם לא יכלול אבחנה או קוד הליך. זאת חשיפת HIPAA שאף מרפאה לא צריכה לקחת על עצמה בערוץ לא מאובטח. ה-prompt אוכף את הכלל בזמן יצירת ההודעה, ככה שהמרפאה לא צריכה לסנן בזמן השליחה.
קריאת n8n ל-Bedrock (Claude Sonnet)
שליחה מולטי-ערוצית (SMS, מייל, קולית)
אף ערוץ אחד לא עובד על כל הקוהורט. SMS נוחת הכי מהר, אבל יש לו את הכללים הכי מחמירים על תוכן. מייל נותן מקום למכתב אמיתי, אבל מאבד 30%+ ל-spam. voicemail-drop עם הודעה מוקלטת מאיש צוות אמיתי ממיר הכי טוב על ה-tier של ה-18 חודשים, אבל גם הכי יקר לנגיעה. ה-pipeline בוחר ערוץ ראשי אחד לפי שדה ההעדפה של ה-PMS ועוד fallback אחד, עם פער של 72 שעות בין ניסיונות.
כללי ערוץ לפי קוהורט
| קוהורט | ראשי | Fallback (72ש) | מוצא אחרון (יום 14) |
|---|---|---|---|
| 6 חודשים | SMS (העדפת PMS) | מייל | אין. הקוהורט מתבגר ל-12ח |
| 12 חודשים | מייל (גוף ארוך יותר) | SMS | Voicemail drop בקול ההיגייניסטית |
| 18+ חודשים | Voicemail drop בקול הרופא | מכתב אישי (נייר) | משימת שיחה חיה למזכירות |
שליחת SMS דרך Weave (BAA קיים)
שעות שקטות וכבוד ל-TCPA
שני קווים אדומים. SMS לסלולרי ביתי בארה"ב נופל תחת TCPA. שעות שקטות הן 20:00 עד 8:00 בשעון מקומי של הנמען. ה-send_window ב-payload למעלה אוכף את זה ברמת vendor המסרים. הקו השני: כל תשובת STOP חייבת להיות מכובדת בתוך 24 שעות, נכתבת חזרה ל-PMS כ-DoNotContact = 1, ומופיעה ביומן הביקורת. STOPs לא רק מסוננים בשליחה הבאה. הרצף שבתור מבוטל.
קביעת תור ב-SMS דו-כיווני
העלייה הכי גדולה בהמרה באה מביטול שלב ה-call back. מטופלת שעונה "כן, יום שלישי אחר הצהריים מתאים" צריכה לנחות ישירות על slot אמיתי בלוח זמנים אמיתי ב-PMS, בלי שמישהו במרפאה יעשה בכלל משהו. n8n עושה את זה עם webhook לתשובות מ-Weave, מסווג intent קטן, וקריאת חיפוש slot של NexHealth (או LocalMed / Modento).
מסווג intent לתשובות (Claude Haiku)
תשובות של מטופלים קצרות, מבולגנות, ומלאות עמימות של שפה טבעית ("בכל זמן אחרי 3 שבוע הבא", "השבוע של ה-14", "בוקר רע לי"). Haiku מספיק זול כדי להריץ על כל הודעה נכנסת ומספיק מובנה כדי לפלוט slot-query.
חיפוש slot בקריאת NexHealth API
ה-pipeline עונה עם 3 ה-slots המועמדים הראשונים שמתאימים לחלון של המטופל. המטופל עונה "יום שלישי בשתיים", קריאת Haiku נוספת מבהירה ל-slot יחיד, וענף n8n שולח POST של NexHealth ל-/appointments שכותב את ההזמנה חזרה ל-PMS בזמן אמת. סך הזמן משליחת ה-recall ההתחלתית ועד תור מאושר ביומן, כשהכל עובד: מתחת ל-4 דקות. אותו דפוס שיחה לקביעת תור חוזר אצלנו ב-אוטומציות נדל"ן, איפה שלקבוע סיור על דירה יש פרופיל דחיפות דומה.
כתיבה חזרה ל-PMS ויומן ביקורת HIPAA
ה-PMS נשאר מקור האמת ללוח הזמנים, לכרטיס, ולספר התקשורת עם המטופל. כל פעולה שה-pipeline עושה (הודעה נוצרה, הודעה נשלחה, תשובה התקבלה, תור נקבע) מקבלת שתי כתיבות: אחת להערה בכרטיס ב-PMS (כך שהמזכירות רואה את העקבות בזרימה הרגילה שלה) ואחת ל-bucket לא ניתן לשינוי ב-S3 (כך שאחראי הציות יכול למשוך 7 שנות היסטוריה ביקש).
כתיבה חזרה להערת כרטיס ב-Open Dental
יומן ביקורת ל-S3 (Object Lock, 7 שנות שמירה)
כשלים נפוצים והתיקונים
שלוש תקלות חוזרות כמעט בכל פריסה דנטלית. תכננו מולן ביום הראשון. הן זולות לעצב סביבן ויקרות מאוד לשפץ אחרי הסקירה הראשונה של הציות.
תקלה 1: SMS לאדם שנפטר
תסמין: מטופל ותיק נפטר במרץ. ה-PMS עודכן ל-PatStatus = 4 על ידי איש צוות אחד אבל תוכנית ה-recall אף פעם לא הושבתה. ה-pipeline מושך אותו כ-8 חודשים לא פעיל ושולח SMS למספר של המשפחה ביום שלישי בבוקר.
תיקון: ה-SQL של הקוהורט חייב לסנן על PatStatus = 0 בנוסף ל-DoNotContact = 0 בנוסף לכך שאין commlog מסוג "deceased_notification" בשנה האחרונה. שלוש שכבות הגנה, לא אחת. זאת התקלה עם המחיר התדמיתי הכי גבוה. תתייחסו אליה כמו ל-rate-limit על מערכת תשלומים.
תקלה 2: דליפת אבחנה בגוף SMS
תסמין: טיוטה של Claude מזכירה "הטיפול שלך ב-periodontitis" בתוך SMS. SMS לא מוצפן בהובלה ברמת המוביל הסלולרי. זאת חשיפה לא מורשית של מידע קליני.
תיקון: ה-system prompt אוסר על מונחים קליניים ב-SMS בזמן יצירה. שכבה נוספת רצה על הפלט: regex / התאמת embedding מול לקסיקון של ICD-10 וקודי הליכים דנטליים, plus deny-list של תארים קליניים. כל מה שתופס באחד מהם נוחת ב-human_review במקום להישלח. שתי שכבות, אף אחת מהן לא מספיקה לבדה.
תקלה 3: גל סוף-שנה של הטבות מפיל את ספק ה-eligibility
תסמין: דחיפת "תנצל לפני שיפוג" בנובמבר-דצמבר יוצרת eligibility על כל מטופל לא פעיל בתוך יומיים. Vyne מטיל rate-limit, התור של n8n נתקע, החצי השני של הקוהורט מקבל הודעות באיחור של 5 ימים.
תיקון: פזרו את הדחיפה של סוף השנה על פני 14 יום, לא יומיים. ערכו pre-warm ל-cache של ה-eligibility בשבוע השני של אוקטובר. הריצו n8n ב-queue mode עם לפחות 3 workers. עטפו קריאות eligibility ב-retry-with-jitter. ה-pre-warm לבד חותך את העומס על ה-API בשיא של דצמבר ב-70%+.
פרטיות: HIPAA, TCPA וחוקים מדינתיים
מרפאות שיניים בארה"ב הן Covered Entity תחת HIPAA. כל מערכת חיצונית שנוגעת בנתוני מטופל היא Business Associate. ה-pipeline למעלה מערב לפחות חמישה Business Associates (AWS, Anthropic-דרך-Bedrock, ספק ה-API של ה-PMS, ה-clearinghouse של ה-eligibility, וספק המסרים), והמרפאה חייבת BAA תקף בתיק עם כל אחד לפני שטיפת PHI אחת זורמת. בלי יוצא מן הכלל. בלי "נסדר את ה-BAA אחר כך". (להקשר ישראלי, חוק הגנת הפרטיות והנחיות משרד הבריאות מחייבים אותך באופן דומה למפות BAA-equivalents מול ספקים, אבל המסגור בעמוד הזה ארה"ב כי ה-PMS-ים והספקים שמוזכרים פה כולם US.)
מה Claude רואה (ומה לא)
- רואה: שם פרטי, ראשי תיבות שם משפחה, טווח גיל, תאריך hygiene אחרון, תאריך בדיקה אחרונה, תג קוהורט נוכחי, סיכום eligibility (יתרת מקסימום שנתי, תאריך סוף שנת תוכנית), ערוץ קשר מועדף מה-PMS, שמות הרופא וההיגייניסטית, דגל בוליאני בלבד אם יש פריט פתוח בתוכנית הטיפול.
- לא רואה: SSN, תאריך לידה מלא, כתובת מלאה, צילומים, צילומי רנטגן, ערכי perio chart, קודי הליך ספציפיים, יתרות פיננסיות, שום הערת טקסט חופשי בכרטיס. tokenized PMS ID משמש כ-cross-reference key.
הערות יישום ספציפיות ל-HIPAA
הגישה ל-Claude היא רק דרך AWS Bedrock עם BAA קיים ברמת AWS. אף פעם דרך ה-API הציבורי של Anthropic, שאין לו כיסוי BAA. PHI לא חוצה את גבול אזור ה-AWS. ה-EC2, ה-RDS, ה-S3, וקריאות ה-Bedrock כולם חיים ב-us-east-1 (או באזור שהמרפאה פועלת בו). מינימליזציה של נתונים נאכפת בשלב בניית ה-prompt. תקציר המטופל נבנה עם whitelist של שדות, לא עם עותק של הרשומה המלאה. שמירת הביקורת היא 7 שנים לפי דרישות תיעוד HIPAA. Object Lock במצב GOVERNANCE מונע מחיקה או שינוי בתוך החלון הזה.
TCPA וחוקים מדינתיים
- TCPA: המטופל נתן הסכמה מראש בקבלה כששם תיוג על opt-in ל-SMS. ה-pipeline חייב לשמור את רשומת ההסכמה ולשלוח רק למספרים עם opt-in פעיל. שעות שקטות 20:00 עד 8:00 בשעון מקומי.
- CCPA / CPRA (קליפורניה): מסלול מתועד למחיקת נתונים שמטהר את המטופל מ-Postgres ה-staging ומ-cache ה-eligibility בעסקה אחת.
- FTPA פלורידה, MyHealth MyData וושינגטון: סטנדרטי הסכמה מחמירים יותר מ-HIPAA על תקשורת בריאותית. אם המרפאה פועלת באחת מהמדינות האלה, תתייחס לכל הפניה קלינית בהודעה יוצאת כ-opt-in-only במינימום.
- יומן ביקורת: כל hash של prompt, גרסת מודל, וגוף הודעה נרשמים עם חותמת זמן ו-IAM principal. תאמין שתפיק את זה בכל ביקורת.
תוצאות נמדדות (90 יום אחרי)
מספרים מיישום אמיתי במרפאה כללית עם 3 רופאים (4,200 מטופלים פעילים, ~460 לא פעילים בהתחלה, 6 כיסאות, 4 היגייניסטיות) אחרי הרבעון הראשון המלא. בתקופת המבחן לא רצו קמפיינים חדשים לרכישת מטופלים. כל ההרמה היא מעבודה טובה יותר על הספר הקיים.
המדד הראשי בתוך המרפאה הוא לא הסכום הדולרי. זה ניצול הכיסא של ה-hygiene. עמודות פנויות ירדו מממוצע של 11% ריקות ל-4% ריקות תוך הרבעון. היגייניסטית אחת שמריצה עמודה מלאה יותר מייצרת עוד ~$2,200 לחודש ב-production לפי טבלת המחירים הרגילה של המרפאה, בלי לעבוד יותר קשה. ההצטברות מתבטאת הכי ברור בחודשים 4 ו-5.
לוח זמנים ועלות יישום
- שרשרת BAA וסקירת סיכון HIPAA: 14-20 שעות
- תשתית AWS HIPAA-eligible, KMS, VPC, S3 Object Lock: 14-20 שעות
- חיבור PMS (Open Dental / Dentrix / Eaglesoft): 16-24 שעות
- אינטגרציית eligibility (Vyne / DentalXChange) + cache: 12-18 שעות
- Prompt של Claude + guardrails של deny-list + ולידציה: 18-26 שעות
- שליחה מולטי-ערוצית + שעות שקטות TCPA + טיפול ב-STOP: 14-20 שעות
- קביעת תור ב-SMS דו-כיווני + אינטגרציית NexHealth / LocalMed: 14-22 שעות
- יומן ביקורת ל-S3 + דוח ציות חודשי: 8-10 שעות
- שבוע 1: שרשרת BAA, סקירת סיכון HIPAA, חיבור PMS
- שבוע 2: אינטגרציית eligibility, הקמת Bedrock, ניסוח prompt
- שבוע 3: שליחה מולטי-ערוצית, SMS דו-כיווני, חיבור NexHealth
- שבוע 4: השקה רכה על קוהורט של 50 מטופלים, ביקורת, כיוון
- כולל: דוח ציות חודשי, כיוון prompt, סקירת KPI של ה-hygiene
שאלות נפוצות
human_handoff על כל תשובה שמזכירה כאב, נפיחות, דימום, שן שבורה, או כל דבר עם ניחוח דחיפות. תשובות כאלה לעולם לא עוברות בקביעת תור אוטומטית. הן נוחתות בערוץ סלאק (או מה שהמרפאה משתמשת בו פנימית) למזכירות לטריאז' בזמן אמת, כשהמטופל מקבל אישור SMS מהיר שאומר "קיבלנו את ההודעה שלך, מישהו מהמרפאה יחזור אליך תיכף". המערכת היא ל-recall שגרתי, לא לטריאז' קליני.Guarantor ב-Open Dental, מקבילים באחרים), וה-pipeline מכבד אותו. ילדים בוגרים עם מנוי משלהם מקבלים הודעה משלהם, ממוענת אליהם.רוצה שזה ייבנה למרפאה שלך?
SEOKRU פורסת בדיוק את מערכת ה-recall וההפעלה מחדש הזאת ב-4 שבועות, על תשתית AWS HIPAA-eligible עם שרשרת BAA חתומה. אנחנו מחברים את ה-PMS שלך, מחווטים את ה-eligibility ואת המסרים, מאמתים את ה-prompt מול דגימה אמיתית של הקוהורטים שלך, ומריצים את דוח הציות החודשי. אתם שומרים על הבעלות על כל רכיב (workflows, prompts, יומן ביקורת, הכל).
דבר עם מהנדס אוטומציה למרפאות שיניים

