كتالوج خدمات المستشفى - Services, Packages, Prices & Case Definitions
HospitalCatalog Module هو نظام شامل لإدارة كتالوج خدمات المستشفى. يوفر إدارة الخدمات الطبية، الباقات، الأسعار المتعددة، وتعريفات الحالات.
Path: Modules/HospitalCatalog/Entities/HospitalService.php
الوصف: الخدمات الطبية المتاحة في المستشفى
- id - location_id (FK: business_locations) - code (unique per location) - name (multilingual JSON) - description - category_id (FK: taxonomies) - service_type (consultation, procedure, test, etc.) - department_id (FK: departments) - duration_minutes - is_active - requires_appointment - requires_doctor - requires_equipment
consultation - استشارة طبيةprocedure - إجراء طبيtest - فحص مخبريimaging - أشعةsurgery - عملية جراحيةtherapy - علاج طبيعيaccommodation - إقامة (غرفة)location() → BusinessLocationcategory() → Taxonomydepartment() → Departmentprices() → ServicePrice (hasMany)packageItems() → PackageItem (hasMany)Path: Modules/HospitalCatalog/Entities/ServicePrice.php
الوصف: الأسعار المتعددة للخدمة (Multi-Tier Pricing)
- id - service_id (FK: hospital_services) - price_tier_id (FK: price_tiers) - price - cost (التكلفة الفعلية) - effective_from - effective_to - is_active
| Tier | الوصف | الاستخدام |
|---|---|---|
| Cash | السعر النقدي | المرضى الأفراد |
| Insurance | سعر التأمين | شركات التأمين |
| VIP | السعر المميز | غرف VIP |
| Corporate | سعر الشركات | عقود مؤسسات |
Path: Modules/HospitalCatalog/Entities/ServicePackage.php
الوصف: حزم الخدمات (مجموعة خدمات بسعر مخفض)
- id - location_id - code - name - description - package_type (checkup, surgery, maternity, etc.) - total_price - discounted_price - valid_from - valid_to - max_uses_per_patient - is_active
items() → PackageItem (hasMany)prices() → PackagePrice (hasMany)Path: Modules/HospitalCatalog/Entities/PackageItem.php
الوصف: الخدمات المكونة للباقة
- id - package_id (FK: service_packages) - service_id (FK: hospital_services) - quantity - unit_price - discount_percent - is_optional
// باقة فحص شامل
$package = ServicePackage::create([
'name' => 'Comprehensive Checkup',
'total_price' => 1000,
'discounted_price' => 750
]);
// الخدمات المكونة
$package->items()->createMany([
['service_id' => 1, 'quantity' => 1], // استشارة
['service_id' => 5, 'quantity' => 1], // CBC
['service_id' => 8, 'quantity' => 1], // أشعة صدر
['service_id' => 12, 'quantity' => 1], // ECG
]);
Path: Modules/HospitalCatalog/Entities/CaseDefinition.php
الوصف: تعريفات الحالات الطبية (Clinical Pathways)
- id - code - name - icd_code (ICD-10 code) - description - case_type (inpatient, outpatient, emergency) - expected_duration_days - standard_services (JSON array of service IDs) - is_active
تُستخدم لتحديد المسار العلاجي القياسي لحالة معينة، مثل:
/api/hospital-catalog
/services
قائمة الخدمات الطبية
search - البحث في الاسم/الكودcategory_id - فلترة حسب الفئةservice_type - نوع الخدمةdepartment_id - القسمinclude - category,department,prices/services
إنشاء خدمة جديدة
{
"code": "CONS-001",
"name": {
"ar": "استشارة باطنة",
"en": "Internal Medicine Consultation"
},
"service_type": "consultation",
"category_id": 1,
"department_id": 5,
"duration_minutes": 30,
"requires_appointment": true,
"requires_doctor": true
}
/services/{id}
تفاصيل خدمة محددة
/services/{id}
تحديث خدمة
/services/{id}/prices
أسعار خدمة محددة
{
"service_id": 1,
"service_name": "استشارة باطنة",
"prices": [
{
"tier": "Cash",
"price": 200.00,
"is_active": true
},
{
"tier": "Insurance",
"price": 250.00,
"is_active": true
},
{
"tier": "VIP",
"price": 350.00,
"is_active": true
}
]
}
/services/{id}/prices
إضافة/تحديث سعر
{
"price_tier_id": 1,
"price": 200.00,
"cost": 80.00,
"effective_from": "2025-01-01"
}
/services/{id}/price
السعر الحالي حسب Price Tier
tier_id - (required) معرف الـ Tierdate - التاريخ (default: اليوم)/packages
قائمة الباقات
package_type - نوع الباقةis_active - الحالةinclude - items,prices/packages
إنشاء باقة جديدة
{
"code": "PKG-CHECKUP-001",
"name": {
"ar": "فحص شامل",
"en": "Comprehensive Checkup"
},
"package_type": "checkup",
"total_price": 1000.00,
"discounted_price": 750.00,
"valid_from": "2025-01-01",
"valid_to": "2025-12-31",
"items": [
{
"service_id": 1,
"quantity": 1
},
{
"service_id": 5,
"quantity": 1
}
]
}
/packages/{id}
تفاصيل باقة محددة
/case-definitions
قائمة تعريفات الحالات
case_type - نوع الحالةicd_code - كود ICD-10/case-definitions/{id}/services
الخدمات القياسية للحالة
{
"case_definition": {
"code": "NORMAL-DELIVERY",
"name": "Normal Delivery",
"expected_duration_days": 2
},
"standard_services": [
{
"service_id": 1,
"name": "Admission",
"timing": "day_0"
},
{
"service_id": 10,
"name": "Delivery Room",
"timing": "day_0"
},
{
"service_id": 15,
"name": "Room (2 nights)",
"timing": "day_0-2"
}
],
"estimated_cost": 5000.00
}
التكامل مع Revenue Module لإصدار الفواتير:
// إنشاء فاتورة من خدمات
use Modules\Revenue\Entities\Invoice;
use Modules\HospitalCatalog\Entities\HospitalService;
$service = HospitalService::find(1);
$price = $service->getPriceForTier($tierIdش);
$invoice = Invoice::create([
'patient_id' => $patientId,
'encounter_id' => $encounterId,
// ...
]);
$invoice->lines()->create([
'service_id' => $service->id,
'description' => $service->name,
'quantity' => 1,
'unit_price' => $price->price,
'total' => $price->price
]);
ربط الخدمات مع Encounters والـ Admissions:
// إضافة خدمات للـ Encounter
$encounter = CareEncounter::find($id);
$encounter->services()->create([
'service_id' => 1,
'quantity' => 1,
'price_tier_id' => 1,
'status' => 'pending'
]);
// عند تأكيد الخدمة - إنشاء فاتورة
$encounter->confirmServices();
effective_from/to للأسعار لتتبع التغييراتservice_type للتصنيف والفلترةis_active = false