---
title: "Doctor Revenue & Expense"
description: "How NICE HMS calculates and pays doctor fees — consignee/consultant and referring-doctor (PRM) commission, which month revenue is assigned to, the zero-balance rule, and manual doctor expense booking."
date: 2026-08-25
lastModified: 2026-08-25
category: "billing"
author: "Dr. Umesh Bilagi"
beta: true
---

## Overview

Doctor fees in NICE HMS are **commission-based**, not salary-based. Every billable item (test, procedure, service) can carry a commission percentage for up to two doctor roles:

- **Consignee / Consultant** — the attending doctor who earns commission on the item (`perceatgeToLedger`).
- **Referring doctor (PRM)** — the doctor who referred the patient (`prmPercent`).

The commission is stored as a **percentage on each invoice line**. The actual amount paid to the doctor is then **booked manually** through a "Doctor Expense Booking" journal voucher — NICE HMS does **not** auto-compute or auto-pay doctor commission.

## The two doctor roles

### Consignee = Consultant (attending doctor)

"Consignee" and "consultant" are the same role in NICE HMS — the doctor who attends the patient and earns commission per item. This is the encounter's **attending** participant (FHIR code `ATND`).

- The commission percentage is labelled **"Percentage To Consignee Ledger"** in the Item Master.
- At invoice time, each line is assigned to a consignee ledger (`consigneeLedger`) with its percentage (`perceatgeToLedger`).

### Referring doctor (PRM)

A separate role — the doctor who **referred** the patient (FHIR participant code `REF`). Each item line can also carry:

- `refDocName` — the referring doctor's name.
- `prmPercent` — the referring doctor's commission percentage.

## Where commission is captured

The doctor↔item↔revenue mapping lives on the **`item` table** (one row per invoice line):

| Field | Meaning |
|-------|---------|
| `ledgerId` / `consigneeLedger` | The consignee (consultant) account |
| `perceatgeToLedger` | Consignee commission % |
| `refDocName` | Referring doctor name |
| `prmPercent` | Referring doctor commission % |
| `totalItemAmount`, `gstAmount` | Line value used in reports |

The percentages are copied from the item master (`ORG_PANEL_AND_TEST`) when the invoice is created. See [Billing Overview](/docs/billing-overview) and [Item Management](/docs/item-management).

## Which month does the revenue belong to?

Doctor revenue is attributed to the **voucher date** (the date the invoice/receipt was recorded) — **not** the admission or discharge date.

- The month-wise doctor reports bucket each encounter by its **last transaction date** (the `MAX(voucher.date)` for that encounter).
- A patient admitted on 30 January and discharged on 3 February is counted in the month of their **final transaction** (typically when the last receipt settled the bill), not the admission month.

There is no admission-date / discharge-date logic anywhere in the doctor-revenue reports.

## The zero-balance rule

Some doctor reports only include encounters that are **fully settled** (no outstanding balance):

| Report | Balance rule |
|--------|--------------|
| Consignee Report | `balance <= 0` (fully paid or over-paid) |
| Consignee Month Wise | `encounterBalance = 0` (exactly settled) |
| PRM Doc Month Wise | `encounterBalance = 0` |
| **Primary Consultant Insights** | **No balance filter** (shows revenue regardless of payment) |

Balance is computed as `INVOICE + PAYMENT − CREDIT_NOTE − RECEIPT`.

## OPD vs IPD

Reports can be split by encounter type using the encounter display name:

- `OPD visit …` → outpatient
- `Admission visit …` → inpatient

The **Encounter Month Wise** report filters by `encounterName LIKE 'OPD%'` or `'Admission%'`. The **Primary Consultant Insights** report covers OPD and IPD together and does not split them.

## Partial payments

In the settled-report view (Consignee / PRM Month Wise), **any outstanding balance excludes the entire encounter** — the balance must be exactly `0`. A partially paid encounter stays out of the report until it is fully settled.

The Primary Consultant Insights report ignores payment status entirely.

## Reports

| Report | Route | What it shows |
|--------|-------|---------------|
| Primary Consultant Revenue Insights | `/admin/mis-reports/creditors/primary-consultant-insights-report` | Item revenue per attending consultant for the year (OPD + IPD, no balance filter) |
| Doctor Dues | `/admin/mis-reports/creditors/doctor` | What the hospital owes each consignee: `crAmount − drAmount` |
| Consignee Report / Month Wise | `/admin/mis-reports/creditors/consignee-month-wise` | Settled consignee commission, month-bucketed |
| PRM Doc Month Wise | `/admin/mis-reports/creditors/prm-month-wise` | Settled referring-doctor (PRM) commission, month-bucketed |
| Encounter Month Wise | `/admin/mis-reports/month-wise/encounter-month-wise` | Revenue vs collection vs balance, OPD or IPD |

See [MIS Reports](/docs/reports-mis) for the full report catalogue.

## How the doctor is actually paid (Doctor Expense Booking)

Doctor commission is **not paid automatically**. An accountant records each payment as a manual journal voucher:

1. Go to **Accounts → Doctor Expense Booking** (`/admin/accounts/journal-doctor/`).
2. **Book Expense** — creates a `DOCTOR_EXPENSE_BOOK` voucher that credits the doctor's consignee account (records the amount owed).
3. **Reverse Expense** — creates a `DOCTOR_EXPENSE_CANCEL` voucher to reverse a previously booked amount.
4. Pay from **Doctor Dues** — the "Payment" button opens a `PAYMENT` voucher to settle the balance.

The **amount is whatever the accountant enters** — the code does not multiply `total × percent` automatically.

**Doctor Dues** (consignee ledger balance) is computed as:

- `crAmount` = sum of `DOCTOR_EXPENSE_BOOK` + `RECEIPT` vouchers
- `drAmount` = sum of `DOCTOR_EXPENSE_CANCEL` + `PAYMENT` vouchers
- `balance` = `crAmount − drAmount` → the amount currently owed to the doctor

## Key tables

| Table | Role |
|-------|------|
| `item` | One row per invoice line; carries consignee ledger, percentages, referring doctor, and line amounts |
| `voucher` | All financial transactions (INVOICE, RECEIPT, PAYMENT, DOCTOR_EXPENSE_BOOK, DOCTOR_EXPENSE_CANCEL, …) |
| `patientDetails` | Universal ledger/account table; `accountType` includes `CONSIGNEE` (doctors) |
| `ORG_PANEL_AND_TEST` | Item/service master; supplies ledger, commission %, and prices |
| `doctorDetails` | Hospital staff doctors (clinical, not the revenue ledger) |
| `refferingDoctor` | Referring-doctor directory (PRM master) |

## Related guides

- [Billing Overview](/docs/billing-overview) — voucher groups and the accounts workflow
- [MIS Reports](/docs/reports-mis) — the full report catalogue
- [Item Management](/docs/item-management) — where commission % is configured
- [Accounts Master](/docs/accounts-master) — the chart of accounts (consignee ledgers)
