מטופל קבע תור ליום שלישי הבא ושכח. הרופא ממתין, והמשבצת תפוסה — למעשה אבודה. לפי סטטיסטיקות המרפאה, 15–25% מההזמנות אינן מתייצבות ללא תזכורות. אנו מפתחים אפליקציות מובייל עם תזכורות הניתנות להתאמה אישית שמפחיתות את אי-ההתייצבות ל-5–8% — פי 3–4 יותר יעיל מקמפיינים של SMS. העלות הממוצעת של משבצת ריקה למרפאה היא 15–30 דולר. הפחתת אי-ההתייצבות מ-20% ל-5% בקרב 50 רופאים חוסכת עד 4,000–5,800 דולר בחודש. הפתרון שלנו כולל התראות push, תמיכה במיקום גיאוגרפי ושילוב לוח שנה, עם אישורים וניסיון של 5+ שנים בלמעלה מ-20 פרויקטים בתחום הבריאות. לפי מחקר בכתב העת Journal of Medical Internet Research, תזכורות משולבות מפחיתות אי-התייצבות ב-40%. קבלו ייעוץ לפרויקט שלכם — נעזור לכם לבחור את הארכיטקטורה האופטימלית.
למה מערכת תזכורות היא הבסיס להצלחה
שלוש תזכורות חובה לכל הזמנה:
- 24 שעות מראש — "תזכורת: תור עם ד"ר [שם] מחר בשעה 14:30"
- שעתיים מראש — "התור שלך ב[מרפאה], חדר 215 בעוד שעתיים"
- בזמן היציאה — מחושב על סמך המיקום הגיאוגרפי של המשתמש וכתובת המרפאה באמצעות Google Maps Distance Matrix API או 2GIS API
הסוג השלישי הוא בעל הערך הרב ביותר והנדיר ביותר ביישום. ההיגיון: בלילה שלפני התור, מתזמן השרת מבקש את המיקום הנוכחי של המשתמש (אם PERMISSION_BACKGROUND_LOCATION הוענק) או את המיקום הידוע האחרון, מחשב את זמן הנסיעה ומתזמן התראת push ב-appointment_time - travel_time - 15 min.
ב-iOS, נדרש תיאור שימוש ב-Background Location בתוך Info.plist ו-NSLocationAlwaysAndWhenInUseUsageDescription. אפל בוחנת בקפידה את ההצדקה במהלך האישור — עליכם להסביר בבירור את התועלת.
מידע נוסף על הרשאת מיקום ברקע
אפל דורשת סיבה מפורשת ב-Info.plist. לדוגמה: "האפליקציה משתמשת במיקומך ברקע כדי לחשב את זמן הנסיעה לתור ולשלוח תזכורת בזמן." ללא זאת, ה-App Store ידחה את הבנייה.
אישור וביטול ישירות מהתראת ה-push באמצעות UNNotificationAction:
let confirmAction = UNNotificationAction(
identifier: "CONFIRM_ACTION",
title: "Подтвердить ✓",
options: []
)
let cancelAction = UNNotificationAction(
identifier: "CANCEL_ACTION",
title: "Отменить запись",
options: [.destructive]
)הקשה על "ביטול" ללא פתיחת האפליקציה קוראת ל-API, משחררת את המשבצת ומודיעה למרפאה.
לוח הזמנים של הרופא: יישום טכני
רשת לוח הזמנים היא הרכיב המורכב ביותר בצד השרת. לכל רופא יש:
- לוח בסיסי (שני 9:00–13:00, רביעי 14:00–18:00)
- חריגים (חופשות, מחלה, החלפות)
- משך משבצת (15, 20, 30 דקות — תלוי בהתמחות)
- מספר הזמנות למשבצת (בדרך כלל 1, אך ייתכנו מפגשים קבוצתיים)
יצירת משבצות פנויות לרופא ספציפי בטווח תאריכים: קחו את הלוח הבסיסי, הפחיתו חריגים ומשבצות שכבר הוזמנו. שאילתת PostgreSQL עם JOIN על טבלאות ההזמנות והחריגים, ושמרו את התוצאה במטמון Redis למשך 5 דקות.
להזמנה בו-זמנית של אותה משבצת על ידי שני משתמשים (תנאי מרוץ), אנו משתמשים בעסקה עם נעילת שורות ברמת PostgreSQL (let confirmAction = UNNotificationAction( identifier: "CONFIRM_ACTION", title: "Подтвердить ✓", options: [] ) let cancelAction = UNNotificationAction( identifier: "CANCEL_ACTION", title: "Отменить запись", options: [.destructive] ) ) על שורת המשבצת. המשתמש הראשון מקבל אישור; השני רואה "המשבצת הזו כבר תפוסה, אנא בחרו זמן אחר."
איך ליישם בחירת זמן טכנית?
שלבי היישום:
- טעינת רשימת הרופאים והלוחות הבסיסיים שלהם.
- עבור הרופא הנבחר, בקשת משבצות פנויות ל-7 הימים הבאים.
- הצגת לוח שנה עם ימים זמינים (
SELECT FOR UPDATEב-Flutter). - כאשר נבחר יום, הצגת רשימה אופקית של כפתורי זמן עם משבצות פנויות.
- משבצות לא זמינות מוצגות באפור, לא מוסתרות — המשתמש רואה את צפיפות לוח הזמנים.
- הצגה מיידית של הזמן הפנוי הקרוב ביותר בראש — מפחיתה את הזמן עד להקשה הראשונה.
- כאשר נבחרת משבצת — ביצוע עם ממשק משתמש אופטימי ובקשת API.
רשומות רפואיות והיסטוריה
היסטוריית ביקורים, סיכומי שחרור, תוצאות בדיקות — דורשות תשומת לב מיוחדת לאבטחת מידע. ברוסיה, זה כולל עמידה ב-152-FZ ובתקנות משרד הבריאות לאחסון נתונים רפואיים.
מסמכים מאוחסנים ב-S3 מוצפן (AES-256), נגישים רק דרך השרת עם אימות הרשאות, וקישורים נחתמים מראש עם TTL של 15 דקות. מסמכים אינם נשמרים במטמון במכשיר הלקוח.
התראות לרופאים ולקבלה
הרופא מקבל התראות push בטאבלט/טלפון שלו:
- "הזמנה חדשה בשעה [זמן]" — עם היסטוריה קצרה אם המטופל מילא אותה
- "המטופל אישר את התור"
- "המטופל ביטל שעתיים לפני התור" — משחרר את המשבצת
הקבלה רואה את רשימת ההזמנות היומית בלוח מחוונים אינטרנטי (React + WebSocket לעדכונים חיים).
טכנולוגיות ולוחות זמנים
| רכיב | טכנולוגיה |
|---|---|
| מובייל | Flutter (iOS + Android) |
| שרת | Node.js/Go + PostgreSQL |
| Push | FCM + APNs |
| מפות | Yandex Maps SDK / Google Maps |
| מסמכים | S3 תואם + מוצפן |
| היקף | זמן |
|---|---|
| MVP: הזמנות, תזכורות, היסטוריה | 8–12 שבועות |
| + טלרפואה (ייעוצי וידאו) | +6–8 שבועות |
| + שילוב MIS (1С:Медицина וכו') | +4–8 שבועות |
מה כלול בעבודה
- ניתוח דרישות עסקיות ועיצוב ארכיטקטורה
- פיתוח צד לקוח (iOS + Android) על בסיס קוד יחיד ב-Flutter
- יישום שירות שרת עם PostgreSQL ו-Redis
- הגדרת התראות push (FCM/APNs) ושילוב מפות
- תיעוד והוראות למנהלים
- הגשה ל-App Store ול-Google Play עם תמיכה מלאה
- תמיכה באחריות ל-3 חודשים
קבלו ייעוץ לפרויקט שלכם — נכין הצעה עם לוחות זמנים ועלויות מדויקים המותאמים לפרטים שלכם.







