Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClinicFlow — منصة إدارة العيادات

نظام إدارة عيادات بالعربي، بيشتغل في المتصفح على طول من غير سيرفر ولا تنصيب ولا اشتراك.

اللي بيعمله

الصفحة اللي فيها
لوحة التحكم مواعيد النهاردة، عدد المرضى، المحصّل والمستحقات، رسم بياني لآخر ٧ أيام
المواعيد حجز وتعديل المواعيد، تنقّل بين الأيام، تغيير الحالة، طباعة جدول اليوم
المرضى ملف كامل لكل مريض: بياناته، مواعيده، سجله الطبي، مستحقاته — وطباعة الملف
السجلات الطبية الأعراض والتشخيص والروشتة لكل زيارة + طباعة روشتة جاهزة بتوقيع الطبيب
الأطباء التخصصات وأسعار الكشف ومواعيد العمل
الفواتير فاتورة ببنود متعددة، خصم، دفع جزئي، وطباعة الفاتورة
التقارير ملخص أي فترة: المواعيد حسب الطبيب، أكتر التشخيصات، الملخص المالي
الإعدادات بيانات العيادة، الخدمات والأسعار، النسخ الاحتياطية

كمان: وضع ليلي، تصميم شغال على الموبايل، ومنع تلقائي لحجز نفس الطبيب في نفس التوقيت مرتين.

التشغيل

الملفات دي HTML و CSS و JavaScript عادية — مفيش build ولا npm install.

أسهل طريقة: افتح clinicflow-standalone.html بدبل كليك. ده المشروع كله مدموج في ملف واحد، بيشتغل من غير سيرفر ولا نت.

للتطوير (نسخة الملفات المنفصلة): لازم سيرفر بسيط، عشان المتصفح بيمنع الـ modules من الملفات المحلية:

python3 -m http.server 8000
# افتح http://localhost:8000

بعد أي تعديل، اعمل node build-standalone.mjs عشان تحدّث ملف النسخة الواحدة.

على الإنترنت مجانًا (GitHub Pages): Settings → Pages → Deploy from a branch → main + / (root) → Save.

البيانات — اقرا ده كويس

البيانات محفوظة في IndexedDB جوه متصفح الجهاز اللي شغال عليه، ومش بتروح لأي سيرفر. يعني:

  • ✅ سريعة، مجانية، وبتشتغل من غير نت
  • ✅ مفيش بيانات مرضى بتخرج بره الجهاز
  • ⚠️ البيانات على الجهاز ده بس — مش هتلاقيها على جهاز تاني أو متصفح تاني
  • ⚠️ لو مسحت بيانات المتصفح، البيانات بتتمسح معاها

علشان كده: نزّل نسخة احتياطية من صفحة الإعدادات بشكل دوري (زرار "نزّل نسخة احتياطية"). الملف بيتحفظ JSON وتقدر ترجّعه في أي وقت أو على أي جهاز.

أول ما تفتح التطبيق لأول مرة بيتحط فيه بيانات تجريبية (٤ مرضى و٣ أطباء ومواعيد) عشان تشوف شكله. امسحها كلها من الإعدادات ← "امسح كل البيانات" لما تجهز تستخدمه فعليًا.

تصدير PDF

مفيش زرار "تصدير PDF" منفصل — بدل كده كل التقارير والروشتات والفواتير فيها زرار طباعة، ومن نافذة الطباعة تختار "حفظ كـ PDF" (Save as PDF) كطابعة.

الطريقة دي مقصودة: مكتبات الـ PDF الجاهزة بتتعامل مع العربي والكتابة من اليمين لليسار بشكل سيء (حروف مقطّعة ومقلوبة)، بينما المتصفح بيرسم العربي صح ١٠٠٪.

شكل الكود

├── index.html                   هيكل الصفحة
├── clinicflow-standalone.html   المشروع كله في ملف واحد (مولّد آليًا)
├── build-standalone.mjs         بيولّد الملف الواحد
├── test.mjs                     ٢٢ اختبار في متصفح حقيقي
├── css/styles.css               التصميم (فاتح/ليلي + تنسيقات الطباعة)
└── js/
    ├── db.js           ← طبقة التخزين (IndexedDB) — الملف الوحيد اللي بيلمس الداتابيز
    ├── store.js        منطق الكيانات والعلاقات والتحقق من البيانات
    ├── ui.js           نوافذ، تنبيهات، تنسيق التواريخ والفلوس، الطباعة
    ├── app.js          التوجيه بين الصفحات
    ├── seed.js         البيانات التجريبية
    └── pages/          صفحة لكل قسم

التطوير الجاي: التحويل لداتابيز حقيقية

لو احتجت أكتر من مستخدم يشتغلوا على نفس البيانات (دكتور + سكرتارية + أجهزة مختلفة)، الحل هو داتابيز على الإنترنت زي Supabase (باقة مجانية كفاية للبداية).

الكود متعمل مخصوص عشان ده يبقى سهل: js/db.js هو الملف الوحيد اللي بيتكلم مع التخزين. باقي المشروع كله بيستخدم الدوال اللي بيصدّرها (all وget وput وremove وwhere …). فالتحويل معناه إعادة كتابة db.js وحده بحيث ينادي Supabase بدل IndexedDB — من غير ما تلمس أي صفحة تانية.

الترخيص

استخدمه زي ما إنت عايز.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages