Skip to content

Lab Doctors (الاطباء)

Doctors represent the physicians who order lab tests. A doctor can be internal (hospital staff linked to an HRM department) or external (referring physician from an outside clinic).

Entity Attributes

FieldTypeRequiredDescription
idintegerautoPrimary key
namestringyesDoctor name (English)
name_arstringnoDoctor name (Arabic)
codestringnoAuto-generated if empty
specializationstringnoMedical specialization (English)
specialization_arstringnoMedical specialization (Arabic)
license_numberstringnoMedical license number
phonestringnoPhone number
emailstringnoEmail address
is_internalbooleannoInternal hospital doctor (default: false)
department_idFKnoHRM department (for internal doctors)
partner_idFKnoLinked BusinessPartner (supplier) for accounting
commission_typeenumnopercentage, fixed_per_referral, fixed_per_test
commission_valuedecimalnoCommission rate or fixed amount
commission_account_idFKnoOverride expense GL account
commission_payable_account_idFKnoOverride payable GL account
is_commission_activebooleannoEnable commissions (default: false)
is_activebooleannoActive status (default: true)
created_atdatetimeautoCreation timestamp
updated_atdatetimeautoLast update timestamp

ER Diagram

API Endpoints

MethodEndpointDescriptionPermission
GET/api/lis/doctorsList doctors (paginated)lis.doctors.view
POST/api/lis/doctorsCreate a doctorlis.doctors.create
GET/api/lis/doctors/{id}Get doctor detailslis.doctors.view
PUT/api/lis/doctors/{id}Update a doctorlis.doctors.update
DELETE/api/lis/doctors/{id}Delete a doctorlis.doctors.delete

Query Parameters (List)

ParameterTypeDescription
searchstringSearch by name, name_ar, or code
is_activebooleanFilter by active status
is_internalbooleanFilter internal vs external doctors
has_commissionbooleanFilter doctors with commission enabled
commission_typestringFilter by commission type

Request / Response Examples

Create Doctor

bash
curl -X POST /api/lis/doctors \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Dr. Sara Ali",
    "name_ar": "د. سارة علي",
    "specialization": "Internal Medicine",
    "specialization_ar": "الباطنة",
    "license_number": "KW-MED-12345",
    "phone": "+965-5555-1234",
    "is_internal": true,
    "department_id": 3
  }'
dart
final response = await dio.post('/api/lis/doctors', data: {
  'name': 'Dr. Sara Ali',
  'name_ar': 'د. سارة علي',
  'specialization': 'Internal Medicine',
  'specialization_ar': 'الباطنة',
  'license_number': 'KW-MED-12345',
  'phone': '+965-5555-1234',
  'is_internal': true,
  'department_id': 3,
});

Response 201 Created

json
{
  "data": {
    "id": 1,
    "name": "Dr. Sara Ali",
    "name_ar": "د. سارة علي",
    "code": "DOC-000001",
    "specialization": "Internal Medicine",
    "specialization_ar": "الباطنة",
    "license_number": "KW-MED-12345",
    "phone": "+965-5555-1234",
    "email": null,
    "is_internal": true,
    "department_id": 3,
    "is_active": true,
    "created_at": "2026-03-01T10:00:00.000000Z",
    "updated_at": "2026-03-01T10:00:00.000000Z"
  }
}

Business Rules

  1. Internal vs external -- Internal doctors are linked to an HRM department. External doctors are referring physicians.
  2. Lab requests -- A doctor is referenced on every lab request to identify who ordered the tests.
  3. Department link -- The department_id references the HRM module's Department model (cross-module relation).
  4. Commission system -- Doctors can earn commissions on referred lab tests. See Doctor Commissions for the full commission workflow.
  5. Auto-create partner -- Pass auto_create_partner: true when creating/updating a doctor to auto-create a BusinessPartner (supplier) for accounting integration.

Moon ERP API Documentation