LIS Reports (تقارير المختبر)
The LIS Reports module provides six analytical endpoints covering laboratory workload, turnaround times, test volumes, revenue, quality control performance, and abnormal result rates.
API Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET | /api/lis/reports/workload | Workload summary by section/technician | lis.reports.view |
GET | /api/lis/reports/turnaround-time | Average TAT per investigation/section | lis.reports.view |
GET | /api/lis/reports/test-volume | Daily test volume with breakdown | lis.reports.view |
GET | /api/lis/reports/revenue | Revenue summary from invoices | lis.reports.view |
GET | /api/lis/reports/qc-summary | QC pass/fail rates | lis.reports.view |
GET | /api/lis/reports/abnormals | Abnormal result rates and top tests | lis.reports.view |
Common Query Parameters
All report endpoints accept these required parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date (Y-m-d) | yes | Report start date |
to | date (Y-m-d) | yes | Report end date |
branch_id | integer | no | Filter by branch (except QC summary) |
Report Descriptions
Workload Summary
Returns test workload breakdown by lab section and technician for the given period.
curl -G /api/lis/reports/workload \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28" \
-d "branch_id=1"final response = await dio.get('/api/lis/reports/workload', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
'branch_id': 1,
});Turnaround Time
Returns average turnaround time per investigation and section, comparing actual TAT against the configured target (tat_hours).
curl -G /api/lis/reports/turnaround-time \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28"final response = await dio.get('/api/lis/reports/turnaround-time', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
});Test Volume
Returns daily test volume with breakdown by request source (walk_in, in_patient, emergency, external) and priority (routine, urgent, stat).
curl -G /api/lis/reports/test-volume \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28"final response = await dio.get('/api/lis/reports/test-volume', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
});Revenue Summary
Returns lab revenue from invoices with daily breakdown, including subtotals, discounts, insurance amounts, and patient amounts.
curl -G /api/lis/reports/revenue \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28" \
-d "branch_id=1"final response = await dio.get('/api/lis/reports/revenue', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
'branch_id': 1,
});QC Summary
Returns quality control pass/fail/warning rates per investigation for the given period.
curl -G /api/lis/reports/qc-summary \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28"final response = await dio.get('/api/lis/reports/qc-summary', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
});Abnormal Results
Returns abnormal result rates and the top investigations with the highest abnormal percentages.
curl -G /api/lis/reports/abnormals \
-H "Authorization: Bearer {token}" \
-d "from=2026-02-01" \
-d "to=2026-02-28" \
-d "branch_id=1"final response = await dio.get('/api/lis/reports/abnormals', queryParameters: {
'from': '2026-02-01',
'to': '2026-02-28',
'branch_id': 1,
});Financial Reports
Three additional financial report endpoints for deeper analytics on commissions, insurance, and external lab financials.
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET | /api/lis/reports/doctor-commissions | Doctor commission analytics | lis.reports.doctor-commissions |
GET | /api/lis/reports/insurance-claims | Insurance claims analytics | lis.reports.insurance-claims |
GET | /api/lis/reports/external-labs-financial | External lab financial analytics | lis.reports.external-labs-financial |
Doctor Commissions Report
Returns commission data grouped by doctor, month, or test.
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date | yes | Start date |
to | date | yes | End date |
group_by | string | no | doctor (default), month, test |
doctor_id | integer | no | Filter by doctor |
status | string | no | Filter by commission status |
curl -G /api/lis/reports/doctor-commissions \
-H "Authorization: Bearer {token}" \
-d "from=2026-01-01" \
-d "to=2026-03-31" \
-d "group_by=doctor"final response = await dio.get('/api/lis/reports/doctor-commissions', queryParameters: {
'from': '2026-01-01',
'to': '2026-03-31',
'group_by': 'doctor',
});Insurance Claims Report
Returns insurance claim data grouped by company, month, or patient.
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date | yes | Start date |
to | date | yes | End date |
group_by | string | no | company (default), month, patient |
contract_id | integer | no | Filter by insurance contract |
status | string | no | Filter by invoice status |
curl -G /api/lis/reports/insurance-claims \
-H "Authorization: Bearer {token}" \
-d "from=2026-01-01" \
-d "to=2026-03-31" \
-d "group_by=company"final response = await dio.get('/api/lis/reports/insurance-claims', queryParameters: {
'from': '2026-01-01',
'to': '2026-03-31',
'group_by': 'company',
});External Labs Financial Report
Returns external lab financial data grouped by lab, month, or test.
| Parameter | Type | Required | Description |
|---|---|---|---|
from | date | yes | Start date |
to | date | yes | End date |
group_by | string | no | lab (default), month, test |
external_lab_id | integer | no | Filter by external lab |
direction | string | no | outbound or inbound |
curl -G /api/lis/reports/external-labs-financial \
-H "Authorization: Bearer {token}" \
-d "from=2026-01-01" \
-d "to=2026-03-31" \
-d "group_by=lab"final response = await dio.get('/api/lis/reports/external-labs-financial', queryParameters: {
'from': '2026-01-01',
'to': '2026-03-31',
'group_by': 'lab',
});Business Rules
- Date range required -- All reports require
fromandtodates.tomust be on or afterfrom. - Company scoping -- Reports are automatically scoped to the authenticated user's company.
- Branch filter -- All reports except QC summary support optional branch filtering.
- TAT calculation -- Turnaround time is measured from
requested_aton the lab request toreleased_aton the result. - QC rates -- Pass/warning/fail percentages are calculated from
lab_qc_resultsgrouped by investigation.