دراسة حالة · SHCA Health Providers

بناء SaaS متوافق مع HIPAA لإدارة المرضى في منشآت متعددة لمجموعة رعاية كبار السن في الولايات المتحدة — Next.js + Django + PostgreSQL على AWS

كيف استبدلت UnlockLive خليطاً من جداول البيانات والملاحظات الورقية وأدوات السجلات الطبية الإلكترونية المتفرقة في 5 مرافق لرعاية كبار السن بمنصة واحدة متعددة المستأجرين متوافقة مع HIPAA مبنية على Next.js + Django + PostgreSQL على AWS — مع خفض زمن تدوين الملاحظات السريرية بنسبة 70%، وتسريع الاستقبال ثلاث مرات، ومنح المشغّل مصدراً واحداً للحقيقة جاهزاً للتدقيق منذ اليوم الأول.

  • القطاعالرعاية الصحية / SaaS لرعاية كبار السن
  • السنة2024
  • البلدالولايات المتحدة
  • المدة6 أشهر
Building a HIPAA-Aligned Multi-Facility Patient Management SaaS for a US Senior-Care Group — Next.js + Django + PostgreSQL on AWS hero screenshot

النتائج في لمحة

  • 70%انخفاض في متوسط وقت إعداد الملاحظات السريرية (18+ دقيقة → أقل من 5)
  • 3xاستقبال أسرع للمرضى في جميع المنشآت الخمس
  • 100%جاهزية للتدقيق: كل قراءة/كتابة/تصدير مسجل في سجل للإلحاق فقط
  • 5منشآت رعاية كبار السن تعمل منذ اليوم الأول للإطلاق

التحدي

كانت SHCA تدير عشرات مرافق رعاية كبار السن بمزيج من جداول Excel وملاحظات المناوبات الورقية وثلاث أدوات منفصلة بنمط السجلات الطبية الإلكترونية — دون مصدر واحد للحقيقة عن أي مريض. كانت الممرضات يعدن إدخال التحديثات في الأنظمة كل مناوبة، ولم يكن لدى العائلات أي رؤية، ولم يكن لدى المسؤولين طريقة لإثبات من اطلع على ماذا، وكان إدخال مرفق جديد يعني إعادة إنشاء قالب Excel الهش نفسه من جديد.

كان المطلوب صارماً: تسليم منصة SaaS لإدارة المرضى متعددة المرافق ومتوافقة مع HIPAA، يستطيع أي ممرض أو طبيب أو مسؤول أو فرد من العائلة تسجيل الدخول إليها بأمان من اليوم الأول — مع ملاحظات سريرية قائمة على القوالب، ووصول إلى السجلات مقيّد بالأدوار، ومسارات تدقيق كاملة، وإمكانية إدخال مرفق جديد خلال دقائق بدلاً من أسابيع. وأي أقل من «سجل واحد، وسجل أحداث واحد، ومصدر واحد للحقيقة» كان سيسلّم مشكلة التشتت نفسها بثوب أجمل.

حلّنا

بنينا منصة SaaS متعددة المستأجرين بـ Next.js + Django + PostgreSQL مستضافة على AWS، حيث يعيش كل مريض في سجل واحد بالضبط، وكل إجراء قابل للمراقبة والتدقيق ومقيّد بالأدوار.

يوفّر الجزء الخلفي المبني على Django واجهة API من Django REST Framework بحدود صارمة بين المستأجرين — تتم تصفية كل استعلام بحسب `facility_id` على مستوى ORM، بحيث لا تستطيع ممرضة من المنشأة A فعليًا تنفيذ SELECT لمريض من المنشأة B حتى مع رابط URL مزوّر. تربط المصادقة القائمة على JWT أربعة أدوار (طبيب، ممرض، مسؤول، أسرة) بأذونات على مستوى كل نقطة نهاية وكل حقل، ويسجّل سجل 'audit_event' الوحيد القابل للإلحاق فقط كل عملية قراءة وكتابة وتصدير مع `(user_id, role, facility_id, patient_id, action, timestamp, ip)`، بحيث يمكن إنتاج تدقيق متوافق مع HIPAA لأي مريض وعلى أي نطاق زمني في ثوانٍ.

الملاحظات السريرية — أعلى مهام سير العمل قيمةً في المنتج — قائمة على القوالب. فبدلًا من كتابة ملاحظة SOAP حرة مدتها 20 دقيقة، تختار الممرضة قالبًا وتملأ التغييرات فقط، ويقوم النظام بتسلسل ملاحظة منظّمة مع ملخص مقروء للبشر. وتخفّض حقول الإدخال النصي الداعمة للصوت، والحفظ التلقائي كل 5 ثوانٍ، ولقطات الأدوية والعلامات الحيوية القابلة للإرفاق متوسط زمن الملاحظة من أكثر من 18 دقيقة إلى أقل من 5.

تقدّم الواجهة الأمامية المبنية على Next.js تجربة مستخدم واحدة على نمط SPA لكل دور، مع تنقّل يراعي الدور، وتحديثات تفاؤلية لبيانات المرضى، ومبدّل منشآت داخلي للمسؤولين الذين يديرون عدة مواقع. ويحصل أفراد الأسرة على بوابة محددة النطاق بدقة — فلا يرون إلا المريض المرتبطين به، ولا يرون إلا الحقول التي وافق الطبيب على مشاركتها.

على صعيد البنية التحتية: PostgreSQL على RDS مع استرداد تلقائي إلى نقطة زمنية محددة، وS3 مع مرفقات مشفّرة بـ KMS وروابط موقّعة محدودة المدة (دون روابط S3 خام متاحة علنًا)، وCloudWatch وSentry على كل نقطة نهاية، وتحقق تلقائي ليلي من النسخ الاحتياطية، والبنية كشيفرة بحيث يمكن تشغيل منطقة ثانية دون فتح تذاكر لدى فريق السحابة.

  • سجلات مرضى متعددة المستأجرين مع حدود صارمة لـ `facility_id` مفروضة على مستوى Django ORM (الوصول بين المنشآت مستحيل، لا مجرد غير مرجّح)
  • وصول محدد بحسب الدور للطبيب والممرض والمسؤول والأسرة — مضبوط على مستوى نقطة النهاية والحقل معًا
  • ملاحظات سريرية قائمة على القوالب مع حفظ تلقائي، وعلامات حيوية/أدوية قابلة للإرفاق، وملخص مقروء للبشر يُخزَّن بجانب JSON المنظّم
  • سجل `audit_event` للإلحاق فقط لكل عملية قراءة وكتابة وتصدير، قابل للاستعلام لكل مريض على أي نطاق زمني — متوافق مع HIPAA مباشرةً
  • بوابة للأسرة مع مشاركة على مستوى الحقول بموافقة الطبيب، ومرفقات بروابط موقّعة محدودة المدة، ونطاق وصول محدد لكل مريض
  • لوحة إدارة متعددة المنشآت: إضافة منشأة جديدة وتهيئة الأدوار وإعادة تعيين المرضى دون أي تغيير في الشيفرة
  • بنية تحتية معزَّزة على AWS: استرداد إلى نقطة زمنية في RDS، وتشفير S3 + KMS، وCloudWatch + Sentry، وتحقق ليلي من النسخ الاحتياطية، والبنية كشيفرة

كيف بنيناه

  1. 01

    الاستكشاف ونموذج التهديدات وتصميم بيانات المنشآت المتعددة

    بدأنا بمرافقة الممرضين خلال مناوبة فعلية ورسم كل نقطة يتدفق فيها بيانات المرضى: الورق، وExcel، والسجل الطبي الإلكتروني (EMR)، ومجموعات الدردشة، والفاكس. ومن ذلك أجرينا نمذجة تهديدات وفق HIPAA لأربعة أنماط فشل هي الأعلى خطورة: التسرب بين المنشآت، والتصدير غير المتتبَّع، والإفراط في مشاركة البيانات مع الأسرة، وروابط المرفقات غير الموقّعة. ونتج عن ذلك ثلاث ركائز معمارية يقوم عليها بقية البناء: استعلامات محصورة بنطاق كل مستأجر (tenant) تُفرض على طبقة ORM، وسجل audit_event للإضافة فقط يوثّق كل إجراء، وروابط S3 موقّعة دون أي وصول مباشر إلى الكائنات.

  2. 02

    Django REST API + نموذج بيانات متعدد المستأجرين على PostgreSQL

    صمّمنا المنشآت والمرضى والأدوار والملاحظات السريرية في مخطط PostgreSQL واحد مع حد صارم `facility_id` مدمج في كل QuerySet عبر مدير محصور بنطاق المستأجر. وتتحكم الأدوار (طبيب، ممرض، مسؤول، أسرة) في نقاط النهاية والحقول معًا — فلا يستطيع مستخدم من الأسرة حتى رؤية أن حقل «medications» موجود في الاستجابة ما لم يفعّل الطبيب خيار المشاركة. والملاحظات السريرية قائمة على القوالب ومخزّنة بصيغة JSON منظّمة مع ملخص بشري مُنسَّق، فتبقى التقارير والتصدير نظيفة.

  3. 03

    تجربة مستخدم تطبيق Next.js أحادي الصفحة، وتنقل واعٍ بالأدوار، وبوابة العائلات

    سلّمنا تطبيق Next.js SPA واحدًا يغيّر واجهته حسب الدور عند تسجيل الدخول: تشاهد الممرضة قائمة المناوبة وتدفق الملاحظات السريعة، ويشاهد المسؤول مبدّل المنشآت والبحث في سجل التدقيق، ويشاهد أحد أفراد الأسرة مريضه المرتبط فقط مع المجموعة الفرعية من الحقول التي اعتمدها الطبيب. وبفضل التحديثات المتفائلة والحفظ التلقائي لمسودات الملاحظات ومنتقي القوالب السهل، انخفض تدفق «إضافة ملاحظة» عالي التكرار من أكثر من 18 دقيقة إلى أقل من 5.

  4. 04

    تحصين AWS والتدقيق والمراقبة والتسليم

    نشرنا المنصة على AWS (EC2 + RDS PostgreSQL + S3 + KMS) مع CloudWatch + Sentry على كل نقطة نهاية، وتحقق ليلي من النسخ الاحتياطية، والبنية التحتية ككود. وتُسجَّل كل عملية قراءة وكتابة وتصدير في سجل audit_event للإضافة فقط، بحيث يمكن تزويد المدقق بتقرير نشاط لكل مريض في ثوانٍ. وسلّمنا المشغّل دليل تشغيل لتأهيل المنشآت وتهيئة الأدوار والاستجابة للحوادث، وبقينا معه بعقد دعم شهري للتحسينات.

حزمة التقنيات

  • Next.js (React)
  • Django
  • Django REST Framework
  • PostgreSQL
  • Celery + Redis (المهام في الخلفية)
  • AWS (EC2, RDS, S3, CloudWatch)
  • AWS KMS (التشفير أثناء التخزين)
  • وصول قائم على الأدوار عبر Auth0 / JWT
  • Sentry + CloudWatch (المراقبة)
  • Docker
  • تطوير البرمجيات المخصصة
  • هندسة SaaS للرعاية الصحية
  • تصميم UI/UX
  • هندسة السحابة
  • DevOps والمراقبة
  • الأمن السيبراني
“كان لدينا مشروع كبير ومعقد يتطلب تواصل عدة قواعد بيانات مع بعضها. طرح فريق UnlockLive الأسئلة الصحيحة، وحافظ على صدق الجدول الزمني، وسلّم حلًا يستخدمه موظفونا السريريون فعلًا كل يوم.”
Sofia Abdelkafi · استشاري الصحة والعافية

الأسئلة الشائعة

كيف تبنون SaaS رعاية صحية متعدد المستأجرين دون تسريب بيانات المرضى بين المنشآت؟

نفرض حدود المستأجر (tenant) على مستوى Django ORM وليس في معالجات المسارات. فكل نموذج يتعامل مع PHI تتقدمه واجهة QuerySet مقيّدة بالمستأجر تصفّي حسب `facility_id` من JWT قبل تطبيق أي عامل تصفية آخر. والنتيجة: لا يمكن لرابط مزوّر أو شرط `if` منسي في عرض أو خلل في المسلسِل (serializer) أن يُرجع سجلات من منشأة أخرى، لأن استعلام SQL الذي تراه قاعدة البيانات مصفّى مسبقًا. كما نقرن ذلك بصلاحيات على مستوى الحقول بحيث لا يستطيع أحد أفراد الأسرة أن يعرف أصلًا بوجود حقل حساس في الاستجابة.

هل منصة SHCA متوافقة مع HIPAA؟

صمّمنا التطبيق بضوابط متوافقة مع HIPAA: وصول مقيّد بالأدوار، وتشفير أثناء التخزين (RDS + S3 + KMS) وأثناء النقل (TLS 1.2+)، وسجل `audit_event` للإضافة فقط لكل عملية قراءة أو كتابة أو تصدير لـ PHI، وروابط موقّعة محددة المدة لكل مرفق، وتحقق ليلي من النسخ الاحتياطية. إن الامتثال لـ HIPAA هو في نهاية المطاف اتفاقية شريك أعمال (BAA) وبرنامج مؤسسي يديره المشغّل، لكن المنصة بُنيت بحيث يمكن الرد على تدقيق HIPAA باستعلام لا بإعادة هيكلة.

كم استغرق بناء SHCA، وكيف نُظّم الجدول الزمني؟

ستة أشهر من البداية إلى النهاية. بشكل تقريبي: 3 أسابيع للاستكشاف ونمذجة التهديدات وتصميم البيانات؛ و14 أسبوعًا لبناء Django REST API + Next.js SPA بسباقات (sprints) مدتها أسبوعان واختبارات آلية على كل PR ومراجعة أمنية قبل الانتقال إلى الإنتاج؛ و4 أسابيع لتحصين AWS والمراقبة وسجل التدقيق وتدريب الأطباء؛ و4 أسابيع للتجربة في منشأة واحدة، يليها إطلاق في الأسبوع نفسه في المنشآت الأربع المتبقية.

ما الحزمة التقنية التي تشغّل منصة إدارة المرضى SHCA؟

واجهة أمامية Next.js (React) SPA، وواجهة API بـ Django + Django REST Framework، وPostgreSQL على Amazon RDS، وS3 + KMS للمرفقات المشفرة، وCelery + Redis للمهام الخلفية، ومصادقة قائمة على JWT مع صلاحيات أدوار لكل نقطة نهاية ولكل حقل، وCloudWatch + Sentry للمراقبة، وكل ذلك في حاويات Docker ومنشور عبر البنية التحتية ككود على AWS.

هل يمكن للمنصة التوسع إلى عشرات المنشآت أو إعادة تغيير هويتها لمشغّل آخر لرعاية كبار السن؟

نعم، فنموذج البيانات ونظام الصلاحيات مستقلان عن المنشأة بالتصميم. إضافة منشأة جديدة إجراء إداري وليست تغييرًا في الكود؛ ويمكن لمشغّل جديد تغيير هوية الواجهة الأمامية وإعادة استخدام الواجهة الخلفية متعددة المستأجرين نفسها. ويمكن إعادة استخدام البنية نفسها (حدّ `facility_id` + سجل audit_event + مرفقات بروابط موقّعة) في أي SaaS متعدد المستأجرين قريب من HIPAA، مثل العيادات ومجموعات الصحة السلوكية ووكالات الرعاية المنزلية وما شابهها.

هل تريد نتيجة كهذه؟

تحدّث إلى الفريق نفسه الذي بنى بناء SaaS متوافق مع HIPAA لإدارة المرضى في منشآت متعددة لمجموعة رعاية كبار السن في الولايات المتحدة — Next.js + Django + PostgreSQL على AWS. سنحدد نطاق مشروعك، ونقدّم لك عرضًا بسعر ثابت، ونُريك أقرب مثال من أعمالنا.

احجز مكالمة استراتيجية