---
title: "Doctor Medicine Master"
description: "A doctor's list of common prescription medicines — how to add one at a time or load the whole list from an Excel or CSV sheet, and what happens to medicines that are already on the list."
date: 2026-11-06
lastModified: 2026-11-06
category: "product"
author: "Dr. Umesh Bilagi"
beta: true
---

## Overview

Every doctor has their own **medicine master** — the list of medicines they prescribe
regularly, each with the frequency, duration, instruction and route they usually use.
When the doctor writes a prescription, this list is what they pick from, so a
consultation can be filled in without typing each line.

The list belongs to one doctor. It is not a hospital-wide catalogue, and it does not
touch stock, prices or pharmacy items.

## Getting there

**Sidebar → Doctor → (select the doctor) → ID** opens the doctor's management page,
`/admin/doctor/doctor-mangement/{doctorId}`.

Three actions sit at the top of that page:

| Action | What it does |
|--------|--------------|
| **Create Medicine** | Adds one medicine to the list |
| **Search and Edit Medicine** | Lists everything on the list, with edit and delete |
| **Bulk Upload Medicine** | Loads the whole list from an Excel or CSV sheet |

## Who can do this

| Signed-in role | What they can do |
|----------------|------------------|
| **admin** / **director** | Create, edit, delete and bulk upload for any doctor in the hospital |
| **doctor** | Create, edit, delete and bulk upload for their **own** list only |

Everything imported is owned by the doctor, not by whoever uploaded it — so an admin
can load the list and the doctor can still edit and delete the entries afterwards.

## Adding medicines one at a time

1. Open the doctor's management page.
2. Select **Create Medicine**.
3. Fill in **Medicine**, **Frequency**, **Duration**, **Instruction** and **Route**. All
   five are required, and each is free text — there is no fixed list of values.
4. Save. The medicine appears straight away in the table on the same page.

A medicine that is already on the list with the **same frequency and duration** is
refused as a duplicate. The same medicine with a **different** frequency or duration is
a separate entry and is allowed — for example *Tab Paracetamol 500mg / 1-0-1 / 5 days*
and *Tab Paracetamol 500mg / SOS / 3 days* are two legitimate entries.

## Bulk upload

Use this when a doctor joins with a list of a few hundred medicines, or when the list
needs updating in one go.

1. Open the doctor's management page.
2. Select **Bulk Upload Medicine**.
3. Select **Download the template** and open it in Excel. It contains the header row
   only — no sample rows.
4. Add one medicine per row, starting on row 2.
5. Choose the file, decide whether to skip existing medicines (below), then select
   **Import medicines**.

### The sheet

| Column | Required | Example |
|--------|----------|---------|
| **Medicine** | yes | `Tab Paracetamol 500mg` |
| **Frequency** | yes | `1-0-1`, `BD`, `TDS` |
| **Duration** | yes | `5 days`, `1 week` |
| **Instruction** | yes | `After food` |
| **Route** | yes | `Oral`, `IV`, `Topical` |

- The header row must be row 1. Headers are matched ignoring case and surrounding
  spaces; extra columns are ignored.
- The file must be `.xlsx`, `.xls` or `.csv`.
- Every cell is limited to 255 characters.
- There is no Doctor column — the doctor is the page you opened.

### Skip existing medicines

The checkbox is on by default and decides what happens to a row whose **medicine name
is already on this doctor's list**:

| Setting | Result |
|---------|--------|
| **Ticked** (default) | The row is skipped. The upload succeeds, and the result lists exactly which rows were skipped and what the existing entry's frequency and duration are. |
| **Cleared** | Each such row is reported as an error and **nothing is imported** until you remove those rows from the sheet and upload again. |

The comparison uses the **medicine name only** — trimmed and ignoring case, so
`Tab Paracetamol 500mg` matches `tab paracetamol 500mg `. Frequency and duration are
not part of this comparison. This is deliberate: re-uploading a master file that has
grown over time should add the new lines without arguing about the ones you already
have. Clear the checkbox when you want to be shown every line that overlaps instead.

### Limits

- **1,000 rows per file**, hard. A larger sheet is refused — split it.
- **1,000 medicines per doctor**, in total. `Search and Edit Medicine` shows at most
  1,000 rows, so anything beyond that would be invisible.
- Skipped rows do not count toward the total, so a full list can still be re-uploaded
  with the checkbox ticked.

### Nothing is written unless the whole sheet is clean

All checks run before a single row is saved. If any row fails, the page lists every
problem at once in a **Row · Medicine · Column · Value · Reason** table, which you can
download as a CSV, and the list is left exactly as it was.

Two things are always errors, whichever way the checkbox is set:

- the same medicine appearing twice in one file with the same frequency and duration;
- a required cell left blank, or a cell longer than 255 characters.

## Common issues

| Message | What it means | What to do |
|---------|---------------|------------|
| **"The file has no rows…"** | The sheet has a header but no data. | Add medicines from row 2 and upload again. |
| **"Column `X` is missing…"** | A required header was renamed or deleted. | Restore the header exactly as the template has it: Medicine, Frequency, Duration, Instruction, Route. |
| **"This file could not be read…"** | The file is not a spreadsheet the app can open, or it is corrupted. | Save it as `.xlsx` or `.csv` and upload again. |
| **"Dr X already has N medicines. The list holds 1,000 — this file would make M. Import K or fewer."** | The upload would push the doctor past 1,000. | Split the file, or remove medicines from the list first. |
| **"… is already on Dr X's list. Remove this row from the sheet and upload again."** | The checkbox was cleared and a row already exists. | Delete that row, or tick **Skip existing medicines**. |
| **"Duplicate within this file — also on row N."** | The same medicine with the same frequency and duration appears twice in the sheet. | Keep one of the two rows. |
| **"This doctor does not belong to your hospital."** | The doctor ID in the link is not in your hospital. | Open the doctor from **Doctor → ID** in your own hospital. |
| **"You can only upload medicines to your own list."** | A doctor tried to upload to another doctor's list. | Ask an admin or director to run the upload. |
| **"This medicine could not be saved because it collides with an existing entry…"** | Someone added the same medicine at the same moment. | Upload the file again; change the frequency or duration if the row is genuinely different. |

## Related guides

- [Creating a Patient Prescription](/docs/creating-patient-prescription) — the list is what the prescription screen picks from
- [Creating Doctors](/docs/creating-doctors) — adding a doctor before their list can be loaded
