قاموس الأدوية المسجلة لدى SFDA - SFDA Registered Drug Reference
DrugCatalog Module هو مرجع معتمد للأدوية المسجلة لدى الهيئة السعودية للدواء والغذاء (SFDA). يوفر قاعدة بيانات شاملة للأدوية مع معلومات الشركات المصنعة، أشكال الجرعات، وطرق الإعطاء.
Path: Modules/DrugCatalog/Entities/Drug.php
الوصف: الكيان الأساسي للدواء مع جميع المعلومات الطبية
- id - trade_name (اسم العلامة التجارية) - generic_name (الاسم العام) - scientific_name (الاسم العلمي) - strength (قوة الدواء - مثل: 500mg) - sfda_registration_number (رقم التسجيل - فريد) - atc_code (رمز ATC الدولي) - barcode - manufacturer_id (FK: manufacturers) - dosage_form_id (FK: dosage_forms) - route_id (FK: routes) - therapeutic_class_id (FK: therapeutic_classes) - is_controlled (boolean) - is_narcotic (boolean) - is_refrigerated (boolean) - is_active
manufacturer() → ManufacturerdosageForm() → DosageFormroute() → RoutetherapeuticClass() → TherapeuticClassinventoryProducts() → InventoryProduct (belongsToMany)Path: Modules/DrugCatalog/Entities/Manufacturer.php
الوصف: الشركات المصنعة للأدوية
- id - name (اسم الشركة) - name_ar (الاسم بالعربية) - country_id (FK: countries) - website - email - phone - is_local (boolean - شركة محلية؟) - is_active
country() → Country (من Geo Module)drugs() → Drug (hasMany)Path: Modules/DrugCatalog/Entities/DosageForm.php
الوصف: أشكال الجرعات (Tablet, Capsule, Syrup, etc.)
- id - name (اسم الشكل) - name_ar (الاسم بالعربية) - code (رمز قياسي) - description - is_solid (boolean) - is_liquid (boolean) - is_injectable (boolean) - is_active
Path: Modules/DrugCatalog/Entities/Route.php
الوصف: طرق الإعطاء (Oral, IV, IM, etc.)
- id - name (اسم الطريقة) - name_ar (الاسم بالعربية) - code (رمز قياسي) - description - is_active
Path: Modules/DrugCatalog/Entities/TherapeuticClass.php
الوصف: التصنيف العلاجي للأدوية
- id - name (اسم التصنيف) - name_ar (الاسم بالعربية) - code (رمز التصنيف) - description - parent_id (FK: self - hierarchical) - is_active
/api/drug-catalog
/drugs
قائمة الأدوية مع pagination و filtering
search - البحث في الاسم/الاسم العامmanufacturer_id - فلترة حسب الشركة المصنعةdosage_form_id - فلترة حسب شكل الجرعةroute_id - فلترة حسب طريقة الإعطاءtherapeutic_class_id - فلترة حسب التصنيف العلاجيis_controlled - الأدوية المراقبة فقطis_narcotic - المخدرات فقطinclude - manufacturer,dosageForm,route,therapeuticClass{
"data": [
{
"id": 1,
"trade_name": "Panadol",
"generic_name": "Paracetamol",
"strength": "500mg",
"sfda_registration_number": "SFDA-123456",
"manufacturer": {
"id": 1,
"name": "GSK",
"country": "UK"
},
"dosage_form": {
"id": 1,
"name": "Tablet"
},
"is_controlled": false,
"is_active": true
}
],
"meta": {
"current_page": 1,
"total": 500
}
}
/drugs/{id}
تفاصيل دواء محدد
include - manufacturer,dosageForm,route,therapeuticClass/drugs/search
بحث متقدم في الأدوية
q - البحث في جميع الحقولby_barcode - البحث بالباركودby_atc - البحث برمز ATCby_sfda - البحث برقم SFDA/manufacturers
قائمة الشركات المصنعة
search - البحث في الاسمcountry_id - فلترة حسب الدولةis_local - الشركات المحلية فقطinclude - country,drugs/manufacturers/{id}
تفاصيل شركة محددة
/manufacturers/{id}/drugs
جميع أدوية شركة معينة
/dosage-forms
قائمة أشكال الجرعات
/dosage-forms/{id}
تفاصيل شكل جرعة محدد
/routes
قائمة طرق الإعطاء
/routes/{id}
تفاصيل طريقة إعطاء محددة
/therapeutic-classes
قائمة التصنيفات العلاجية
/therapeutic-classes/{id}
تفاصيل تصنيف علاجي محدد
جميع Entities في DrugCatalog محمية من التعديل/الحذف من خلال Policies:
// DrugPolicy.php
public function create(User $user): bool
{
return false; // لا يمكن إنشاء أدوية من API
}
public function update(User $user, Drug $drug): bool
{
return false; // لا يمكن تعديل الأدوية
}
public function delete(User $user, Drug $drug): bool
{
return false; // لا يمكن حذف الأدوية
}
public function view(User $user, Drug $drug): bool
{
return true; // يمكن القراءة فقط
}
الربط بين Drug (catalog) و InventoryProduct من خلال DrugInventoryMappingService:
use Modules\Inventory\Application\Services\DrugInventoryMappingService;
$mappingService = app(DrugInventoryMappingService::class);
// ربط دواء مع منتج في المخزون
$drug = Drug::find(1);
$product = $mappingService->syncDrugToInventory($drug, $locationId, [
'sku' => 'MED-PANADOL-500',
'track_batch' => true
]);
// البحث عن منتجات لدواء معين
$products = $mappingService->findInventoryProductsForDrug($drug->id, $locationId);
// البحث عن دواء من منتج
$drug = $mappingService->findDrugForInventoryProduct($product);
استخدام Drug في فواتير الصيدلية:
// في PharmacySaleLine
$saleLine = PharmacySaleLine::create([
'pharmacy_sale_id' => $saleId,
'drug_id' => 1, // من DrugCatalog
'inventory_product_id' => 5, // من Inventory
'quantity' => 10,
'price' => 25.00
]);
// الحصول على معلومات الدواء
$drugInfo = $saleLine->drug;
echo $drugInfo->trade_name; // Panadol
echo $drugInfo->manufacturer->name; // GSK
include parameter لتحميل العلاقات المطلوبة فقطis_controlled للتحكم في صلاحيات الصرفis_narcotic للأدوية المخدرةsfda_registration_number للتحقق من الأدويةis_active قبل استخدام الدواء- id (PK) - trade_name - generic_name - scientific_name - strength - sfda_registration_number (unique) - atc_code - barcode - manufacturer_id (FK → manufacturers) - dosage_form_id (FK → dosage_forms) - route_id (FK → routes) - therapeutic_class_id (FK → therapeutic_classes) - is_controlled - is_narcotic - is_refrigerated - is_active - created_at - updated_at
- id (PK) - name - name_ar - country_id (FK → countries) - website - email - phone - is_local - is_active
- id (PK) - name - name_ar - code - description - is_solid - is_liquid - is_injectable - is_active