Getting Started — Help
This section covers signing in, your first login, and finding your way around. Read it once if OPDly is new to you.
How do I create my hospital account?
- On the OPDly website, click Register / Sign Up.
- Fill in the form:
- Clinic / Hospital / Lab Name (required) — your clinic, hospital, pharmacy or lab. Example:
Mehta Medical Centre. - Your Name (required) — the owner's name. Example:
Dr. Rajesh Mehta. Letters, numbers, spaces, dots, hyphens, underscores, apostrophes and quotes are fine (D'Souza,Singh-Rana). - Email (required) — the email you'll log in with. Example:
[email protected]. - Password (required) — at least 8 characters — letters, numbers or symbols, whatever you like (no spaces). Tap the eye icon to check what you typed.
- I agree to the terms of service and privacy policy is already ticked — this is required to register. The two links open the full documents in a new tab. If you untick it, tick it again before you click the button.
- Clinic / Hospital / Lab Name (required) — your clinic, hospital, pharmacy or lab. Example:
- Click Start My Free Month.
You get 1 month of full access, completely free — no payment and no credit card.
That's it — your account is active straight away and you're taken directly to your dashboard. No email link or waiting for approval.
Common problems
- "An account already exists with this email" — you have already registered. Tap Log in under the message and sign in (use Forgot Password if you don't remember it).
- If any box is red, the form scrolls to the first one that needs fixing — correct it and tap Start My Free Month again.
- "Too many attempts" — wait a few minutes and try again.
You can add more details (address, doctors, staff, billing) afterwards from the menu.
How do I log in?
- Go to the OPDly login page.
- Enter your email and password.
- Click Login.
Login error messages and what they mean:
- Wrong email or password — check for typos and extra spaces; use Forgot Password if unsure.
- "Account suspended" — usually a subscription/plan issue; renew with OPDly (your data is safe). See Account & Subscription.
I forgot my password. What do I do?
- On the login page click Forgot Password.
- Enter your email and submit.
- Open the reset email and set a new password.
If no email arrives, check your spam folder and confirm you typed the same email you registered with.
What should I set up first (first-time checklist)?
Pick what to start with — the first time you open the dashboard it asks you to choose Doctor, Pharmacy or Lab:
- Doctor — opens New Appointment so you can book your first patient. You are already added as a doctor (see below), so you can book straight away.
- Pharmacy — opens the Pharmacy dashboard, where you add medicines and sell.
- Lab — opens your lab test list. Click Add starter tests to add the common tests in one go, then take your first order.
The choice screen goes away once you have a doctor and an appointment, a medicine, or a lab test. Pharmacy and Lab only show if they're switched on in Settings.
Your doctors — when you register, you are added as the first doctor using the name you entered, so you log in with your own email and can see patients right away. Open Doctors to add your phone, speciality, fee and OPD timings, or to add more doctors (your plan decides how many). (See Doctors & Staff.)
Add your staff / receptionist — so they can log in too.
Fill hospital details in Settings — name, address, phone (shows on bills).
(Optional) Set up Billing Settings if you'll create bills — invoice prefix, GST if you use it.
Start booking patients from Appointments.
What do the different logins (roles) mean?
- Owner — full access: everything, plus add/remove doctors & staff, settings, reports, and subscription.
- Doctor — see the queue, consult patients, add notes, view their own reports.
- Staff (Receptionist) — book patients, run the queue, billing, pharmacy, lab. This is the main day-to-day user.
You only see the menus your role is allowed to use.
How do I move around the app?
- The left menu has all the sections (Dashboard, Appointments, Patients, Billing, Pharmacy, Lab, Reports, Settings).
- On a phone, tap the menu icon (☰) at the top to open the same menu.
- The top-right shows your profile — click it to view your profile or log out.
Is there a video showing how to use this?
Yes — a short tour of OPDly.
- Open Dashboard. On a newly set-up hospital you'll see the welcome screen with the Doctor, Pharmacy and Lab choices.
- Click ▶ Watch a quick tour, just under the welcome message.
- The video plays in a box on top of your screen — close it with the ✕ and you're back exactly where you were, with nothing lost.
Common problems
- I can't find the button — the welcome screen is only shown while your hospital is still being set up. Once you're up and running the dashboard replaces it.
- The video box is blank — your internet connection may be blocking YouTube. Use the Open on YouTube link shown in the box, or try mobile data instead of hospital wi-fi.
Does this work on a mobile phone?
Yes. OPDly works on any device — phone, tablet, or computer — in the web browser. In many hospitals the receptionist runs everything from a phone. You can also install it as an app (see below) so it opens from an icon, full screen, without typing the address.
How do I install OPDly as an app on my phone or computer?
Installing is optional — you can skip it and keep using the browser.
- Open OPDly in your browser.
- Tap Install app — on the login page it's the Install OPDly app link at the bottom; after you log in, tap your profile picture (top right) and choose Install App.
- Android phone (Chrome) or computer (Chrome / Edge): a small box appears — tap Install. Done.
- iPhone / iPad: a box shows the steps — tap the Share button (square with an arrow pointing up), then Add to Home Screen, then Add.
- Other browsers show the exact steps for that browser in the same box.
Once installed, open OPDly from its icon on your home screen or desktop. The Install app button disappears inside the installed app.
Common problems
- I opened the link from WhatsApp and can't install — WhatsApp's built-in browser can't install apps. In the box, tap Copy link, open Chrome (or Safari on iPhone), paste the link and tap Install app again.
- I'm using Firefox on a computer — Firefox can't install apps. Open OPDly in Chrome or Edge instead.
- I don't see the Install button in the box — OPDly may already be installed. Look for the OPDly icon on your home screen or desktop.
Appointments & Queue — Help
This section explains how to book patients, give them a token, and manage the daily queue. If you are new, read it top to bottom once — it takes 5 minutes.
What is an appointment here?
Every time a patient comes to see a doctor, you create an appointment. The patient then gets a token number (like a queue number) and can track their turn on their phone. You do this from the Appointments menu on the left.
How do I book a new patient (walk-in)?
- Click Appointments in the left menu.
- Click the New Appointment button (top of the page).
- In the Search existing patient box at the top, type the patient's name or
phone number.
- If they have visited before, they appear in a list — click their name to pick them. Their details fill in automatically. Skip to step 5.
- If nothing shows, they are new — continue to step 4.
- Fill in the patient details. Fields marked with a red star (*) must be filled;
everything else you can skip.
- Patient Name (required) — the patient's full name. Example:
Ramesh Kumar. - Phone Number (optional, but recommended) — 10 digits, no +91 or spaces.
Example:
9876543210. Needed so the patient gets WhatsApp updates; skip only if they have no phone. - Doctor (required) — pick which doctor they will see from the list.
- Appointment Date (required) — leave as today for a walk-in.
- Arrival Time (optional) — the time you tell the patient to come, e.g.
15:40. Leave it blank for a walk-in who is standing at the desk. It does not create a fixed slot or change the queue — the token is still given in arrival order when they check in. See A patient phoned to come later today below. - Age (optional) — type the number and choose Y (years), M (months) or D (days)
next to it (Y is already selected). Example:
34Y, or6M for a baby. - Gender (optional) — tap Male / Female / Other.
- Address (optional) — example:
Main Bazaar, Delhi. - Guardian Name (optional) — a parent or family member, e.g.
Ramesh Kumar. You can skip it. - Appointment Type (optional) — New (first visit) or Follow-up (coming again for the same problem). Leave as-is if unsure.
- Reason for visit (optional) — a short line about why they came, e.g.
Fever & cough for 3 days. The doctor sees it as the starting complaint when they open the consultation, so they don't have to ask again. - Lifestyle (optional, inside the collapsed Vitals and Lifestyle section near the bottom) — Smoking / Alcohol / Tobacco. Saved on the patient's record (not just this visit). For a returning patient it's locked to their saved values — use Edit to change it.
- Patient Name (required) — the patient's full name. Example:
- Click the big blue Book Appointment button.
Need to record the patient's blood group, allergies, chronic diseases, or medical history? That's done from the patient's own profile (Patients → open the patient → Edit), not from this booking screen.
Done — the patient is added to today's queue and gets a token.
A patient phoned to come later today (e.g. 3:40 pm) — how do I book them?
- Click Add Appointment and fill in the patient as usual.
- Leave Appointment Date as today.
- Set Arrival Time to
15:40. - Click Book Appointment.
The patient is saved as Scheduled — they do not get a token yet, so they don't hold a place in the queue while they are not here. They show under Expected today on the Appointments page with their time. When they arrive, click Check in and they get their token then (and their WhatsApp with the tracking link).
Common problems
- I booked a walk-in and they got no token — you filled in Arrival Time. Click Check in on them under Expected today. Leave Arrival Time blank for walk-ins.
- The patient never came — leave it. It is marked No Show automatically after the day.
The patient has visited before — do I add them again?
No. Just search their name or phone in the Search existing patient box and click their name. This keeps all their visits under one record (their history stays together). Only fill in the details manually if they are truly new.
I picked an existing patient but their age/address is wrong — how do I fix it?
When you select an existing patient, their Name, Phone, Age, Gender, Address, and Guardian Name fields are locked (greyed out) on purpose — this stops an accidental edit from changing the wrong person's record, since families sometimes share one phone number. If something genuinely needs correcting, click the small Edit link shown under their name and the fields unlock. Whatever you change there is saved to that patient's record when you click Book Appointment.
If you need to book for a different person, clear the selected patient first (the ✕ on their name) or use Book for a new patient instead — searching again on its own won't change who's selected.
I typed a phone number and a warning appeared. What do I do?
That means another patient already uses that phone number. This is a safety check so you don't accidentally create a duplicate.
- If the person in front of you is one of the names shown → click Use next to their name.
- If it's a different person (families often share one number) → click Continue with new patient and carry on.
How do I book a patient for a future date (not today)?
Same as booking a walk-in, but in Appointment Date pick a future date. The patient is saved as Scheduled. They do not get a token yet — the token is given on the actual day when they arrive and you check them in.
If you set an Arrival Time, the patient sees it and gets it in their WhatsApp reminder ("please arrive by 11:30 AM"). It's only guidance — it does not reserve a slot and does not change who is seen first.
If you leave Arrival Time blank, the WhatsApp instead shows the doctor's OPD hours for that day, e.g. "Tue, 8 Sept 2026, OPD 10:00 AM – 1:00 PM", so the patient still knows roughly when to come. This needs OPD Timings set on the doctor (Doctors → edit the doctor); with no timings saved, only the date is sent.
When does the patient get a WhatsApp?
When you book a future visit at the desk, the patient gets no WhatsApp right away — you've just told them the date in person. Instead they get:
- A reminder the evening before (around 6:30 PM) — "your appointment is tomorrow", with the doctor, the date and the OPD hours.
- A second WhatsApp with their token on the day, when you check them in.
Tell the patient the date at the desk and write it on their slip. The reminder is a safety net, not the only thing they'll have.
Two exceptions:
- If you book today for tomorrow, the patient gets no WhatsApp at all — not now, and no reminder this evening. Write the date on their slip and tell them clearly.
- If the patient booked themselves on your public page, they do get a WhatsApp as soon as you approve the request, so they know it was accepted — plus the reminder the evening before.
Quick list — who gets a WhatsApp?
| Situation | WhatsApp? |
|---|---|
| Booked for today | Yes — token, straight away |
| Booked tomorrow or later, from an earlier day | Yes — reminder at 6:30 PM the evening before |
| Booked today, for tomorrow | No message at all |
| Patient booked online, you approve it | Yes — when you approve, plus the evening-before reminder |
| You click Resend WhatsApp on the appointment | Yes — sends again straight away |
If a patient needs the details and got nothing, open the appointment and use Resend WhatsApp.
What is a token number?
It's the patient's place in the queue for their doctor (like S01, S02). Each doctor
has their own token series. Tokens reset automatically every night, so tomorrow starts
fresh at 01 again.
How do I manage today's queue?
- Click Appointments — the page opens on today by default.
- You'll see all of today's patients with their token and status.
- Use the action button on each patient to move them along:
- Check in — patient has arrived; this gives them their token.
- Consult — the doctor has started seeing this patient.
- Mark as Done — the visit is finished.
- Only one patient can be "in consultation" per doctor at a time. If the current patient steps out, mark the next one as Consult and the previous one goes back to waiting.
How do I see a patient's full details from the queue?
Click on the patient's row (Tap to view). It opens their appointment page where you can see everything, add notes, upload files, or create a bill.
How do I record a patient's vitals?
Vitals (like weight, blood pressure, temperature, SpO₂) belong to that visit, so each visit keeps its own readings. You can record them in two places:
While booking — on the New Appointment screen, open the Vitals and Lifestyle (optional) section and fill in what you measured. They're saved with the visit when you click Book Appointment.
On the appointment page — open the patient's appointment (tap their row in the queue). Scroll to the Vitals section, fill in the fields, and click Save Vitals. Every field is optional — enter only what was measured.
You can record vitals before the doctor sees the patient, and the doctor can view or correct them later from the same page (or the consultation screen).
Blood pressure check: if you enter a BP Sys (systolic) value that isn't higher than BP Dia (diastolic), a small warning appears — the two are usually swapped or mistyped. It won't stop you saving, but do double-check the numbers.
Units — Temp, Weight, Height and Glucose
Each of these has a small unit button next to it: °F/°C, kg/lb, in/cm, mg/dL / mmol/L. Tap it to switch.
Whatever unit you use is saved with the reading, so the patient's record and the
printed prescription show exactly the number and unit you entered — type 101 °F
and it stays 101 °F everywhere.
Switching the unit does not change the number — 101 with °F tapped is
saved as 101 °F; tap °C and it is saved as 101 °C. Set the unit to match
what you measured.
Common problems
- I don't have a reading for a field — leave it blank, that's fine.
- It won't save a value — check the number is realistic (for example SpO₂ must be between 0 and 100).
How does the doctor run a consultation?
When it's the patient's turn, click Consult (from the queue or the patient's appointment page). This opens the consultation workspace — one screen where the doctor documents the visit. The header chips show the patient's age/gender, token, and — if recorded — their smoking / alcohol / tobacco history.
- Symptoms / Chief Complaints — type each symptom and press Enter (e.g. Fever). If reception entered a Reason for visit at booking, it's already sitting here as the first complaint — edit or replace it as needed.
- Examination — free-text findings (optional).
- Diagnosis — type each diagnosis and press Enter (optional).
- General Advice — e.g. Rest for 3 days (optional).
- Follow-up — choose No follow-up, After (days), or On date (optional). The date picker only allows today or later; if a past date somehow gets set, a warning shows. When you end the consultation, a real appointment is automatically booked for that date with the same doctor — you'll see a confirmation with the date. It shows up in the appointments list like any other booking; if the patient doesn't come, mark it No-Show as usual. The patient gets no WhatsApp at that moment — the doctor has just told them in person and it's printed on their prescription. They're reminded on WhatsApp the evening before the follow-up.
- Vitals appear on the right — click Edit/Add to update them.
- Point-of-Care Tests — quick tests done in the room (blood glucose, urine
pregnancy test, urine dipstick, hemoglobin, malaria/dengue rapid test). Click
Add test, type or pick the test name, and enter the result (e.g.
142orPositive). Both the doctor and reception/nurse can fill this in. These are just recorded on the visit summary — they are not lab orders and are not billed automatically. If your clinic charges for a strip test, add it as a line on the bill.
Everything you type is saved automatically (you'll see "Saved"). Nothing is mandatory — a simple visit can be finished in seconds.
When done, click End Consultation. A confirmation pops up with two choices — End Consultation (just save) or End & Print (save and open the printable prescription in one step). The record is saved and the visit is marked completed. Ending a consultation does not create a bill — you bill separately, whenever your clinic collects (see below), so this works whether you take payment at a single counter, at the pharmacy/lab, at booking, or not at all. To bill the visit, use Create Bill from the ⋮ menu at the top of the consultation screen. Visits not billed yet show up on the Dashboard's Unbilled Visits card, so nothing gets lost on a busy day.
"Another consultation is open" — what do I do?
A doctor can only have one patient in the room at a time. If you click Consult on the next patient while an earlier consultation was never ended, a box appears naming the patient who is still marked as in consultation (with their token, and the date if it was an earlier day). Pick what actually happened:
- Complete & Start — that visit finished and nobody pressed End Consultation. It is marked completed and the new patient starts straight away.
- Send Back & Start — that patient stepped out (for an X-ray, to fetch money) and is coming back. They go back into the queue and keep their token and their place, so you can call them again later. The new patient starts now.
- Cancel — change nothing and go back.
This only appears when a consultation was left open. The normal flow — End Consultation, then Consult the next patient — never shows it.
Can I run the consultation with the keyboard (no mouse)?
Yes — the consultation screen is built for fast keyboard entry. Click the Shortcuts link (top-right of the clinical sections) any time to see this list on screen.
- In any search box (symptoms, examination, diagnosis, advice, medicines): type, then press ↑ / ↓ to move through the suggestions and Enter to add the highlighted one. If nothing is highlighted, Enter adds the top match, or the new term you typed. Press Esc to close the list. The box stays focused, so you can keep going: type → Enter → type → Enter.
- Alt + 1…9 jumps to a section and puts the cursor in its first field: 1 Vitals · 2 Complaints · 3 Examination · 4 Diagnosis · 5 Medicines · 6 Advice · 7 Investigations · 8 Follow-up · 9 Referral.
- Alt + E / Alt + C expand or collapse all sections.
- Ctrl + Enter ends the consultation.
On a Mac, the Alt key is the ⌥ Option key (so Alt+1 = Option+1).
Everything you enter is saved automatically as you go, so you never lose work.
How do I bill a patient for the visit?
Billing is a separate step you do when you're ready — nothing is charged automatically.
- On the appointment list, open the row's ⋮ (three-dot) menu and choose Create Bill — or click Create Bill on the consultation screen.
- The create-bill screen opens with the patient already selected and a Consultation line pre-filled with the doctor's fee.
- Add any other charges — medicines, procedures, lab tests, dressing, etc. — using Add Item, then adjust prices/discounts.
- Click Create Bill to issue it and collect payment (see the Billing help).
Once a bill exists for that visit, the menu shows View Bills instead so you don't accidentally raise a second bill — click it to open the patient's bills.
Clinics with a pharmacy or lab that track stock/reports can instead bill medicines through Pharmacy → New Sale and tests through Lab → New Order (these deduct stock and track reports). The Create Bill button above is the quick way to charge everything on one bill when you don't need stock tracking.
Adding a prescription: in the Medications (Rx) section, start typing the medicine name — pick one from the list, or just type any medicine (it doesn't have to be in your pharmacy stock). Fill Dose / Frequency / When / Route / Duration as needed (e.g. 1 tab · 1-0-1 · After food · Oral · 5 days) and the Qty is auto-filled for tablets/capsules (you can edit it; for syrups/drops it's left blank for you to set). Use Remove to delete a row.
Medicines marked "Catalog" come from OPDly's list of common Indian medicines — you can prescribe them even if your pharmacy hasn't added them yet. Your hospital's own medicines are always shown first. When the pharmacy later opens this prescription in New Sale, catalog medicines they stock are added to the bill automatically; ones they don't stock are shown in the prescription note to add by hand.
Dose suggestions match the medicine. When you pick a medicine from your pharmacy list, the Dose box suggests only doses that make sense for its form — a tablet offers 1/2 tablet · 1 tablet · 2 tablets, a syrup offers 5 ml · 10 ml · 1 teaspoon, drops offer 1 drop · 2 drops, and so on. You can always ignore the list and type any dose you want. For a medicine you typed yourself (not in your pharmacy list), or one saved without a form, the full list of doses is shown.
It remembers your usual dose. After you finish a consultation, OPDly remembers how you prescribed each medicine. The next time you pick that same medicine, the row is pre-filled with your last dose / frequency / when / route / duration — shown with a small "from last Rx" tag — so you just review and move on. It's always editable, and each doctor has their own remembered doses (a medicine you've never prescribed starts blank as usual).
Tapering doses (e.g. steroids that step down): click Add tapering on a medicine row and fill each step (dose, frequency, when, duration). Once a taper is added, the row's plain Dose / Frequency / When / Duration / Qty boxes disappear — the taper schedule below the row is used instead, so both the screen and the printed prescription only show the step-down plan (no conflicting single dose). Click Remove taper to go back to a single dose.
Allergy alert: if the patient has any Allergies recorded — in this visit or any earlier visit — a yellow "Recorded allergies" banner shows at the top of the Medications section. It gathers allergies across the patient's whole history, so it stays visible even when you haven't re-entered them this visit. Always check it before prescribing.
Referral: the Referral section has two fields — Referred by (who sent the
patient, e.g. Dr. Sharma, Self, Camp) and a Referral note (optional reason). Both
are optional and print on the prescription when filled.
Advising lab tests: in the Investigations section, search your test catalog (e.g. CBC) or type any test name, add an optional note (e.g. fasting), and click Add. If you type a common test (e.g. CBC, LFT) that isn't in the catalog yet, the full test is added for you, with its report fields. This only advises the test — it doesn't create a bill. The lab desk turns it into an order later (see the Lab help).
How do I use templates so I don't retype the same things?
Templates let you save a set of items once and drop them into a consultation with a single click — so you don't search and re-type common symptoms, diagnoses, medicines, etc. Your templates are private to you (other doctors don't see them).
Two kinds:
- Section templates — each section (Symptoms, Examination, Diagnosis, Medications, Investigations, Advice, Medical History) has its own small Templates ▾ button. Use it to save/apply just that section.
- Whole-visit template — the Templates button at the top of the consultation (next to the ⋮ menu) saves or applies all sections at once (e.g. a full "Viral Fever" visit).
Each section header has a Templates button, and — once you've selected at least one item — a Save and a Clear button appear next to it.
To apply a template:
- Click Templates and pick a saved template from the list.
- Its items are added to what's already there (nothing you've typed is removed, and duplicates are skipped). Edit doses/notes as needed for this patient.
To save a template: click Save. You get two choices:
- New template — type a name (e.g.
Viral Fever) and click Save. - Update existing — pick one of your templates from the dropdown and click Update; its contents are replaced with what's currently on screen.
(If you try New template with a name you've already used, you'll be told to use Update existing instead.)
To clear a section: click Clear (then confirm) to remove all items you've selected in that section. On the whole-visit toolbar, Clear empties every section.
Load previous (follow-ups): on the Diagnosis and Medications section headers, a Load previous button appears when the patient has an earlier visit. Click it to pull in the diagnosis / medicines from their last visit (added to the current visit, duplicates skipped) — then tweak as needed. The button is hidden for a patient's first visit.
To delete a template: open Templates ▾, click the 🗑 next to it, then confirm.
Templates are a convenience only — always review what gets added for the patient in front of you (doses, allergies, follow-up).
Previous visits: on the right of the consultation screen, the Previous Visits panel lists the patient's earlier completed visits. Click one to expand it and see the doctor seen, that visit's vitals (BP, pulse, temp, etc.), complaints, examination, diagnosis, medicines, lab tests, advice, clinical notes and follow-up — handy for follow-ups.
Printing: open the ⋮ (three-dot) menu at the top of the consultation screen and choose Print to open a clean prescription / visit summary on your hospital's letterhead, ready to print on A4. (You can also print while ending the visit — see End & Print above.)
Sharing on WhatsApp: from the same ⋮ (three-dot) menu, choose WhatsApp (only shown if the patient has a phone number on file) to open WhatsApp with a text summary (hospital name, visit date, doctor) pre-filled — you send it, nothing is sent automatically. This sends text only, not the actual PDF — use Print first if the patient needs the document itself, then attach it in WhatsApp yourself.
Medical history carried forward: for a repeat patient, past medical history is pre-filled from their last visit and marked "Carried from previous visit — review & edit if needed." Check it and correct anything out of date; it's saved with this visit once you edit or complete the consultation.
Correcting a completed visit (Addendum): a finalized consultation is read-only — you never edit a signed record. If you need to add or correct something, use the Addendum box at the top of the completed consultation to append a dated, signed note. Addenda print on the prescription. Only the doctor or owner can add one.
Common problems
- Another patient is already in progress — finish or send back the current patient first; a doctor can only consult one patient at a time.
- I ended the consultation by mistake — a completed consultation becomes read-only; add an Addendum to record the correction (see above).
How do I change the day / see yesterday's or a future day's patients?
On the Appointments page, use the previous / next day arrows (or pick a date).
- Today = live queue you can act on.
- Any other day = view only (you can look but not change the queue).
How do I download appointments to Excel?
- On the Appointments page, click the download button (next to refresh).
- Pick the From and To dates (required) — e.g. 1 Sep to 30 Sep for a month. Both start on the day you are viewing. You can export up to one month at a time.
- Pick a Doctor — it starts on the doctor you are viewing. Choose All doctors to export everyone.
- Click Export. A CSV file downloads — open it in Excel or Google Sheets.
The file has the date, patient ID, name, age, gender, phone and doctor. Online requests that are not yet accepted are not included.
How do I move an appointment to another day?
- Find the appointment in Appointments.
- Open the ⋮ menu on that row and click Reschedule (on a phone, use the Reschedule button on the card).
- Check the New date — it opens on tomorrow, since that is the usual case. Change it to any other day you need. You cannot pick a day in the past, and you cannot pick the same day it is already on.
- (Optional) Set an Arrival time — it shows on the patient's tracking link next to the new date, so it is worth filling in when you tell them a time on the phone. Hidden if you move the appointment to today, because today's appointments are ordered by token, not by time.
- (Optional) Type a Reason, e.g.
Patient travelling. You can skip it, but it is worth filling in — it is saved, so anyone can see later why the visit moved. - Click Reschedule.
Which appointments can be moved? Only ones that are Scheduled (a future booking) or Confirmed (checked in today). An appointment that is In Progress (the doctor is with the patient), Completed, Cancelled or No Show cannot be moved — book a new appointment for those instead.
If the patient was in today's queue, moving them releases their token. Everyone waiting behind them moves up one place, and the patient gets a fresh token when they check in on the new day. Nobody else's token changes.
If you move an appointment to today, the patient joins today's queue straight away with a new token, exactly as if you had just booked them in.
Important — tell the patient. OPDly does not send a WhatsApp message when you reschedule. The patient still has the message with the old date, so call them. Their tracking link keeps working and will show the new date if they open it.
How do I cancel an appointment?
Open the patient's appointment (click their row) and use the Cancel option. You'll be asked for a reason. The appointment is marked Cancelled — it is not deleted, so it still shows in records.
What are "Online Requests"?
If a patient booked through your hospital's public page (the link you share), their request lands in Online Requests — it is not in the queue yet. Patients pick a date when they book, so use the date field at the top of the page (with the ◀ ▶ arrows) to see requests for today or any other day. Open a request, check the details, and confirm it:
- If it's for today, confirming adds the patient to today's queue and gives a token right away.
- If it's for a future date, confirming just books the visit for that day — no token yet. It shows up as a scheduled appointment on that date and gets its token when the patient checks in on the day. The patient gets a WhatsApp confirmation when you confirm.
On the public page the patient can also pick a preferred time of day (Morning / Evening) and, for a future date, a preferred exact time. Both show against the request in the Preferred column so you can pick an arrival time when confirming — they're the patient's request, not a fixed slot.
This keeps you in control — nothing enters your queue without your approval. Patients can only pick a date up to 30 days ahead on the public page — this keeps requests from sitting forgotten far in the future.
If a request is confirmed after its date has already passed (nobody got to it in time), it still joins today's queue with a fresh token — you'll see a confirmation pop-up warning you the original date has passed before it goes through.
How does the patient know their turn?
If you entered their phone number, they get a WhatsApp message with a tracking link when booked. The link works until one week after the appointment date; after that it says the link has expired. The page refreshes on its own and shows:
- their token and which token is being served now;
- an expected turn time (e.g. "around 11:15 AM") and a "reach the hospital by" time, so they don't wait around unnecessarily;
- how many patients are ahead of them and how many the doctor has already seen today;
- the doctor's OPD hours for that day, if you've set OPD Timings;
- for a booking with no token yet, a note that the token is issued at reception check-in, with the time to arrive by.
- once the visit is Completed, buttons to View or Download the Prescription (only after the doctor clicks Finalize) and the Bill (all bills for that visit in one PDF, once a bill is issued). A bill added later shows up if they reload the page.
They don't need to install any app. For a same-day booking they get one WhatsApp (with the token). For a future booking they get one when booked (date + arrival time, no token) and one more with the token when you check them in. OPDly does not send a WhatsApp when their turn is near — the tracking page is the live source for that.
I sent the WhatsApp to a wrong number. How do I fix it?
- Correct the number on the patient: Patients → open the patient → Edit → fix
Phone Number (example:
9876543210) → Save. - Go to Appointments, find the appointment, and click the ⋮ menu → Resend WhatsApp (on a phone, the ⋮ is at the top right of the patient's card).
- Check the number in the message and click Yes.
The patient gets a new WhatsApp with a new link, and the old link stops working straight away — so whoever got the wrong message can no longer open it.
You can resend for a Scheduled, Waiting, In-Progress or Completed appointment up to one week after its date. It isn't shown for cancelled appointments or patients with no phone number.
Common problems
"Add a doctor first" message when booking. You need at least one doctor before booking. Click + Add Doctor, add the doctor, then come back and book.
The patient's token isn't showing. If they were booked for a future date, the token only appears after you Check in them on the day they arrive.
I can't find a patient I know I added. Try searching by phone number instead of name (or the other way round). Check the spelling. If they were added at a different date, they still appear when you search.
A change I made isn't showing on another device. Refresh the page. The queue updates live, but occasionally another device needs a reload.
Patients — Help
This section explains how to add and manage patient records. A patient record holds a person's details and all their past visits in one place.
What is a patient record?
It's the saved information about one person — name, phone, age, etc. Once a patient exists, you don't re-type their details every visit; you just search and pick them.
Note: patients belong to your hospital only. The same phone number at another hospital is a completely separate record — this is for privacy.
What is the Patient ID (like CCH-000042)?
Every patient gets a short ID automatically when they're added — a few letters for your hospital (taken from its name) plus a running number. It shows in the patient list, on the patient's page, in the appointment search, and on their prescription and bill.
- You don't type it — it's assigned for you, in order (the first patient is
...-000001). - Existing patients (added before this feature) get their IDs in registration order.
- You can change the letters or jump the number forward in Settings → Hospital Profile → Patient IDs. Changing the letters only affects patients added after the change — IDs already given out never change.
Do I need to add a patient before booking an appointment?
No. When you Book Appointment, a new patient is created automatically from the details you type there. Use the Patients section mainly to view, search, edit, or clean up patient records.
How do I add a patient directly?
- Click Patients in the left menu.
- Click Add Patient.
- Fill the form. Only a couple of fields are required; skip the rest if you don't need
them:
- Name (required) — example:
Sunita Devi. - Phone (optional but recommended) — 10 digits, no +91. Example:
9876543210. - Age or Date of Birth (optional) — age example:
45. Next to the age box, choose Y (years), M (months) or D (days) — Y is already selected. For a baby, type8and pick M, or12and pick D. - Gender (optional).
- Address (optional) — example:
Ward 4, Delhi. - Guardian Name (optional) — a parent or family member, e.g.
Ramesh Kumar. You can skip it. - Blood Group, Marital Status, Alternate Phone, Emergency Contact, Allergies, Chronic Diseases, Medical History, Insurance Number (all optional) — fill only what you actually have.
- Smoking / Alcohol / Tobacco (optional) — the patient's usual habits. Saved on their record and shown to the doctor during the consultation, so it's asked once, not every visit.
- Name (required) — example:
- Click Save.
Can two patients have the same phone number?
Yes — on purpose. In many families everyone shares one phone number, so OPDly allows it. To avoid accidental duplicates of the same person, when you type a number that already exists you get a warning with the matching names — pick the right one or continue adding a new patient.
How do I find a patient?
- Go to Patients.
- Use the search box — type a name or phone number.
- Click the patient to open their details.
How do I call a patient?
Tap their phone number — it opens your phone's dialer with the number filled in. This works wherever a phone number is shown: the Patients list, the patient's page, Appointments, the consultation screen, bills and lab results. Staff, doctor, supplier and referrer numbers work the same way.
Common problems
- Nothing happens when I click the number on a computer — a computer can only call if it has a calling app set up (like Phone Link on Windows or FaceTime on a Mac). Use your phone instead.
How do I edit a patient's details?
- Open the patient from the Patients list.
- Click Edit.
- Change what you need and click Save.
How do I see a patient's visit history?
Open the patient's record — you'll see their past appointments, which doctor they saw, and their billing/payment status for each visit.
How do I delete a patient?
- Open the patient (or use the delete action in the list).
- Confirm the delete.
The patient is not erased permanently — it's moved to "recently deleted" and can be restored. Anyone allowed Delete patient in Settings → Roles & Permissions can delete (everyone, until the owner changes it). Only the Owner can restore.
I deleted a patient by mistake. Can I get them back?
Yes. Switch the Patients list to the recently deleted view and click Restore on that patient. (Owner only.)
How do I export all my patients to a file?
- Go to Patients.
- Click the download icon (next to the "+" button, above the list).
- A file named
patients-<date>.csvdownloads — open it in Excel or Google Sheets.
This exports every patient that isn't deleted, with columns like name, phone, age, gender, blood group, and address. It does not include allergies, chronic diseases, or medical history notes — those stay in the app only.
How do I bulk-add patients from a spreadsheet?
- Go to Patients.
- Click the upload icon (next to the "+" button, above the list).
- Click Download template to get a sample file with the right column names, or use
your own file with columns like
name,contactNumber,age,ageUnit,gender,address.ageUnitisY(years),M(months) orD(days) — writingYears,MonthsorDaysalso works. You can skip it and the age counts as years. Only name is required — leave the rest blank if you don't have it. - Click Choose CSV file and pick your file.
- Click Import.
You'll see how many patients were added and how many rows had a problem (with the reason for each, e.g. an invalid phone number) — fix those rows in the file and import again if needed.
Common problems
- The age shown is higher than what I typed. That's expected. The age you type is the age on that day, and OPDly keeps counting it up, so a child saved as 5 two years ago now shows 7. A baby's age moves from days to months, and after 2 years to years.
- A row didn't import. Check the phone number is a 10-digit Indian mobile starting 6–9, and the name is at least 3 characters. The error message next to that row tells you exactly what's wrong.
- I imported the same file twice by mistake. Since phone numbers can repeat (families share numbers), OPDly won't detect this as a duplicate automatically — you'll see the same patients twice. Delete the extra ones from the Patients list.
- Import created blank/wrong-looking entries. Open the CSV in a plain text editor (not Excel) to check the column headers match the template exactly, especially if you built the file yourself.
Billing — Help
This section explains how to create bills, take payments, give refunds, and print or share a bill. This is where money is recorded, so read it carefully once.
What is the Billing section for?
To make a bill (invoice) for anything you charge a patient — consultation fee, dressing, X-ray, procedure, etc. You can take the payment on the same screen, print the bill, and share it on WhatsApp.
How do I create a bill?
Click Billing in the left menu.
Click Create Bill.
Type the Patient Name (required), e.g.
Ramesh Kumar, and optionally the Phone (you can skip it). Matching patients appear below as you type:- Tap the right one to bill it to their record.
- Nobody matches? Carry on. They're added to your patients automatically when you create the bill, so next time you just pick them.
Opening this from an appointment or a patient selects that patient for you.
(Optional) Pick a Doctor — if that doctor has a consultation fee saved, a line like Consultation - Dr. Sharma with the fee is added for you. You can change or remove it.
Add the bill items (the things you're charging for):
- Item / Service (required) — example:
Consultation fee,X-Ray,Dressing. If the owner has saved it in Settings → Service Catalog, it shows up as you type — tap it and the price and tax fill in for you. You can still type anything that isn't in the list. - Qty (required) — how many. Example:
1. - Amount (required) — price per item in ₹. Example:
300. - Discount (optional) — per line; tap to switch between ₹ or %. Example:
10%or₹50. Leave0for no discount. - Click + Add to add more lines.
- Item / Service (required) — example:
(Optional) Extra Discount — a discount on the whole bill (₹ or %).
(Optional) Round Off — rounds the total to a clean figure automatically.
Review the Grand Total at the bottom.
Click Create to save the bill (unpaid), or Pay to save and record the payment together.
How do I make a bill for an earlier date?
Use this for a visit that was not billed on the day — for example, old paper bills you are now entering.
- Open Create Bill as usual.
- Click Back-date this bill (under Doctor), then pick the Bill Date — the day the
service was given. Example:
20 Sep. Changed your mind? Click Remove and the bill is dated today. - Fill the bill as usual, then:
- Patient already paid on that day — enter the Paid Amount and click Pay. The money shows in that day's collection.
- Patient has not paid yet — set Paid Amount to
0and click Create. When the money comes, open the bill and click Record Payment — it counts on the day you receive it.
Rules:
- Only up to 30 days back, and not before 1 April (the start of the financial year).
- Pharmacy bills cannot be back-dated.
- The bill gets the next bill number, like any new bill. The bill PDF still shows the real entry date next to Created on.
- Don't see Back-date this bill? Your role is not allowed to back-date bills — ask the owner (Settings → Roles & Permissions → Back-date bill).
How do I take the payment?
You can pay while creating the bill, or later:
- Enter the Paid Amount (required for payment) — example:
300. - Choose the Payment Mode — Cash, UPI, or Card.
- Click Pay.
The bill status becomes Paid (or Partial if you paid less than the total).
When you record a payment from an open bill (Record Payment), you go back to the list you came from (Lab orders, Pharmacy sales, or Bills). To print the receipt, open the bill again.
If the patient will pay later, click Pay Later on the bill screen instead. Nothing is recorded and the bill stays unpaid — you just go back to the list you came from (Lab orders, Pharmacy sales, or Bills). Open the bill again whenever the money comes in.
What do the money words mean?
- Subtotal — total of all items before extra discount.
- Discount — money taken off (per item or whole bill).
- Extra Discount — a discount applied to the whole bill.
- Round Off — small adjustment to reach a clean total (e.g. ₹298 → ₹300).
- Grand Total — the final amount to be paid.
- Paid Amount — what the patient actually gave.
- Balance Due — what's still unpaid (Grand Total − Paid).
Why does my bill not show on the Consolidated Bill?
A bill only appears on a visit's Consolidated Bill if it is linked to that visit.
Open the bill and look at the line under the bill number:
- "Part of the visit on Mon, 8 Sep" — linked. It will appear on the combined bill.
- "Not linked to a visit" — it will not appear on any combined bill.
A bill gets linked automatically when you start from the visit — the Create Bill button on the appointment or consultation screen, the pharmacy Prescriptions list, or Lab → Advised from OPD.
If you go to Billing → Create Bill and pick the patient yourself, OPDly checks whether that patient has a visit today. If they do, you'll see "Add to today's visit" already ticked, with the doctor's name below it — leave it ticked. Untick it only for something genuinely unrelated to the visit.
If the patient has seen more than one doctor today, you'll get a dropdown instead — pick the right visit. Nothing is attached until you choose, because putting the bill on the wrong doctor's visit is as wrong as leaving it unlinked.
A bill cannot be linked to a visit after it is saved. If you notice afterwards that a bill isn't linked, cancel it (refund the payment first if one was taken) and create it again from the visit.
Why can't I change the items on a bill?
Once a bill has any payment recorded against it — even a part payment — its items and amounts are locked. The same applies to a pharmacy sale, because the medicines have already been taken out of stock. On a locked bill you can still change the note and the doctor; everything else is greyed out.
This protects you: if the items could be changed after money was taken, the bill would no longer match what the patient actually paid for.
If the patient is taking something extra, make a separate bill for it. Both bills appear together on the visit's Consolidated Bill.
If the bill itself is wrong, refund the payment, cancel the bill, and create it again correctly.
I picked the wrong payment mode (Cash instead of UPI). Can I fix it?
- Open the bill from the Billing list.
- In the Payments table, click Change next to the mode.
- Pick the correct mode. It saves straight away.
The amount and the bill's status do not change — only the mode. Refund entries and cancelled bills cannot be changed. Every change is recorded in the Audit Log.
How do I give a refund?
- Open the bill from the Billing list.
- Click Refund.
- Add a reason / note and confirm.
Note: refund is currently full-amount only. A refunded bill shows ₹0 due (the money is returned, not an outstanding balance).
How do I cancel a bill?
- Open the bill.
- Click Cancel and confirm.
A cancelled bill is marked Cancelled (void) — it stays in records but doesn't count as money collected. Use this for a bill made by mistake.
How do I print a bill or save it as PDF?
Open the bill and click Print (or Bill Cum Receipt). A clean, branded bill opens with your hospital name, address, and a QR code. From the print window you can print on paper or Save as PDF.
What is a Consolidated Bill?
If one visit has more than one bill — say a consultation bill, a pharmacy bill, and a lab bill, all for the same appointment — each stays separate for payment and records (nothing changes there). A Consolidated Bill is just a single printable statement that groups all of them together with one combined total, so the patient (or you) can see the whole visit at a glance instead of three separate papers.
You can open it from any of these places (it shows only once at least one bill exists for the visit, and only if you have billing access):
- Consultation screen — the ⋮ (more actions) menu → Consolidated Bill.
- Appointments list — the ⋮ menu on the appointment row (on mobile, the Consolidated Bill button on the appointment card).
- Bills list — the ⋮ menu on the row → Consolidated Bill, for any bill that belongs to a visit.
Click Print / Share on the statement, the same menu as on a single bill:
- Generate PDF — downloads the statement as a PDF.
- Thermal receipt (58mm) — prints one receipt with every bill number, every item and the combined total, for a counter printer.
- WhatsApp — opens WhatsApp on the patient's chat with each bill number and amount plus the total, paid and due filled in. Press Send yourself. No phone number on the patient? It opens WhatsApp so you can pick the chat.
It's a summary only — you still record payments, refunds, and returns on each individual bill as usual.
How do I send the bill to the patient on WhatsApp?
Open the bill and click WhatsApp. It opens WhatsApp with the bill details ready to send. (You send it manually from your own WhatsApp.)
You can also do it straight from the Bills list: click the ⋮ button on the bill and choose WhatsApp. The same menu has Thermal receipt (58mm) to print the receipt without opening the bill.
How do I find or filter old bills?
On the Billing list:
- Use the date presets (Today, This Month, etc.) or pick a date range.
- Use the search box (patient name/phone).
- The summary cards at the top, for the chosen dates: Billed, Collected (after refunds), Refunded and Outstanding (still to collect). Billed = Collected + Refunded + Outstanding, and they are the same numbers as Reports → Finance reports. Tap a card to list exactly the bills behind that amount (tap it again to see all bills). Picking a bill type (e.g. Lab) narrows the cards too. Drafts and cancelled bills are not counted in the cards.
- Click Export CSV to download the list as a spreadsheet.
Common problems
A day's collection changed after we closed the cash. Someone made a back-dated bill with a payment for that day. Check Audit Logs to see who and when.
My service doesn't show up when I type it. It isn't in the Service Catalog yet. Ask the owner to add it in Settings → Service Catalog, or just type the name and price by hand.
Scrolling the page changes a quantity or amount I typed. Fixed. Number fields no longer respond to the mouse wheel or the up/down arrow keys, so a figure you've entered stays put while you scroll. If you ever see one change on its own, tell us.
The doctor's fee didn't fill in automatically. Make sure you selected a Doctor, and that the doctor has a consultation fee set in their profile (see Doctors & Staff). Quicker: type the fee on the Consultation line and keep Save ₹… as the doctor's consultation fee ticked (shown to the owner and to that doctor). It fills in by itself from the next bill.
I can't create a bill — a message about subscription appears. Your plan may have expired. Bills can't be created on a suspended account. See Account & Subscription, or contact OPDly.
The total looks wrong. Check each line's Amount and Discount, and whether an Extra Discount or Round Off is applied — they all change the Grand Total.
Pharmacy — Help
This section explains how to sell medicines, manage stock, and record purchases from suppliers. It handles real money and real stock, so read it once carefully.
The Pharmacy menu only appears if pharmacy is enabled for your hospital (see Settings).
What can I do in Pharmacy?
- See the dashboard (Pharmacy → Dashboard) — today's numbers and stock health at a glance.
- Sell medicines to a patient/customer (the billing counter — New Sale).
- Manage medicines & stock (add medicines, see quantity, prices, expiry).
- Record purchases you bought from suppliers (this adds stock).
- Manage suppliers.
What does the Pharmacy dashboard show?
Open Pharmacy → Dashboard for a quick overview. At the top it opens on Today. Tap Yesterday, This Week, This Month or This Year, or tap Custom, choose a From / To date and click Apply — the sales figures update to that period. It has:
- For the selected period — Sales (money billed + number of bills), Purchases (recorded), Profit (estimated — selling price minus what the stock cost you), and Top selling medicines. Stock value is always current (not affected by the dates).
- Alerts — how many medicines are low on stock, out of stock, expired, or expiring within 90 days. Tap Low stock / Out of stock to jump to the medicine list.
- Near expiry — batches with stock, split into already expired and within 30 / 60 / 90 days, so you can return or use them before they're wasted.
Stock and near-expiry numbers are always "right now" — they don't change with the date range. Everything here is read-only — nothing to fill in.
How do I sell medicines (make a sale)?
Click Pharmacy → New Sale.
The buyer (optional): type the Patient Name, e.g.
Ramesh Kumar. Matching patients appear as you type; tap one to bill the sale to their record.- A new name is added to your patients automatically when the sale is saved.
- Leave the name empty for a quick Cash sale. Nobody is saved.
- If the Phone already belongs to a patient, a yellow box lists them. Tap Use on the right person. If it's someone else sharing the number, ignore the box.
Opening this from an appointment or a patient selects that patient for you.
Add medicines to the sale — two fast ways in the Search or scan barcode box:
- Scan the barcode with a USB/Bluetooth scanner — the medicine is added instantly.
- Type a name (or generic name), then use the ↑/↓ arrow keys to highlight a medicine in the list and press Enter to add it — no need to reach for the mouse. If you press Enter without highlighting anything and there's a single match, it's added straight away.
- When New Sale opens, the cursor is already in this box, so you can scan or type right away.
- Choose the Unit (e.g. Strip or Tablet) if the medicine is sold in packs —
the system converts to stock automatically. Set the Qty in that unit (example:
2strips). The Stock column shows the pack breakdown (e.g.9 Box · 7 Strip). - (Optional) choose a Batch — leave it on Auto (FEFO) to sell the earliest-expiry stock first, or pick a specific batch (shows batch no · expiry · stock left) to dispense from that batch.
- (Optional) add a per-line Discount (₹ or %).
(Optional) Add a whole-bill Bill discount and Round off.
Check the Estimated Total.
Collect the payment:
- Keep Collect full payment now ticked (the normal case) and choose the Mode
(Cash, UPI, Card or Other). Then pick one:
- Pay & Print — collects the full bill and prints a 58mm receipt automatically.
- Pay — collects the full bill without printing (e.g. you're texting the bill, or the card machine's own slip is enough). Either way the sale is marked paid and you are taken to Pharmacy → Sales, where the new sale is at the top.
- If the patient will pay later, untick it and click Create Bill (collect later) — the sale is created unpaid and the invoice opens so you can collect there.
- Keep Collect full payment now ticked (the normal case) and choose the Mode
(Cash, UPI, Card or Other). Then pick one:
Important: the system automatically sells from the batch that expires first, and it will never sell expired stock.
Printing the bill: on the bill screen you can Generate PDF (A4) or tap Thermal to print a compact 58mm receipt on a thermal roll printer.
A doctor prescribed medicines during a consultation — how do I dispense them?
When a doctor writes a prescription in the consultation screen, it shows up on the Pharmacy → To Dispense page (the queue of patients waiting for their medicines).
- Find the patient in that list — you'll see the doctor and the prescribed medicines (as chips).
The list shows the last 2 days, because medicines are almost always collected the
same day. Use the search box above the list (optional) to type the patient's name,
their phone (e.g.
9876543210), their patient ID (e.g.CCH-000042), or the doctor's name — the search looks at all prescriptions, not just the last 2 days. The queue shows a page at a time — use Previous / Next at the bottom, and the number beside the To Dispense heading is the full count waiting. - Click Dispense. The New Sale screen opens with the patient already filled in;
any prescribed medicine that's in your stock is added to the cart automatically,
pre-filled with the quantity the doctor's prescription works out to (dose × times per
day × days) — e.g.
1-0-1for 2 days fills 4 tablets. - The full prescription (with dosage/duration and the computed Qty) is shown in a note at the top — check the quantities and the Unit (Strip / Tablet, for medicines sold in packs), adjust if needed, and add any medicine that wasn't in stock or wasn't added.
- Complete the sale as usual.
Once you complete the sale, that patient drops off the To Dispense list.
Patient not buying here? Click Skip on that row to remove it from the queue without creating a sale (e.g. they bought the medicines elsewhere). This only clears it from the dispense list — the doctor's prescription record is untouched.
Common problems
- A prescribed medicine isn't in the cart — it's not in your stock yet. Add it to your catalog/stock, then search for it and add it to the sale.
- An older prescription is not in the list — the queue only shows the last 2 days. Nothing has been deleted. Search for the patient by name or phone, or open their visit from Appointments and print the Rx from the consultation. You can still sell the medicines through New Sale as usual.
How do I add a new medicine?
- Go to Pharmacy → Medicines & Stock.
- Click Add Medicine — the form opens on its own page.
Tip: type the brand in Find in OPDly catalog (e.g.
Dolo 650) and click it — the form fills in by itself. Check the name, strength and pack against your box, then save. Items you already have show Already added. - Fill the form (only Name is required — you can skip the rest):
- Name (required) — example:
Crocin 500. - Generic name (optional) — the salt/molecule. Example:
Paracetamol. Lets you search by salt too. - Manufacturer (optional) — example:
GSK. - Category (optional) — what kind of product it is. Example:
Medicines,Surgical Items,IV Fluids. - Type (optional) — the form: Tablet, Capsule, Syrup, Injection, Inhaler, Spray, Gel,
Suppository, and for homeopathy Globules, Dilution or Tincture (mother tincture), etc. Doctors get
matching dose suggestions when prescribing it (e.g.
5 mlfor a syrup). - Schedule (optional) — drug schedule (
H,H1,X,G) orNone / OTC. - Base unit (optional) — pick the smallest unit you count stock in. Example:
Tablet/Bottle. All stock is stored in this unit. - Rack / location (optional) — where it's stored. Example:
A-12. - Barcode (optional) — the pack barcode. Example:
8901234567890. Lets you scan the medicine at the counter later. - HSN (optional) — GST HSN code that appears on invoices. Example:
3004. - Tax % (optional) — GST on the MRP; pre-filled from your hospital default if set.
- Packaging / Units (optional) — add this only if you buy or sell in packs. Click
Add Packaging, pick the pack name (Strip, Box, Pack…) and enter how many of the previous unit it contains.
Examples:
Stripcontains10Tablet, thenBoxcontains10Strip ·Boxcontains12Bottle ·Packcontains10Piece. You can add up to 2 packs; click ✕ to remove one. A live hint shows1 Strip = 10 Tablet · 1 Box = 100 Tablet. Turn on Allow loose sale to sell single base units. Leave it empty for a simple single-unit item. - Reorder level (optional) — warns you when stock is low. Example:
10. - Min stock / Max stock (optional) — your planning floor/ceiling.
- Has expiry date (on by default) — turn it off only for items that never expire, like a BP machine, thermometer or crepe bandage. You then won't be asked for an expiry when adding stock or recording a purchase, and the item never shows in expiry alerts. Leave it on for every medicine.
- Name (required) — example:
- Click Add Medicine. You're taken back to the medicine list. Click Cancel to go back without saving.
To edit a medicine: click the ⋮ menu on its row → Edit. The same page opens with its details filled in; change what you need and click Update Medicine.
Finding a medicine in a long list: the list shows a page at a time with page numbers at the bottom — click a number, or Previous / Next, to move through your catalogue. To find one medicine quickly, type in the Search box (name, generic name or barcode) — the list updates as you type, starting again from page 1. To see only one kind of item (e.g. only Surgical Items or Homeopathic), pick it in the All categories box next to the search.
This screen only creates the medicine in your catalogue. To add actual stock (batch, MRP, expiry, quantity), use Batches on that medicine, or Record a Purchase — see below.
How do I add a similar medicine quickly (Duplicate)?
- Go to Pharmacy → Medicines & Stock.
- Click the ⋮ menu on the medicine you want to copy → Duplicate.
- The Add Medicine page opens with every field filled in from that medicine (except Barcode — each product has its own).
- Change what's different — usually just the name, e.g.
Crocin 650instead ofCrocin 500. - Click Add Medicine.
The original medicine is not changed.
How do I add homeopathic medicines?
Add one item for each potency and bottle size — e.g. Arnica Montana 30C in 30ml and Arnica Montana 200C in 30ml are two separate items, each with its own stock and price.
- Click Add Medicine.
- Name (required) — the medicine and bottle size. Example:
Arnica Montana 30ml. - Category — choose Homeopathic. A Potency box appears.
- Potency (optional) — pick it (e.g.
30C,200C,1M,Qfor mother tincture). It is added to the name for you:Arnica Montana 30ml 30C. This way the potency shows on the bill and in search. - Base unit — Bottle for sealed bottles, or Dram for ready-made globule vials.
Type — Dilution, Globules or Tincture (for Q / mother tincture), so the doctor
gets matching dose suggestions (e.g.
5 drops,4 pills). - Keep Has expiry date on.
- Click Add Medicine.
Adding the other potencies: use ⋮ → Duplicate on the one you just added and only
change the Potency — the name updates by itself (30C → 200C).
Finding it at the counter: in New Sale, type the name and potency in any order, e.g. arnica 200 or nux 30. Typing just arnica lists every potency.
Common problems
- You can't sell a few drops from a bottle — OPDly sells whole units only. For globules you prepare in advance, add them as their own item with Base unit Dram.
How do I import many medicines at once (CSV)?
- Go to Pharmacy → Medicines & Stock and click Import CSV.
- Click Download template to get a sample file with the right columns, fill it in Excel, and save as CSV.
- Choose your file and click Import.
- You'll see a summary — added / updated / skipped — and any rows that had a problem (with the row number and reason). Fix those rows and re-import if needed.
Notes:
- Only name is required; every other column is optional.
- A medicine with the same name is updated (only the columns you filled); new names are added — so re-importing is safe.
- Columns: name, genericName, manufacturer, category, type, schedule, hsn, taxRate, unit
(base, e.g.
Tablet), stripUnit + basePerStrip (first pack, e.g.Strip,10), boxUnit + stripsPerBox (second pack, e.g.Box,10), allowLooseSale (yes/no), hasExpiry (yes/no— putnofor items that never expire, like a BP machine; leave blank foryes), reorderLevel, barcode, rackNo. - Stock and price are not imported — add those with a Purchase (which handles the box/strip conversion correctly).
How do I add more stock to an existing medicine?
Two ways:
Record a Purchase (see below) — best when you bought stock from a supplier; it keeps a proper record of what you bought and from whom.
Add a batch quickly (no supplier record) — for opening stock or a small correction:
- Go to Pharmacy → Medicines & Stock and find the medicine.
- Click the ⋮ (More actions) on its row → Batches. The Batches & Stock page opens.
- In the Add Stock form at the top, enter the batch number, expiry, the Unit you're entering in (e.g. Box, Strip, or the loose unit like Tablet — only shown if the medicine has pack sizes set up), quantity, cost price and MRP.
- Save — the stock is added to that medicine.
For an item with Has expiry date turned off, the Expiry field is hidden — just skip it. The batch shows No expiry in the list.
Important: enter the MRP/cost as printed on whatever unit you picked — e.g. if you picked Box and the box says MRP ₹100, just type
100; you do not need to divide it yourself. The system converts it to a per-tablet price automatically using that medicine's pack size (tablets per strip × strips per box, set in Packaging / Units on the medicine's edit screen). If a medicine has no pack size configured, only the loose unit shows and you enter the per-unit price directly.
How do I adjust stock (correction / write-off)?
Use this for corrections (damage, count mismatch, expiry write-off):
- Go to Pharmacy → Medicines & Stock and find the medicine.
- Click the ⋮ (More actions) on its row → Batches. The Batches & Stock page opens. (You can also open it from Pharmacy → Alerts — click Manage on a medicine.)
- On the batch you're correcting, click Adjust and fill in:
- Quantity change (required) — use a minus to reduce. Example:
-5. - Reason (required) — example:
Expired / damaged. - Note (optional) — a reference or remark.
- Quantity change (required) — use a minus to reduce. Example:
- Click Save.
Adjustments are recorded — nothing is silently changed.
Note: the Batches list only shows batches that still have stock, by default — once a batch is fully sold or written off, it drops out of this view so the list doesn't grow forever. To look up an old sold-out batch, tick Show sold-out / history at the top of the page. An expired batch that still has unsold stock always stays visible (so you don't miss writing it off). Click Back to return to where you came from.
How do I record a purchase from a supplier?
- Go to Pharmacy → Purchases.
- Click New Purchase.
- Pick the Supplier (add one first if needed — see below).
- Add each medicine line: which medicine, batch, expiry, the Unit you bought in
(e.g. Box), quantity, cost price, MRP, and GST/tax if applicable.
If the medicine has packs configured, a hint shows how much base stock it adds
(e.g.
10 Box = 1500 Tablet). Items with Has expiry date turned off show No expiry instead of an expiry box. - Save. Stock is added automatically in base units for each line.
A purchase is a permanent record — to correct a mistake, use a stock adjustment rather than editing history.
How do I return goods to a supplier?
If stock arrived damaged, near expiry, or wrong:
- Go to Pharmacy → Purchases and open the purchase (tap the row).
- Click Return items.
- Enter the Return qty against each line you're sending back (you can't return more than you received minus what's already returned).
- (Optional) add a Reason, then Confirm return.
This reduces stock for those batches and lowers the supplier's outstanding balance (it's recorded as a debit note with its own PR number).
How do I add a supplier?
- Go to Pharmacy → Suppliers.
- Click Add Supplier.
- Enter the supplier's name (required). Optional details you can add:
Contact person, Phone, Email, GSTIN, Drug licence no.,
Payment terms (e.g.
Net 30), Opening balance (what you already owe them), and Address. - Save.
How do I see what I owe a supplier (ledger)?
- Go to Pharmacy → Suppliers and click Ledger on the supplier.
- The top shows Outstanding, plus totals for Purchases, Returns and Paid.
Outstanding = Opening balance + Purchases − Returns − Payments.
- Click Record payment to log money you paid them (amount, mode, reference, note).
- The transaction list shows every purchase, return and payment in date order.
How do I find an old sale?
Go to Pharmacy → Sales. Four boxes above the list narrow it, and you can use any combination of them:
- Search (optional) — the patient's name, their phone, their patient ID
(e.g.
CCH-000042), or the bill number from their receipt. - From / To (optional) — the days the sale was made. Filling only From means "from that day onwards"; only To means "up to that day". These are your own working days, so To = today includes everything sold today, right up to closing.
- Status (optional) — e.g. only Paid, or only Refunded.
- Clear — appears once any box is in use, and empties all of them.
You can skip all four; with nothing filled you get every sale, newest first.
Common problems
- Today's sales are missing — check the To date is today or later, and clear the Status box.
- I only know the medicine, not the patient — the search does not look inside the bill's medicines. Use a date range instead, or find the patient first.
- "Too many people match…" — a very common name (e.g.
Singh) matches more patients than OPDly will search through at once, so the list you see may be missing someone. Type the phone number or the patient ID instead, which is always exact.
How do I do a return / refund on a pharmacy sale?
- Go to Pharmacy → Sales and find the sale (see the section above).
- Click the ⋮ menu on the sale → View to open the bill (the menu also has Edit, Consolidated Bill, Download PDF, Thermal receipt (58mm) to reprint the receipt, and WhatsApp to send the bill to the customer).
- Click Return Items, enter the quantity to return against each medicine, and confirm.
Returned medicines go back into stock, and any discount is refunded fairly (pro-rata). This is recorded. (To return goods to a supplier instead, see How do I return goods to a supplier? above.)
How do I know what stock is low or expiring?
Open Pharmacy → Alerts — one screen with four tabs:
- Expiring — batches nearing expiry, with a 30 / 60 / 90 day filter, days left, stock and value. Use the Manage button to write off or adjust a batch on the spot.
- Expired — batches that have passed expiry but still show stock. Use Write off to remove them (expired stock is never sold, but it still inflates your stock count until written off).
- Low stock — medicines at or below their reorder level. Reorder these soon.
- Out of stock — medicines with zero stock. Manage opens the batches so you can add stock (or record a purchase).
The Pharmacy → Dashboard shows the counts for all of these; tap a card to jump straight to the matching tab. The medicine list also still shows each medicine's current quantity.
What reports can I get?
Open Pharmacy → Reports. Pick a tab, set a From / To date range (blank = current month), then Apply. Use Export CSV to download the current report for Excel/Tally.
- Sales register — every pharmacy bill in the period with taxable value, CGST, SGST and total. A totals row sums the columns (useful for GST filing).
- Purchase register — every purchase with taxable value and CGST / SGST / IGST split (IGST shows for inter-state purchases).
- Stock register — current batch-wise stock with quantity, cost, MRP and value; expired batches are flagged in red. Totals show units, batches, value and expired count.
- Fast / slow moving — your best- and worst-selling medicines by quantity in the period.
Common problems
Scrolling the page changes a quantity or amount I typed. Fixed. Number fields no longer respond to the mouse wheel or the up/down arrow keys, so a figure you've entered stays put while you scroll. If you ever see one change on its own, tell us.
A medicine won't add to a sale / shows out of stock. It may be out of stock or the only batches are expired (expired stock is never sold). Record a purchase to add fresh stock.
Pharmacy menu is missing. Pharmacy is turned off for your hospital. The Owner can enable it in Settings → Update Profile → Profile Facilities.
Pharmacy: Add Items & Stock (Easy Guide)
This guide shows, step by step, how to add a medicine or any pharmacy item, and how to add its stock.
First, understand 2 simple things
- Add Item — you do this only once for each product. It is like making the product's ID card.
Example:
Crocin 500. - Add Stock — you do this every time new stock comes in. You tell how many you got, the price and the expiry month.
First add the item. Then add its stock. You can sell it only when it has stock.
How do I add a new item?
- Go to Pharmacy → Medicines & Stock.
- Click the blue Add Medicine button.
- Easiest way — use the catalog: in Find in OPDly catalog at the top, type the brand
name, e.g.
Dolo 650. Click your medicine in the list. The whole form fills in for you.- Check the name, strength and pack against the box in your hand, then go to step 7.
- It says Already added? You already have it — clicking it opens your existing item.
- Not in the list? Just fill the form yourself (next step).
- Fill the form. Only Name is a must — you can skip the rest, but filling them helps.
| Field | What to write | Example |
|---|---|---|
| Name (required) | Product name + strength or size | Crocin 500, Benadryl Syrup 100ml |
| Generic name (optional) | The salt / medicine inside | Paracetamol |
| Manufacturer (optional) | Company name | GSK |
| Category (optional) | What kind of item it is — see the table below | Medicines |
| Type (optional) | The form of the medicine — see the table below | Tablet |
| Schedule (optional) | Printed on the pack as H, H1 or X. If nothing is printed, pick None / OTC | H |
| Base unit (optional) | The smallest piece you count | Tablet, Bottle, Piece |
| Rack / location (optional) | Where you keep it | A-12 |
| Barcode (optional) | Scan the barcode on the pack | 8901234567890 |
| HSN (optional) | GST code (ask your accountant) | 3004 |
| Tax % (optional) | GST % on this item | 12 |
- Packaging / Units — only if you buy or sell it in strips / boxes. See "How do I fill Packaging?" below. Otherwise skip it.
- Keep Has expiry date ON for medicines. Turn it OFF only for things that never expire (BP machine, thermometer, walking stick, scissors). Keep Active ON.
- Click Add Medicine. Done! You go back to the list.
What should I select for my item?
Find your item in this table and copy the choices.
| Your item | Category | Type | Base unit | Has expiry |
|---|---|---|---|---|
| Tablet (Crocin, Dolo) | Medicines | Tablet | Tablet | ON |
| Capsule | Medicines | Capsule | Capsule | ON |
| Syrup / suspension | Medicines | Syrup | Bottle | ON |
| Injection | Medicines | Injection | Vial or Ampoule | ON |
| Eye / ear / nose drops | Medicines | Drops | Bottle or Dropper | ON |
| Cream / ointment | Medicines | Cream or Ointment | Tube | ON |
| Gel / lotion | Medicines | Gel or Lotion | Tube or Bottle | ON |
| ORS / powder sachet | Medicines | Powder | Sachet | ON |
| Inhaler | Inhalers | Inhaler | Piece | ON |
| Nasal spray | Medicines | Spray | Bottle | ON |
| Suppository | Medicines | Suppository | Piece | ON |
| IV fluid (NS, RL, DNS) | IV Fluids | Solution | Bottle | ON |
| Gloves | Surgical Items | Other | Pair | ON |
| Syringe, cannula, sutures | Surgical Items | Other | Piece | ON |
| Cotton, gauze, mask | Medical Consumables | Other | Piece or Roll | ON |
| Crepe bandage | Medical Consumables | Other | Roll | OFF |
| BP machine, thermometer, glucometer | Medical Devices | Device | Piece | OFF |
| Sugar test strips, pregnancy kit | Diagnostics / Test Kits | Other | Piece or Kit | ON |
| Diapers, baby oil | Baby Care | Other | Piece or Bottle | ON |
| Shampoo, serum, hair oil, soap | Personal Care | Other | Bottle or Piece | ON |
| Toothpaste, mouthwash | Dental Care | Other | Tube or Bottle | ON |
| Ayurvedic medicine (Liv.52) | Ayurvedic / Herbal | Tablet or Syrup | Tablet or Bottle | ON |
| Homeopathic liquid (Arnica 30C) | Homeopathic | Dilution | Bottle | ON |
| Homeopathic mother tincture (Q) | Homeopathic | Tincture | Bottle | ON |
| Homeopathic pills (globules) | Homeopathic | Globules | Dram or Bottle | ON |
| Protein powder, vitamins | Nutrition / Supplements | Powder or Tablet | Jar or Tablet | ON |
| Walking stick, anything else | Other | Other | Piece | OFF |
Not sure? Pick Other. You can change it later with Edit.
How do I fill Packaging?
Packaging tells OPDly how your small pieces are packed.
Rule: start from the smallest piece (the Base unit) and go bigger.
Example — Crocin 500 (15 tablets in a strip, 10 strips in a box):
- Base unit = Tablet.
- Click + Add Packaging → pick Strip → type
15→ it reads "Strip contains 15 Tablet". - Click + Add Packaging again → pick Box → type
10→ it reads "Box contains 10 Strip". - You will see: 1 Strip = 15 Tablet · 1 Box = 150 Tablet. Check it is right.
More examples:
| Item | Base unit | Packaging |
|---|---|---|
| Cough syrup (12 bottles in a box) | Bottle | Box contains 12 |
| Injection (10 vials in a box) | Vial | Box contains 10 |
| Gloves (50 pairs in a box) | Pair | Box contains 50 |
| ORS (5 sachets in a pouch, 10 pouches in a box) | Sachet | Pouch contains 5, then Box contains 10 |
| Crepe bandage (12 rolls) | Roll | Dozen contains 12 |
| Thyroid tablets (120 in a bottle) | Tablet | Bottle contains 120 |
| BP machine | Piece | (no packaging) |
- Allow loose sale ON = you can sell single tablets from a strip. Turn it OFF if you only sell full packs.
- You can add up to 2 packaging levels. Click ✕ to remove one.
How do I add stock?
Do this every time new stock arrives.
- Go to Pharmacy → Medicines & Stock.
- Search your item. Click the ⋮ on its row → Batches.
- The Add Stock form is already open at the top. Fill it:
| Field | What to write | Example |
|---|---|---|
| Batch No (required) | Printed on the pack as "Batch No" or "B.No" | CR2409 |
| Expiry (required for medicines) | Pick the month and year printed as "Exp" or "Use before". No date needed — the medicine is valid till the end of that month | Dec 2027 |
| Unit (required) | How you are counting what you got | Box |
| Qty (required) | How many of that unit you got | 4 |
| MRP (required) | MRP printed on that unit | 450 |
| Cost (optional) | What you paid for that unit | 380 |
- Click Save Stock. The new batch shows in the list, and the form clears so you can add the next batch.
Under MRP and Cost you will see the price of a single piece — e.g. MRP ₹450 per Box shows = ₹3 per Tablet — so you can check it is right before saving.
Very important — Unit and MRP go together:
- If you picked Box, type the MRP printed on the box. Do not divide it yourself.
- OPDly works out the price of one strip and one tablet by itself.
- Example: 4 Box of Crocin, MRP ₹450 per box → OPDly adds 600 tablets at ₹3 each.
No expiry item (BP machine, bandage)? The Expiry box does not show. Just skip it.
Bought from a supplier with a bill? Use Pharmacy → Purchases → New Purchase instead. It adds the stock and keeps the supplier bill record.
How do I correct wrong stock (damaged / expired / miscount)?
- Open the item's Batches page (⋮ → Batches).
- On the batch, click Adjust.
- Qty change — type with a minus to reduce. Example:
-5for 5 damaged. - Reason — pick Damage, Expiry write-off, Correction or Other.
- Click Save.
Common problems
- "Expiry date is required" — the item has Has expiry date ON. Type the expiry. If the item really never expires, Edit the item and turn Has expiry date OFF.
- The price at the counter is too high / too low — the MRP was typed for the wrong unit (for example, box MRP with Unit = Tablet). Use Adjust to remove that stock (minus quantity) and add it again with the right Unit.
- I don't see Strip / Box in the Unit list — the item has no Packaging. Edit the item and add it.
- I can't find my item at the counter — check its Active switch is ON, and that it has stock.
- Same product in 2 sizes (100ml and 200ml) — add them as 2 separate items. Use ⋮ → Duplicate to copy the first one and just change the name.
Lab / Diagnostics — Help
This section explains how to take lab test orders, bill them, upload reports, and share reports with patients. The Lab menu only appears if lab is enabled for your hospital (see Settings).
What can I do in Lab?
- See today at a glance on the Lab Dashboard.
- Create a lab order (tests a patient needs) and bill for it.
- Track order status (from sample collection to report ready).
- Enter results for in-house tests, or upload the report file for outsourced ones, and share it with the patient.
- Manage your test list (with report templates), test packages, and referrers.
- View reports (daily, test-wise, department-wise) and the referrals report.
What does the Lab Dashboard show?
Open Lab → Lab Dashboard. By default it shows today. Tap Yesterday, This Week, This Month or This Year to change the period, or tap Custom, choose a From / To date and click Apply.
It shows: Total Orders, Pending, Sample Collected, Processing, Completed, Outsourced, Tests Done, Billed / Collected, and a Top Tests table for the chosen period. It's read-only — nothing to fill in.
- Billed — the value of all tests ordered in the period, paid or not.
- Collected — the lab money actually received in the period. It matches Lab under Net Cash on the main Dashboard.
- Billed is higher than Collected? Some lab bills are still unpaid — open Billing to collect them. A bill from last month paid this month counts in this month's Collected.
What reports can I get?
Open Lab → Reports and pick a tab, then choose the period at the top — it opens on Today; tap Yesterday, This Week, This Month, This Year, or Custom (choose From / To and click Apply):
- Daily — orders, tests and value per day.
- Test-wise — how many of each test were done, and the value.
- Department-wise — totals grouped by each test's department.
Add the doctors who send you patients in Lab → Referrers — name, speciality, clinic and phone, plus an optional Commission (%) if you pay them a share of the business they send. Leave commission blank if you don't pay one; blank means "no rate agreed", which is not the same as 0%.
For referring-doctor totals, use Lab → Referrals Report. It lists each referring doctor with how many orders they sent you, the amount Billed (after any discount) and the amount Collected so far — so the gap between the two columns shows whose patients have not paid.
Pick the period at the top: Today, Yesterday, This Week, This Month, This Year or Custom (choose the From and To dates, then tap Apply). It opens on Today.
It also shows each doctor's Rate (their commission %) and the Commission (₹) you owe: their % of the money collected on their orders (after refunds), so nothing is owed on a bill the patient hasn't paid. Each order keeps the % the doctor had when the order was made, so changing a doctor's % later only affects new orders. A doctor with no % set shows — (no rate agreed), not ₹0.
Only orders where you picked the doctor from the Referrers list are counted. If the name was typed in by hand, the order does not appear here — add the doctor in Lab → Referrers and pick them next time.
How do I create a lab order?
Click Lab → New Order (or open Lab → Lab Orders and click New Order).
Type the patient's Name (required). Matching patients appear as you type; tap the right one to use their record. Opening this from an appointment or a patient selects that patient for you.
- A new patient — also fill Age (required), e.g.
34(choose M months or D days next to it for a baby), Gender (required) — Male / Female / Other, and optionally a Phone. Gender and age pick the right normal range: Haemoglobin, for example, has a different range for men and women. - A new patient is added to your patients with a patient ID when the order is
created, so next time you just pick them. The name can only have letters, numbers,
spaces, dots and hyphens (
Mr. R.K. Sharmais fine).- If the Phone already belongs to a patient, a yellow box lists them. Tap Use on the right person to put the order on their record. If it's someone else in the family sharing the number, ignore the box and carry on.
- A new patient — also fill Age (required), e.g.
Under Order Details, pick the Rate List (required, already set to Main):
- Main — your normal patient prices.
- B2B — the B2B rate from each test in your catalogue, for samples another lab sends you. A test with no B2B rate set is charged at its main price. The bill on the right updates as soon as you switch. Then pick Processing from its dropdown (already set to In-house):
- In-house — you'll perform the test and enter results here.
- Outsourced — the sample goes to an external lab; you'll upload their PDF report later.
(Optional) Add a package — pick a profile (e.g. Diabetes Profile) and click Add to select all its tests at once. Any bundle discount is applied automatically (on the Main rate list only).
Select Tests (required) — type in the search box to find a test by name or code (e.g.
CBC), then tick it. Each test's price fills in automatically. Tests you have ticked stay listed as blue tags above the search box, so searching again never loses your selection — click the × on a tag to remove that test. If your catalog is large you'll see "Showing 200 of 673 tests"; just search for the one you need. If a ticked test has no price yet (₹0), a yellow box asks for it: type the price (e.g.450) and click Save. It's saved to your test catalog, so you only do this once.(Optional) Referred By — the doctor who referred the patient. Pick them from the list. If they're not there yet, click Add beside the box: the same Add Referrer form opens, and the doctor is selected for you as soon as you save — you don't lose the order you were building. Example:
Dr. Anil Gupta.You can no longer type a name that isn't in the list. A typed name was saved on the order but wasn't linked to a doctor's record, so those referrals never showed up in Lab → Referrals Report and the doctor's totals were wrong.
(Optional) Add a Discount (₹ or %) and Round off.
Check the Total.
Pick the payment Mode (Cash, UPI, Card…) if the patient is paying now.
Click Create & Pay to create the order and take the full amount now — you go back to Lab Orders. Or click Create Order to take payment later — you also go back to Lab Orders, and can collect payment from the order's Invoice option in the ⋮ menu.
Can I add more tests to an order I already created?
Yes — as long as the order's bill is not paid yet and its report is not out yet.
- Open Lab → Lab Orders.
- On the order, open the ⋮ menu and click Add Tests.
- Tick the tests you want to add. Use the search box to find one, e.g.
LFT. The price next to each test is what the bill will charge. - Click Add tests. The tests join the same order, and the bill total updates straight away.
Samples: if a sample was already collected, a new test that uses the same kind of sample (for example another blood test on the same EDTA tube) runs from that same tube — no new tube or barcode. A test that needs a different sample (for example urine when only blood was taken) gets a new tube marked to collect; when you take it, open the ⋮ menu and click Collect Pending Sample.
Already paid? A paid bill cannot change. When you add tests to a paid order, OPDly opens a new order for the same patient with those tests already ticked — just create it. If you want one report for both, use Combined report (see Can I give the patient one report covering several visits?).
Common problems
- I don't see Add Tests — it only appears while the order is Pending, Sample collected or Processing, and only if you are allowed to Edit bill (Settings → Roles & Permissions).
- "Tests can only be added before the report is released" — the report (or an interim report) is already out. Create a new order for the extra tests.
A doctor advised tests during a consultation — how do I bill them?
When a doctor advises lab tests in the consultation screen, they appear on the Advised from OPD queue. Open it with the Advised from OPD button at the top of Lab → Lab Orders — the button carries a count when something is waiting, so you can see at a glance whether anything needs ordering.
Click Advised from OPD and find the patient — you'll see who the doctor is and which tests were advised. The list shows the last 2 days. Use the search box above the list (optional) to type the patient's name, their phone (e.g.
9876543210), their patient ID (e.g.CCH-000042), or the doctor's name — the search looks at all advised tests, not just the last 2 days. The queue shows a page at a time — use Previous / Next at the bottom, and the number in the heading is the full count waiting to be ordered.An older advised test is not in the list? The queue only shows the last 2 days. Nothing has been deleted — search for the patient, or open their visit from Appointments to see what was advised, and raise the order with New Order.
Click Create Order. The New Order screen opens with the patient already filled in and the advised tests preselected.
If a doctor typed a test that isn't in your catalog, it's shown in the note at the top — add it (or the closest matching test) yourself.
Add any discount/payment as usual and click Create.
Once an order is created, that patient drops off the Advised from OPD list.
What about quick "point-of-care" tests (glucose, urine pregnancy, dipstick)?
Those are not lab orders. A quick test done in the room — blood glucose, hemoglobin, urine pregnancy test, urine dipstick, malaria/dengue rapid test — is recorded directly on the consultation screen in the Point-of-Care Tests section (the doctor or the reception/nurse types the test name and the result). It prints on the visit summary and needs no sample tracking or verification.
These do not create a bill automatically. If your clinic charges for a strip test, add it as an extra line on the visit bill using Add Item on the create-bill screen.
How do I add or edit the tests I offer?
- Go to Lab → Test Catalog and click Add Test (this opens the Add Test page).
- Fill the form:
- Test Name (required) — example:
Blood Sugar (Fasting). - Price (₹) (required) — example:
80. - B2B rate (₹) (optional, owner only) — the rate you charge another lab that sends
this sample to you, e.g.
35. It is charged only when an order is placed on the B2B rate list; normal orders always use Price. You can skip it. - Code (optional) — short code shown on reports, e.g.
FBS. - Sample Type (optional) — e.g.
Blood,Urine. - Department (optional) — the lab section, e.g.
Biochemistry(powers department-wise reports). - Turnaround time (optional) — how long results take, e.g.
Same day. - Tax % (optional) — leave blank for 0% (most tests are exempt).
- Description / prep (optional) — patient prep, e.g.
Morning sample preferred.
- Test Name (required) — example:
- (Optional) Report parameters — the result fields your technician will fill for this
test (only needed for in-house tests where you enter results here):
- Click + Add parameter for each field, e.g.
Hemoglobin. - Choose the type: Number (e.g.
14.2), Text (e.g.B+), Positive / Negative, Dropdown (enter the choices comma-separated), or Descriptive (paragraph) for a finding that is written out rather than measured — a culture report, a peripheral smear, a cytology note. A descriptive field is never range-checked, and prints full width on the report with no unit or reference range. - Culture & sensitivity: tick This is a culture & sensitivity test, then list your Antibiotics (one per line) and any No-growth lines. Use standard list fills in a ready-made antibiotic list and no-growth lines (it only fills boxes that are empty); edit it to match what your lab tests. The antibiotic list is a starting point — check it against your own lab's practice. Starter culture tests already have this set up.
- (Optional) add a Unit (
g/dL) and Reference range (13-17) — values outside the range are flagged automatically as High or Low. - (Optional) Decimals — how many decimal places a numeric result should show.
- (Optional) Method (
Photometric) and Instrument (Sysmex XN-550) — both print on their own lines under the parameter on the report. You can skip them. - (Optional) Normal value (
Nil,Clear,Not seen) — what this field reads when there is nothing abnormal. It powers the Fill normals button on the result screen, which fills blank fields only. Worth setting for Urine R/M and Stool panels; you can skip it everywhere else. - (Optional) Interpretation for this parameter — standing explanatory text printed under that one parameter's row on every report.
- (Optional) tick Required — that field must be filled before the technician can finalize the report. Leave it unticked (the default) and the field can be left blank.
- Use the ↑ / ↓ buttons to set the order the parameters appear in, both on the result-entry screen and on the printed report.
- (Optional) Formula for a calculated field — reference other parameters in square
brackets, e.g.
[PCV] * 10 / [RBC]. It's computed automatically from the other values and shown as read-only, so it can never disagree with them (if the inputs aren't filled in yet, the technician can type the value manually). - Leave this empty for tests you only upload an external PDF for.
- Click + Add parameter for each field, e.g.
- (Optional) Sample detail on the report — for a panel drawn into more than one
container, e.g.
Serum + EDTA. It prints under the test name on the report. You can skip it. - (Optional) Interpretation text — standing explanatory text printed after this test's
table on every report, so you write it once instead of retyping it per patient. Click
+ Add block, pick a heading (Interpretation, Note, Comments, Advice — or
type your own) and write the text. Formatting you can use:
- start a line with
-for a bullet point; - put
|between values to make a small table (Score | Meaning) — the first such line becomes its heading row.
- start a line with
- Click Add Test. It now appears in the Select Tests list when creating an order.
How do I enter results for an in-house test?
For tests your own lab performs (see Report parameters above):
Go to Lab → Lab Orders and find the order.
Click Enter Results.
The top of the page shows the Sample ID and who you're reporting for — patient, age/sex, patient ID, order number, referring doctor, sample type and when the sample was collected. Check it matches the sample in your hand before you start typing.
Fill each parameter's value. Every test you ordered gets its own section, so a CBC + LFT + KFT order is entered on one page without switching screens.
- Calculated fields (e.g. MCV) are computed automatically from the other values and shown read-only, so they always match their inputs. On the Kidney Function Test, eGFR is calculated from the creatinine, the patient's age and sex (CKD-EPI 2021). It is for adults (18 and over) only — for a child, or when the sex is not recorded, it stays blank.
- The Flag column shows Normal / High / Low as you type, wherever a reference range is configured, with the same H / L / C letter the printed report carries. The whole row tints pale yellow when a value is out of range and pale red when it is critical, so you can scan a 20-row CBC without reading every number.
- Fields marked with a red * are required — they're listed at the bottom until filled.
- Descriptive fields (a culture report, a peripheral smear, a cytology note) are a box you can type several lines into. Press Enter for a new line — these print as a paragraph across the full width of the report, with no unit or reference range.
- Culture & sensitivity tests (urine, blood, pus, stool and other cultures) show a
Culture result box under the table. Choose No growth (pick a standard line, or type
your own, e.g.
No growth after 48 hours of incubation) or Growth found. For growth, type the organism and press Enter (for exampleEscherichia coli— the list helps you as you type, and you can type one that is not on it). Then, for each antibiotic, tap S (sensitive), I (intermediate) or R (resistant); you can add an MIC value if you have one. Antibiotics you leave blank are not printed. To report a second organism, add it the same way. The report prints a table: organism, then each antibiotic with its result. A culture test cannot be finalized until it says No growth or names an organism. - A Positive result on a Positive / Negative test (HIV, HBsAg, Dengue, etc.) is marked A and printed in bold red on the report, so it cannot be missed.
- A Previous column appears whenever this patient has had the same test before,
showing the last value, its date, and an arrow (↑ ↓ =) for which way it has moved.
Use it as a cross-check: a creatinine that reads
11next to last month's1.1is almost always a typing slip, not a real result.
(Optional) Fill normals. If the test has normal values set up in the Test Catalog, a Fill normals button appears beside the test name. It fills only the blank fields — anything you have already typed is left exactly as it is, and nothing is ever filled automatically. It is a typing shortcut for a panel like Urine R/M, which is eleven fields of mostly
NilandClear. Always read the sample before accepting what it filled in.(Optional) Change the unit or reference range for this sample. Sometimes one sample isn't like the others — you ran a different method, or a referred sample came back against another lab's range. Click the small pencil next to the Reference Range:
- Edit the unit and/or the low and high of the range, then click Done.
- The row is tagged Edited and the Flag column immediately re-checks the value against your new range.
- Revert puts the row back to whatever the Test Catalog says.
- This changes only this order. Your Test Catalog is untouched, so no other patient's report — past or future — is affected. To change a range for everyone, edit it in Lab → Test Catalog instead.
- Critical (panic) values are not affected. Those thresholds stay exactly as configured in the Test Catalog, so widening a range here can never hide a panic value.
(Optional) Add a Comment at the bottom of each test's section — e.g.
Sample slightly haemolysed; repeat advised. It prints on the report under that test's results, so a CBC comment can't be mistaken for an LFT one. You can leave it blank. If the test has standing Interpretation text set up in the Test Catalog, it is shown below the comment box so you can see what will print. It is read-only here — to change it, edit the test in Lab → Test Catalog.Keyboard shortcuts (faster than reaching for the mouse):
- Enter — jump to the next result field.
- Ctrl + S — save a draft without leaving the page.
Finish in one of these ways:
- Submit for Verification — the usual route, and the button you'll use most. The order moves to Pending verification and waits for an authorised person to check it. Nothing reaches the patient yet.
The other two ways live under Release Options, next to it:
- Finalize & Report — releases the report directly, for a clinic where the same person enters and approves results.
- Release Interim Report — appears when some tests are done and others have nothing entered yet, e.g. a CBC is ready in an hour but the culture takes 48. It releases the finished tests and leaves the rest pending; the report prints PROVISIONAL on its face so nobody mistakes it for the final one. Enter the remaining tests later and press Finalize & Report — the report becomes final. Either way the required fields are checked first. On an interim release, required fields belonging to a test you haven't started are not demanded — but a test you have partly filled is still checked in full.
Can I send the report to the patient on WhatsApp?
Yes, once the report has been released. A Share on WhatsApp button appears on the results screen (and the orders list). It opens WhatsApp on the patient's number with a short message and the report link already typed — you just press send, from your own WhatsApp account. It only appears when the patient has a mobile number on record and the report has been released.
Can I print or WhatsApp the lab bill?
Yes. On Lab → Lab Orders, open the ⋮ menu and click View Bill — the bill screen has both Thermal Receipt (58mm) and WhatsApp. That is the bill, not the report — for the report use WhatsApp Report in the ⋮ menu.
How does verification work?
- Open the submitted order from Lab Orders (status Pending verification) and click Enter Results.
- Review the values, optionally type your Designation (e.g.
Consultant Pathologist— it prints on the report), then click Verify & Release. - The report is now available to the patient and the treating doctor, and it appears in the patient's history.
Who can verify is set by the owner in Settings → Roles & Permissions — tick Verify lab reports for the staff roles that should verify (for example Lab Technician). The owner can always verify; doctors can't. Unlike the other permissions, this one is enforced by the system itself, not just hidden from the menu.
Correcting a report after it is verified: open it again, type a reason for amending, and save. The previous values are kept as a record of what changed and when, and the report is marked AMENDED so anyone holding the earlier copy can tell. 9. Once a report has been released, a Report button appears on the right of the action bar. It holds everything you do with the finished report — Print, Download and Share on WhatsApp. (It stays hidden until then, so you can't print a sheet with no results on it.)
Pick the paper each time you print:
- Print with letterhead — on plain paper; your hospital header (and footer image, if you have one) is printed.
- Print without letterhead — a simpler sheet: just your hospital name and address at the top, and Page 1 of 1 at the bottom. No logo and no footer image.
The PDF carries:
- your hospital header (or uploaded letterhead) on every page, not just the first;
- the patient block — name, age/sex, Patient ID, Order No., Sample ID, and the Registered / Collected / Reported / Printed times — repeated on every page (you can switch this to one compact line in Lab → Report PDF Format);
- the tests one after another, in the order they were ordered, each headed by its department (Haematology, Biochemistry …) with the panel name and sample type above the table — so a few small tests share a sheet. A test that runs past the end of a page continues on the next, marked (CONTINUED) under the same heading. If you would rather have each test on its own page (to hand the patient just one sheet), turn on Start each test on a new page in Lab → Report PDF Format → Page & margins;
- each parameter with its unit and reference range, and the assay METHOD and INSTRUMENT on their own lines underneath when you've set them in the Test Catalog. If you don't print methods, turn off Print the method and instrument under each result in Lab → Report PDF Format → Result rows for a shorter report;
- out-of-range values marked with a letter before the value — H (high), L (low) and C (critical) — and printed in red, so they're still obvious on a black-and-white photocopy;
- descriptive results (a peripheral smear, a culture report) printed full width as a paragraph, with no unit or reference column;
- your per-test comments, any standing Interpretation / Note / Comments text set for the test, a QR code, and an End of Report line on the last page so the patient knows nothing is missing;
- the signature block at the foot of every page, so each sheet is signed whichever one the patient is handed. Set the signatories in Lab → Report PDF Format.
Page numbers print as 2 / 4 on a multi-page report and are hidden on a single-page one.
Printing only some tests: when the order has more than one test, the Report menu starts with a Tests to print list. Untick the tests you do not want and then print or download — the report carries only the ticked tests. (All ticked prints the whole order.)
Report → Download saves the PDF instead of opening it. The file is named after the patient —
Ramesh Kumar_male_42 year.pdf— so it's easy to find and attach. Use this when you want to send the report as a file; Print is for printing it straight away.Why both? A report opened in a browser tab always saves under a long computer-generated name like
1aa5969a-3c02-4b45.pdf, which is no use when you're looking for it later. Download is the one that names it properly.
You can re-open Enter Results any time to correct a value before delivering the report.
Common problems
- "Fill the required fields first" — a parameter marked Required in the Test Catalog is still blank. The message names the test and field; fill it, or untick Required for that parameter in Lab → Test Catalog if it shouldn't be mandatory.
- A row is tinted orange with a CHECK badge — the value looks impossible, not just abnormal: a percentage above 100, or a negative number where the range cannot go below zero. Usually a slipped digit. A common cause is Albumin typed higher than Total Protein, which makes the calculated Globulin and A:G Ratio come out negative — correct the two you typed and the calculated ones fix themselves. You can still release the report if the value really is right; a negative calculated result prints as — rather than a nonsense number.
- No Flag shown — High and Low need a range written as
low-high(e.g.13-17) on a Number parameter. A free-text range like< 200orup to 140is printed as you wrote it and gets no High/Low, because there is no number to compare against. Critical is different: if the parameter has a Critical low / high set, a panic value is still caught and marked C even when the range is free text. If you want High/Low as well, add a numeric low/high to the parameter in Lab → Test Catalog — the free-text range stays on the report. - The saved report has a long jumbled name like
1aa5969a-3c02-4b45.pdf— that happens when you save from the tab Report → Print opens; the browser names it, and we can't change that. Use Report → Download instead and it saves as the patient's name. - Scrolling the page used to change a number I had typed — fixed. Number fields no longer respond to the mouse wheel or the up/down arrow keys, so a value you have entered stays put while you scroll to the next panel. If you see a value change on its own, tell us.
- "This test has no report parameters" — the test has no template. Add parameters in Lab → Test Catalog, or upload the external report PDF from the orders list instead.
- "This report is already verified. Provide a reason to amend it." — verified results can't be changed silently. Type why you're changing it and save.
- "You don't have permission to do this" on Verify — ask the owner to tick Verify lab reports for one of your roles in Settings → Roles & Permissions and save. Then reload the page.
- I changed a range but the Test Catalog still shows the old one — that's intended. A range edited on the result screen applies to that order only. Change it in Lab → Test Catalog if you want it for everyone.
- The row still says CRITICAL after I widened the range — critical thresholds are set only in the Test Catalog, deliberately, so a per-sample edit can't hide a panic value. Change the Critical low / high on the parameter in Lab → Test Catalog if the threshold is wrong.
- "Reference range low must not exceed high" — you typed a low that's bigger than the high
(e.g.
20to5). Swap them. - My comment didn't print — comments show under the test they belong to. If you typed it in the wrong test's box, move it; also make sure you saved after typing.
Can I give the patient one report covering several visits?
Yes. Tests ordered together are already one report — a CBC + LFT + KFT order prints as a single PDF with a section per test.
For tests ordered on different days (e.g. a CBC on Monday and an LFT added on Wednesday), open the patient's profile from Patients and use the Lab Reports panel:
- Each finalized report is listed with its date, tests, and whether anything was abnormal.
- Click Combined report (all) for every report, or tick specific ones first to include only those.
- One PDF opens covering everything selected. Each test shows its own order number, sample ID, collection date and who verified it — so it stays clear which visit each result came from.
Only verified reports appear here and in the combined PDF. Results still being entered or awaiting verification are never included.
What is the Sample ID / barcode?
Every tube gets a permanent number like S-2026-000042. It is both the number you
read off the tube and the barcode printed on its sticker — one number per tube, so what
you read aloud and what the scanner returns are always the same.
- It is assigned once and never changes or gets reused, even as the order moves through processing and reporting.
- It appears on the Lab Orders list, on the result-entry screen, and on the printed report — so a query about any result can be traced back to the exact tube.
How do I label the tubes with barcodes?
- Go to Lab → Lab Orders and find the order.
- Open the ⋮ actions menu and click Collect & Label Samples.
- OPDly works out how many tubes the draw needs — one tube per specimen, not one per test. A CBC + ESR + LFT order gives you two tubes (one EDTA shared by CBC and ESR, one serum for the LFT), each with its own barcode.
- The labels open straight away so you can stick them on while the tubes are in your hand.
- Stick one label on each tube. The number is printed in plain text under the bars, so the label still works if the barcode won't scan or the print has faded.
Printing the labels again — on the Print Labels row of the same menu, pick a layout:
- Label printer — one 50 × 25 mm label per page, for a thermal/sticker label printer.
- A4 sheet — a grid of the same labels on an A4 sticker sheet, for an ordinary office printer. Cut along the light border.
Clicking Collect & Label Samples twice is safe: you get the same barcodes back, never new ones. Relabelling a tube that is already in the rack is how samples get mixed up, so OPDly won't do it.
How do I use a barcode scanner?
A handheld scanner works like a keyboard — no setup or drivers needed in OPDly.
- Go to Lab → Lab Orders. There's a Scan a tube barcode box under the page title.
- Click into the box and scan the tube. OPDly opens that order's Enter Results screen straight away.
- No scanner? Type the number and press Enter — it does exactly the same thing.
If the scan isn't found, check you scanned a tube from this hospital, and that the tube has been labelled (Collect & Label Samples).
A sample is unusable — how do I reject it and redraw?
- On Lab → Lab Orders, open the ⋮ menu and click Reject Sample….
- Pick the Tube you are writing off, if the order has more than one — rejection is per tube, so a haemolysed EDTA tube can be redrawn without touching a serum tube that was fine. With a single tube it is already selected for you. Pick All tubes when the whole draw is unusable — a spilled or mislabelled rack — and every tube is written off in one go.
- Pick a Reason — Haemolysed, Clotted, Insufficient quantity, Wrong container, Unlabelled, Contaminated, Spilled in transit, or Other.
- (Optional) add a Note, e.g.
visibly haemolysed on arrival. You can skip it. - Click Reject & Recollect.
OPDly then issues a new tube with a new barcode for the redraw, and tells you what it is. Print the new label and draw the fresh sample.
The rejected barcode stays on the record with its reason — it is never reused or erased, so you can always show what happened to a sample. The tests that were on the rejected tube are automatically moved to the replacement.
How do I set up my test catalogue quickly?
Go to Lab → Test Catalog. Three ways, use whichever fits:
Add starter tests — one click adds the built-in catalogue of about 290 tests (Haematology, Biochemistry, Serology, Immunology, Hormone Assay, Microbiology, Clinical Pathology, Cytology): CBC as a full 6-part hemogram, LFT, KFT/RFT, Lipid, Thyroid, HbA1c, iron studies, cultures with sensitivity, semen analysis, Pap smear, FNAC and more. A summary shows how many were added.
- A test you already have is never overwritten. Duplicates are always skipped, so the ranges and prices you have tuned are safe — click it again any time to pick up newly added panels without touching what you already use.
- Tests you don't offer: use Deactivate on that row, so they stop showing on New Order.
- Catalog empty? On Lab → New Order you'll see Add all common tests — it does the same thing without leaving the order.
- Each panel arrives with its parameters, units, reference ranges, methods, critical values and interpretation text — all editable afterwards.
- Every added test starts at ₹0. Set your prices next: for a long list, use
Export CSV, fill the
pricecolumn in Excel, then Import CSV.
Ranges are starting values. The Test Catalog page reminds you of this: open a test with Edit to view its parameters and reference ranges, and add or change them to match your lab's requirements.
Import CSV — for a large or existing catalogue. One row per parameter; repeat the test name (or leave it blank) to add more parameters to the same test, and add extra rows for male/female or age-specific ranges. Export CSV first to see the exact format. To bring in your partner-lab rates too, add a b2bPrice column. If your sheet has no such column, the B2B rates already saved in OPDly are left untouched.
Add Test — the form, for one test at a time.
The catalog shows 100 tests per page with Previous / Next at the bottom, and tells you how many there are in total. Use the search box (name or code) to jump straight to a test instead of paging through a long price list.
Every test row has Edit, Duplicate, Deactivate and (for the owner) Delete — duplicate is the fastest way to build a similar panel.
How do I change a test's price quickly?
On Lab → Test Catalog, click the Price in the test's row, type the new amount (e.g. 350)
and press Enter or click anywhere else — it saves by itself and the box flashes green.
Press Esc to cancel. The owner can change the B2B rate the same way; clear the box to
remove the rate. Price can't be left empty.
How do I set or change many prices at once?
On Lab → Test Catalog, click Update prices. Choose which tests (All tests, or one department such as Biochemistry), what to do (Set price to ₹, Increase by % or Decrease by %) and the Amount. Tick Only tests with no price yet to price a new catalogue without touching tests you have already priced. Click Apply and confirm. Prices round to the nearest rupee. Orders and bills you have already made are not changed.
Common problems
- The old price came back — the amount was empty or not a valid number, so nothing was saved.
- Can't edit on my phone — on small screens use ⋮ → Edit instead.
How do I stop offering a test?
Use Deactivate — it is the safe, everyday choice, and reception can do it:
- The test disappears from New Order and from the test list when building a package.
- It stays in the Test Catalog marked Inactive, keeping its parameters and reference ranges, so you can Activate it again at any time.
- Past orders, bills and reports are completely unaffected.
This is what you want after importing a large price list that includes tests you do not run.
Delete (owner only) removes the test from the catalog for good — it cannot be brought back from within OPDly. Past orders and reports still work: they keep the test name and price as printed, and old reports reprint exactly as issued. Before deleting, OPDly tells you if the test is still part of a package; remove it from those packages first, or they cannot be saved. The Parameters column shows how many result fields a technician will see; Upload only means the test has no template and you'll attach an external report instead.
Where do I view a finished report?
On Lab → Lab Orders:
- In-house tests — once Reported, the ⋮ menu has Report with letterhead (plain paper) and Report without letterhead (a simple header with just your hospital name and address). Both open the PDF OPDly built from the results your technician entered.
- Outsourced tests — use Upload report to attach the external lab's PDF/image. Then Preview Patient Page opens the page the patient gets, where the uploaded files are listed for download, and WhatsApp Report sends them the link.
The two are different things, which is why both can appear on the same order: View Generated Report is the report we produced, Preview Patient Page is what the patient sees. Either way the report is reachable from the same orders list, so the doctor doesn't need to know whether it was produced here or uploaded from outside.
How do I make a test package / profile?
A package bundles several tests under one name (e.g. Diabetes Profile) so you can add them all in one click and offer a combined price.
- Go to Lab → Test Packages.
- In Add Package, enter a Package name (required) — example:
Diabetes Profile. - Tick the tests that belong in it (required). The selected-tests total is shown.
- (Optional) Enter a Bundle price — a discounted price for the whole package. Leave it blank to simply bill the sum of the tests.
- Click Add Package. Use Edit / Delete on any package later.
When creating an order, pick the package from Add a package → Add — all its tests are selected at once, and any bundle discount is applied to the bill.
How do I update an order's status?
On Lab → Lab Orders, open the ⋮ menu on a row. The order moves along as you do the actual work — you don't set the status by hand:
- Pending → Collect & Label Samples. Draws the tubes, gives each a barcode, and opens the labels to print. The order becomes Sample Collected.
- Sample Collected → Enter Results. Saving anything — even a draft — puts the order on Processing, so the worklist shows what is actually being worked on.
- Processing → Submit for Verification or Finalize & Report on the result screen. For an outsourced test, Upload report instead. The order becomes Reported.
- Reported → Mark Delivered when the report is handed to the patient.
There is no separate "Mark Sample Collected", "Mark Processing" or "Mark Samples Received" button any more. They used to exist but skipped the work itself — no barcode was created, so there was nothing to scan or print. Collect & Label Samples is now the one moment a tube is recorded, and it prints on the report as Collected On.
Outsourced orders show an Outsourced tag. In the status dropdown, pick Awaiting report to see everything that still needs a report (all pre-report stages at once), or any single stage to filter by it.
How do I find one particular lab order?
Above the list there are four boxes. Use any of them together.
- Search (optional) — type whatever the patient has given you and the list narrows as
you type. It matches the patient name, their phone (e.g.
9876543210), the patient ID (e.g.CCH-000042), the name written on a walk-in order, a tube barcode, or the invoice number from their receipt. - From / To (optional) — pick dates to see only the orders raised in that period. You can fill only one: From alone means "from that day onwards", To alone means "up to that day". Dates are your own working days.
- Status (optional) — as described above.
- Clear — appears once any box is in use; removes all of them at once.
You can skip all four; with nothing filled the list shows the newest orders first.
This is different from the barcode scan box higher up the page. The scan box jumps straight into result entry for one tube; the Search box just filters the list.
Common problems
- Nothing is found for a patient I know exists — check for a typo in the phone number, and clear the From / To dates: the order may be older than the range you picked.
- A walk-in doesn't show by phone — a walk-in is only searchable by the name and phone actually typed on that order. If the phone was skipped, search by name instead.
- Too many results — add a date range, or pick a Status.
- "Too many people match…" — a very common name (e.g.
Singh) matches more patients than OPDly will search through at once, so the list you see may be missing someone. Type the phone number, the patient ID or the barcode instead, which are always exact.
How do I upload a report and give it to the patient?
- Open the lab order.
- Use Upload Report and select the file (PDF or image).
- A shareable patient link is created. Use the WhatsApp link to send it to the patient — they open it on their phone, no app needed.
The report link expires after 30 days for privacy. You can revoke or regenerate it if needed.
What are Referrers and the Referrals report?
- A Referrer is a doctor who sends patients to your lab. Keep them in a list so you can tag orders.
- To add one, open Referrers and click Add Referrer. Only Name (required) is
needed. Phone (optional) must be a 10-digit mobile (e.g.
9876543210) if you fill it — Speciality and Clinic are optional too, you can skip them. - The Referrals report shows how many orders came from each referrer. (There is no commission calculation — it's for tracking only.)
Common problems
No tests show when creating an order. Add your tests first in Lab → Test Catalog.
Lab menu is missing. Lab is turned off for your hospital. The Owner can enable it in Settings → Update Hospital → Hospital Facilities.
The patient says the report link doesn't open. The link may have expired (30-day limit) or been revoked. Open the order and regenerate the link, then share the new one.
The scanner does nothing / types nothing. Click into the Scan a tube barcode box first — a handheld scanner types into whatever field has the cursor. If it still does nothing, type the number from under the bars and press Enter; that always works.
"No sample found for that barcode". Either the tube belongs to another hospital, or it hasn't been labelled yet — use Collect & Label Samples on the order first.
"Print Labels" is missing from the menu. The order has no tubes yet. Click Collect & Label Samples first.
The labels print at the wrong size. Pick the layout that matches your printer: Label printer sends one 50 × 25 mm label per page for a thermal/sticker printer, while A4 sheet sends a grid for an ordinary printer. Also make sure your print dialog is set to Actual size / 100%, not "Fit to page" — scaling makes barcodes hard to scan.
I clicked "Collect & Label Samples" twice — did I waste barcodes? No. You get the same barcodes back both times. OPDly never re-labels a tube that already has a number.
How do I enter an antibody test as a number (Dengue, CMV, HSV…)?
Some infection tests come off the machine as a number (an index), not just Positive / Negative.
- Open Test Catalog → Edit on the test and open its parameter.
- Set the type to Number and fill Kit cut-offs (optional):
- Negative below — under this number the result reads Negative.
- Positive from — this number or higher reads Positive. In between reads Equivocal.
- Use the numbers printed in your kit's leaflet. Different kits use different cut-offs, so check yours.
When you type the number on Enter Results, the screen shows Negative, Equivocal or Positive, and the report prints the number with the reading, for example 12.5 (Positive). Anything other than Negative is flagged.
The starter tests ending in (Index) come with common kit cut-offs. Always match them to your own kit.
Doctors & Staff — Help
This section explains how to add and manage the people who work at your hospital. Only the Owner can add, edit, or remove doctors and staff.
Why do I need to add doctors?
Every appointment is booked for a doctor, and each doctor has their own token queue. You must add at least one doctor before you can book any appointment.
How do I add a doctor?
- Click Doctors in the left menu.
- Click Add Doctor.
- Fill the form. Required fields are marked with a red star; skip the rest if you like:
- First Name (required) — example:
Dr. Anil. The name shows exactly as you type it, so include Dr. if you want it on screens, bills and prescriptions. Letters, spaces, dots, hyphens, underscores, apostrophes, quotes and numbers are fine (D'Souza,Singh-Rana,Dr. Rao 2); other symbols are not. - Last Name (optional) — example:
Gupta. (Used for the token letter, e.g.G01.) - Email (required) — the doctor's login email. Example:
[email protected]. - Phone (optional) — 10 digits.
- Consultation Fee (₹) (optional but recommended) — auto-fills on bills.
Example:
300. - Hospital Cut (%) (optional) — only you (the Owner) see this field; the doctor
never sees it, and it never shows on any bill. If a doctor keeps a share of their own
consultation fee for the hospital, set that % here — for example
10for 10%. It applies only to the consultation fee, not the whole bill, even if you added other items to the same bill. See How do I see how much a doctor owes the hospital? below. Leave it empty if there's no such arrangement. - Speciality / Department / Designation / Education / Experience (optional) —
shown on the public page and profile. Example speciality:
Physician. - Medical Registration No. (optional but recommended) — the doctor's medical-council
registration number. Example:
PMC-45872. When filled, it prints on the prescription / consultation PDF (India expects it on a prescription). You can skip it. - Gender, Date of Birth, Biography (optional).
- OPD Timings (optional) — a typical Monday–Saturday schedule is filled in for
you (Morning
09:00–13:00, Evening17:00–20:00, Sunday off). Use the Morning / Evening switches to turn a session on or off for each day, and adjust the start/end times. Set Monday how you want it, then click Copy Monday to all days to apply the same hours to the whole week. When a patient picks a date on your public booking page, they're shown that doctor's OPD hours for that day. - Show this doctor on the public booking page (optional, on by default) — switch off to hide this doctor from your public page (they can still be booked from inside OPDly).
- First Name (required) — example:
- Click Save.
The doctor can now be selected when booking, and (if you gave an email) can log in.
I am the owner and I also see patients. How do I add myself as a doctor?
You don't need a second email. New hospitals already have this done — you are added as the first doctor when you register. Use the steps below only if you removed yourself or your account was created before this.
- Click Doctors in the left menu.
- Click Add Doctor.
- Switch on I am this doctor (I will also see patients). The Email field goes away.
- Fill your name, phone and any other details (same fields as above).
- Click Save.
You keep logging in with your own email and password. You now show up in the doctor list, the booking dropdowns and the token queue like any other doctor.
If you removed yourself as a doctor earlier, doing this again brings back your old doctor record, so your past visits stay linked to you. Removing yourself as a doctor never removes your owner login.
How do I add staff / a receptionist?
- Click Staff in the left menu.
- Click Add Staff.
- Fill the form:
- First Name (required) — example:
Pooja. - Last Name (optional).
- Email (required) — their login email.
- Roles (optional) — pick one or more: Receptionist, Pharmacist, Lab Technician, Nurse, Accountant, Attendant, Manager, or Other. Each role has its own column in Settings → Roles & Permissions, and the staff member gets everything any of their roles allows. Example: someone who is both Receptionist and Lab Technician can use both the front desk and the lab. You can skip it — a staff member with no role (or Other) gets the Other staff column. Only the owner sees this field and can change it.
- Phone, Gender (optional).
- First Name (required) — example:
- Click Save.
The Roles you pick show as a column in the Staff list. A role change applies the next time that staff member reloads the page or signs in.
How do the doctor / staff get their password?
When you add them, OPDly emails an invitation link to the email you entered. They open it and set their own password, then they can log in. (You set their email; they set their own password from the invite.)
If they didn't get the email, ask them to check spam, confirm the email is correct, or use Forgot Password on the login page to set a password.
How do I edit a doctor or staff member?
Open them from the Doctors / Staff list, click Edit, change details, and Save.
This is also where you set or change a doctor's OPD Timings and the Show this doctor on the public booking page option.
While editing a doctor you'll also see a Prescription format section at the bottom. Leave it off to use the hospital's default prescription layout, or turn on Use a custom format for this doctor to give that doctor their own header/footer/layout (with a live preview). See Settings → Prescription PDF Format for what each option does.
How do I remove a doctor or staff member?
Open them (or use the delete action in the list) and confirm. They are moved to recently deleted, not erased — you can restore them later from the recently-deleted view. (Owner only.)
How do I see how much a doctor owes the hospital?
If you've set a Hospital Cut (%) on a doctor (see above), go to Reports → Finance Reports and look at the Doctor Earnings section. Pick a date range and it shows, per doctor: how many consultations, the fee collected, the hospital's cut, and the doctor's share. Only paid consultation bills count — a bill that's still unpaid, cancelled, or refunded isn't included. Changing a doctor's % later only affects bills made after that — already-billed consultations keep the % they were billed at.
I got a "plan limit reached" message. What does that mean?
Your subscription plan allows a fixed number of doctors and staff. You've hit that limit. To add more, either remove someone you no longer need, or upgrade your plan (contact OPDly). See Account & Subscription.
Common problems
I get "A user with this email already exists" when adding myself as a doctor. You typed your own email. Switch on I am this doctor (I will also see patients) instead, so no email is needed.
I get "You are already added as a doctor". You are already in the Doctors list. Open your name there and click Edit to change your details.
A doctor I added isn't showing in the booking dropdown. Refresh the page — the doctor list can be cached for the session and may need a reload to appear on other devices/tabs.
The doctor can't log in. Make sure you entered their email correctly, and that they opened the invitation email and set their password (or used Forgot Password). Also check the hospital account isn't suspended.
The doctor's OPD hours aren't showing on the public page. OPD hours appear only after the patient picks a date in the Request Appointment form, and only for that day. Open the doctor, switch on Morning/Evening for the relevant days with a start and end time, make sure Show this doctor on the public booking page is on, and Save.
Dashboard & Reports — Help
This section explains the numbers on your Dashboard and the reports available. These are for understanding your day and your business — no data is changed here.
What is the Dashboard?
The Dashboard (the first page after login) gives you an at-a-glance view of the day: how many appointments, how much money collected, and quick summaries. It's your morning "where do things stand" screen.
What do the Dashboard numbers mean?
The Dashboard opens on Today. To see another period, tap Yesterday, This Week, This Month or This Year at the top, or tap Custom, choose a From / To date and click Apply.
- Appointments / Patients today — how many are booked or seen today. Patients counts everyone who visited in the period: an appointment, a lab order or a pharmacy bill. A pharmacy Cash sale (no name typed) isn't counted.
- Net Cash — money actually received across all streams (consultation, pharmacy, lab), already adjusted for refunds (it can go below zero if you refund more than you received that day). It may also show a split by type (OPD / Pharmacy / Lab).
- Confirmed / Cancelled counts — the state of today's queue.
- Unbilled Visits — completed visits (for the selected period) that don't have a bill yet. Tap the card to open the appointments list, where each one shows a grey Not billed tag — use it to catch anything skipped on a busy day. Switch the period at the top (Today / Yesterday / This Week / This Month / This Year / Custom) to see it for a different range.
The money figures come from real bills, so they match your billing records.
Daily summary email — every evening at 9 PM OPDly emails today's report to your hospital email, with an Open Dashboard button. It's sent even on a quiet day. It has:
- Visits — appointments, patients, cancelled and unbilled visits.
- OPD, Lab and Pharmacy — for bills made today: Billed, Collected and Due (Billed = Collected + Due; a Refunded line appears only if there was a refund).
- Total — the same three figures for all of today's bills, plus Received today for earlier bills (old dues a patient paid today). If an older bill was refunded today, a Refunded today for earlier bills line appears too.
The money figures match Billing by Department in Reports → Finance reports for today. To stop the email, turn off Daily summary email in Settings → Update Profile.
How do I open a report?
- Click Reports in the left menu.
- Pick the area you want:
- Appointment reports — appointment counts and breakdowns by doctor. It opens on Today; tap Yesterday, This Week, This Month, This Year or Custom to change the period.
- Finance reports — money reports (see below).
- Choose the specific report from the list (e.g. Daily collection, Billing summary).
- Set a date range (see How do I filter a report by date? below) and read the table.
What finance reports are available?
Open Reports → Finance reports. Pick a period at the top — Today, Yesterday, This Week, This Month or This Year — or Custom to choose your own From and To dates and click Apply.
- The four boxes at the top — for bills made on those dates:
- Total Billed — the full amount of all bills made.
- Paid — how much patients paid on those bills (money you gave back is taken out).
- Total Profit — your Lab profit plus the hospital's cut from doctor consultations (see the two sections below). Pharmacy is not included, and it is before your own expenses (salaries, rent). Shown in red if it is a loss.
- Pending — money patients still have to pay on those bills.
- Billing by Department — Total Billed, Paid, Returned (money you gave back to patients) and Pending, split into OPD, Lab, Pharmacy, with a Total row. Total Billed = Paid + Returned + Pending.
- Lab Profit: In-house vs Outsourced (Owner only) — your lab profit on those dates, split by where the tests were done. Profit = the bill before GST − Cost (the B2B rate of each test) − Referral Commission (what you owe the referring doctor). Each row shows its profit and the Total Profit is below the table. Example: a ₹600 test with a ₹60 B2B rate and a 50% referral commission gives 600 − 60 − 300 = ₹240 profit. Only bills paid in full and not refunded count; a note below the table says how many were left out. An in-house test with no B2B rate counts as ₹0 cost, so that row's profit is before your own costs (reagents, staff). The B2B rate is taken as it was when the order was made, so changing it later does not change old profit.
- Doctor Earnings (Owner only, shown only if you've set a Hospital Cut % on at least one doctor — see Doctors & Staff) — for each doctor: how many consultations were fully paid on those dates, the fee collected, the hospital's cut, and the doctor's own share. Only counts a paid consultation bill, not lab/pharmacy, and not an unpaid, cancelled or refunded one.
- All Money Received — every payment taken on those dates, by payment type (cash / UPI / card / other), including old bills paid now. In Hand = Received − Returned. Pick Today to match your cash drawer. Below the table two boxes show how much of it came for bills made on those dates (e.g. For bills made on 24 Sep 2026) and how much for older bills (e.g. For older bills (made before 24 Sep 2026)). Then Old bills paid on these dates lists each older bill (tap the bill number to open it).
- Pending Payments — every bill where the patient still has to pay, oldest first; tap the bill number to open it and take the payment.
A part-paid bill that was refunded is closed: it still counts in Total Billed, the money given back in Returned, and its unpaid part is not pending (the bill shows ₹0 due).
Why doesn't "All Money Received" match "Paid"? Paid only counts payments on bills made on the chosen dates. All Money Received counts all money taken on those dates, so a patient paying an old bill shows up in All Money Received but not in Paid.
- Patient statement — all bills for one patient (excludes cancelled/void bills; refunded bills show ₹0 due).
What do "Outstanding" and "Refunded" mean in the reports?
- Outstanding — money still owed to you (billed but not yet collected).
- Refunded — money you returned to patients. A refund is not an outstanding due — the reports keep these separate so a refund doesn't look like an unpaid balance.
So: Billed = Collected + Refunded + Outstanding.
How do I filter a report by date?
- Open the report.
- At the top, either tap a preset (Today, This Month, etc.) or set a From and To date yourself.
- (Optional) If the report offers it, pick a doctor or patient to narrow it down.
- The table updates to show only that period.
Tip: leaving the dates blank usually shows the current month.
How do I download a report (for Excel / Tally)?
- Open Billing (for the bills list) or Pharmacy → Reports (for pharmacy reports).
- Set your date range and any filters first.
- Click Export CSV.
- Open the downloaded file in Excel, Google Sheets, or your accountant's software.
The download contains exactly what's on screen for the range you chose.
Common problems
A doctor sees fewer numbers than the owner. That's expected — a Doctor login sees only their own figures. The Owner sees everything.
Today's totals look low. Make sure bills were actually created and paid (not left as drafts). Only recorded payments count toward collections.
Settings — Help
This section explains your hospital's settings. Most settings are Owner-only. You set these up once and rarely change them.
Where are the settings?
Click Settings in the left menu. Inside you'll find hospital profile, billing settings, password change, and more.
How do I update my hospital details?
- Go to Settings → Update Profile.
- Update the fields:
- Hospital Name (required) — shows on bills and the public page.
- Category (optional) — you can skip this.
- Address Line 1 / 2 (optional) — example:
Main Bazaar, Delhi. - City, State/Province, Postal Code (optional) — you can skip these, but fill
them if you can: they print in the address on your bills and reports, and State
decides whether GST on a bill is split as CGST + SGST or charged as IGST. Example:
Ambala,Haryana,134003. - Phone, Email, Website (optional) — the phone number powers both the Call Now and WhatsApp buttons on your public page, so use a number that can receive WhatsApp.
- Alternate Contact Number (optional) — a second number patients can call; it shows next to your main number on the public page.
- Alternate Phone 2 / Alternate Phone 3 (optional) — more numbers for your
hospital, example:
9876543210. You can skip these. - Registration Number (optional) — your hospital's registration/licence number. When filled, it appears as "Reg. No. …" under the address on your public page.
- Google Maps Link (optional) — you can skip this. It puts a directions link in
two places: Directions on your public page, and Get Directions on the live
queue-status page a patient opens from their WhatsApp message — so they can find you
on the way in.
To get the link: open Google Maps, search for your hospital, tap Share, then
Copy link, and paste it here (it looks like
https://maps.app.goo.gl/abc123). Only Google Maps links are accepted. Clear the box and save to remove the button. - Patient IDs → ID Prefix (optional) — the letters at the start of every patient
ID (e.g.
CCH→CCH-000042). Pre-filled with a suggestion from your hospital name. 2–6 letters or digits. Leave blank to keep the current one. Changing it only affects patients added after you save — IDs already given out never change. - Patient IDs → Next Number (optional) — type a number here to jump the counter forward; the next patient added gets exactly that number. You can't go backwards.
- Click Save.
These details appear on your printed bills and your public hospital page, so keep them correct.
How do I get a public page and QR code for patients?
In Settings → Update Profile, scroll to Public Profile & Online Booking.
- Check that Enable Public Page & Online Booking is on. New hospitals have it on already, with a link generated for you. Turn it off if you don't want patients booking online.
- Click View Your Page to see what patients see, and to copy the link.
- Click Download QR Code to get a branded, print-ready image (your hospital's logo and name, with the QR code). Put it up at reception, on a signboard, or on your prescription pad — a patient scans it with their phone camera and lands straight on your public page, where they can see your details and book online. No app needed on either side.
- Add an About blurb and a Banner Image (recommended size 1600×400) to make the page look complete.
- Under Social Media Links (optional), paste your Facebook, Instagram,
YouTube or X (Twitter) page link — example:
https://instagram.com/cityhospital. Each one shows as a link on your public page. You can skip any of them; clear a box and save to remove it. - Fill in Google Maps Link (higher up on the same page, under the address) so patients get a Directions link that opens your hospital in Google Maps.
Download QR Code only appears once the public page is enabled — the QR needs a link to point to first. Anyone on your team (owner, doctor, or staff) can download it, not just the owner.
How do I turn Pharmacy or Lab on/off?
In Settings → Update Profile, under the Hospital Facilities section, there are availability toggles:
- Pharmacy available — turns the Pharmacy menu on/off. On by default for new hospitals.
- Lab available — turns the Lab menu on/off. On by default for new hospitals.
- Ambulance / Emergency / Bed count — shown on your public page.
- Daily summary email — every evening at 9 PM, today's numbers are emailed to your hospital email. It is under Notifications. On by default; switch it off and click Save to stop it.
This is the single place to control which modules your team sees. Turning one off just hides its menu.
What are the Billing Settings?
Settings → Billing Settings controls how bills work (Owner-only). Common fields:
- Invoice prefix (optional) — the letters before invoice numbers. Example:
OPD. - Default pharmacy tax rate (optional) — pre-fills the tax on new medicines.
Example:
12(%). - GST enabled (optional) — turn on if you bill with GST.
- GSTIN (required only if GST is enabled) — your GST number. Example:
22AAAAA0000A1Z5. When enabled, it prints on the bill.
Only change these if you understand them — the defaults work fine for most hospitals.
How do I save my regular services so billing fills in the price? (Service Catalog)
Settings → Service Catalog (Owner-only) is your list of services and their prices.
Quick start: click Add starter services. About 25 common services (consultations, X-Ray, ECG, dressing…) are added with a price of ₹0. Click Edit on each one and set your own price. Clicking it again never overwrites prices you have set.
To add your own:
- Click Add Service.
- Service Name (required) — example:
X-Ray Chest. - Price (₹) (required) — example:
400. - Tax % (optional) — you can skip this if there is no tax. Example:
5. - HSN/SAC (optional) — you can skip this. Example:
9993. - Click Add Service.
Use the search box to find a service, and Edit or Delete next to it to change or remove it.
When staff type in the Item / Service box while making a bill, matching services appear. Tapping one fills in the price and tax.
How do I change my password?
- Go to Settings → Change Password.
- Enter your current password, then your new password twice.
- Click Save.
Use a strong password (mix of letters, numbers, symbols).
How do I update my own profile?
Click your name at the top-right and open Profile (or Settings → Profile). Update your details and Save. This is your personal info, separate from the hospital details.
How do I customise how the prescription printout looks?
Go to Settings → Prescription PDF Format (Owner-only). This controls the printed prescription / visit summary PDF for the whole hospital. Everything you change shows in a live preview on the right.
Every section starts closed — click a section's name (for example Header) to open it.
You can set:
Page — size (A4 or Letter) and page margins in mm (
0–60). Margins move the text only — an uploaded letterhead or footer image always runs to the edge of the paper, so you don't need0margins for that. Keep about10so the text doesn't touch the edge. Most printers can't print the last few mm, so check one printout first.Header — choose one:
- Generated header — prints your logo, hospital name, address and doctor details (tick which of logo / address & phone / GSTIN / doctor details to show).
- Pre-printed letterhead — leaves a blank gap at the top so you can print on your own letterhead pads. Set the gap (in mm) to match your paper.
- Upload letterhead image — upload your own designed letterhead. It prints edge to
edge across the top of the page and the prescription content flows below it. Use Upload
image to add it, Replace image to change it, or Remove to delete it. If no
image is uploaded yet, the generated header is used instead.
- Use a wide banner, not a square logo. Recommended size 1600 × 300 px (about a 5:1 landscape strip). Format JPEG, PNG or WebP, up to 5 MB. Export at 1600 px wide for the sharpest text (the image is scaled to this width).
- Minimal — just the hospital name.
Sections to include — turn parts of the prescription on/off: Patient details (the grey box with name, age/sex, patient ID, visit date and token), Doctor details (the doctor's name, degree, speciality and registration number), Vitals, BMI, Medical history, Examination, Investigations, Point-of-care tests, Advice, Clinical notes, Referral and Signature. Chief complaints, Diagnosis, Prescription and Follow-up always print.
- Printing on a pre-printed pad that already has the doctor names and blank Name / Age / Sex lines? Untick Patient details and Doctor details so they don't print twice, and fill those lines in by pen.
Footer — pick Text footer (the default) or Upload footer image (banner):
- Text footer — a footer line (example:
Emergency: 98765xxxxx) and a terms/disclaimer line (example:Not valid for medico-legal purposes). - Upload footer image — a wide banner (a pre-printed footer strip / stamp) printed edge to edge along the bottom of every page. Recommended ~1600 × 200 px, JPEG / PNG / WebP, max 5 MB. The footer line and terms still print above it if you fill them in.
- Either way, tick whether to show the generated timestamp and page numbers.
- Text footer — a footer line (example:
Watermark (optional) — turn on Show a faint diagonal watermark on every page, then pick Text or Image:
- Text — leave the box empty to use your hospital name, or type your own short text (up to 60 characters).
- Image — upload a logo / stamp. Best results with a light or grey PNG on a transparent background — a dark full-colour logo just prints as faint grey. Off by default.
Accent colour — the highlight colour. Use a dark shade — it prints best on a black-and-white laser printer.
Click Save format when you're happy. The next prescription you print uses the new layout.
Can one doctor have a different format?
Yes. Open Doctors → edit the doctor, scroll to Prescription format, and turn on Use a custom format for this doctor. Set it up the same way (with its own live preview). Doctors without a custom format keep using the hospital default.
How do I customise how the lab report PDF looks?
Go to Lab → Report PDF Format (Owner-only). This controls the printed lab report PDF for the whole hospital — the same one patients get after a lab order is verified. Everything you change shows in a live preview on the right.
You can set:
Page — size (A4 or Letter) and page margins in mm (
0–60). Set a margin to0to run the content right to the edge of the paper — useful with pre-printed letterhead. Most printers can't print the last few mm, so check one printout first.Header — choose one:
- Generated header — prints your logo, lab name, address and GSTIN (tick which of logo / address & phone / GSTIN to show).
- Pre-printed letterhead — leaves a blank gap at the top so you can print on your own letterhead pads. Set the gap (in mm) to match your paper.
- Upload letterhead image — a separate image from the Prescription PDF Format letterhead (Settings → Prescription PDF Format), so you can use different branding for lab reports — for example if your lab has its own accreditation marks or a different address. It prints full-width across the top. If no image is uploaded yet, the generated header is used instead.
- Minimal — just the lab name.
Whichever you pick, also tick Repeat patient details on every page (on by default). Printed lab reports normally repeat the patient block — name, Patient ID, Reg. No., and the Registered / Collected / Received / Reported / Printed times — at the top of every page, so a loose second sheet is still identifiable. Untick it to print a single compact line instead, which gives you more room for results — useful if your uploaded letterhead is tall.
Report signatories — up to 4 fixed names printed as a signature block at the end of the report (example: Sanjay Diwan — Technologist, Dr. Priya Mahajan — Pathologist). Use + Add signatory to add one, and the trash icon to remove one. For each signatory you can fill in:
- Name (required) — example:
Dr. Swarnendu Pal - Qualification (optional) — example:
MBBS, MD (Pathology); you can skip it - Designation (optional) — example:
Consultant Pathologist; you can skip it - Registration number (optional) — example:
PMC 68578; you can skip it. It prints in brackets under the name, which is how a pathologist is identified on a report.
Leave the whole section empty to keep showing only the name of whoever verified the report in the app. You can also upload a signature image for each signatory (a scanned or photographed signature) — it prints above the name instead of a blank line. Optional; use Upload signature / Replace signature / Remove. Without one, the report leaves a blank line for a physical (pen) signature.
- Name (required) — example:
Footer — pick Text footer (the default) or Upload footer image (banner):
- Text footer — a disclaimer line (example:
Not for medico-legal purpose). - Upload footer image — a wide banner printed full-width in the bottom band of every page (~1600 × 200 px, JPEG / PNG / WebP, max 5 MB). The disclaimer line still prints above it if you fill it in.
- Either way, tick whether to show the QR code that links to the online report,
page numbers, and the lab name in footer. Page numbers print as
2 / 4and are hidden automatically on a one-page report, where they add nothing.
- Text footer — a disclaimer line (example:
Watermark (optional) — turn on Show a faint diagonal watermark on every page, then pick Text or Image:
- Text — leave the box empty to use your hospital name, or type your own short text (up to 60 characters).
- Image — upload a logo / stamp. Best results with a light or grey PNG on a transparent background — a dark full-colour logo just prints as faint grey. Off by default.
Accent colour — the highlight colour used for the department headings and dividers. Use a dark shade — it prints best on a black-and-white laser printer.
Click Save format when you're happy. The next lab report you print or download uses the new layout.
How do I customise how the invoice / bill PDF looks?
Go to Settings → Invoice PDF Format (Owner-only). This controls the printed Bill Cum Receipt and the Consolidated Bill for the whole hospital. Everything you change shows in a live preview on the right.
Every section starts closed — click a section's name (for example Header) to open it.
You can set:
- Page — size (A4, A5 or Letter) and page margins in mm (
0–60). A5 is half an A4 sheet — good for small bills. On A5 the items table uses smaller text and short column names (RATE, AMT, DISC). Margins move the text only — an uploaded letterhead or footer image always runs to the edge of the paper, so you don't need0margins for that. Keep about10so the text doesn't touch the edge. Most printers can't print the last few mm, so check one printout first. - Header — choose one:
- Generated header — prints the doctor / hospital name, your logo, address and GSTIN (tick which of logo / address & phone / GSTIN to show).
- Pre-printed letterhead — leaves a blank gap at the top so you can print on your own bill pads. Set the gap (in mm) to match your paper.
- Upload letterhead image — a separate image from the Prescription PDF Format and Lab Report PDF Format letterheads, so the bill can carry its own billing/GST branding. It prints edge to edge across the top of the page. If no image is uploaded yet, the generated header is used.
- Minimal — just the hospital name.
- Footer — pick Text footer (the default) or Upload footer image (banner):
- Text footer — a footer line (example:
Thank you for choosing us) and a terms / disclaimer line (example:Goods once sold are not returnable). - Upload footer image — a wide banner printed edge to edge along the bottom of every page (~1600 × 200 px, JPEG / PNG / WebP, max 5 MB). The footer line and terms still print above it if you fill them in.
- Either way, tick whether to show a generated timestamp and page numbers along the bottom of every page. Timestamp and page numbers are off by default (the bill has never shown them) — turn them on if you want them.
- The "Powered by OPDly" line at the very bottom always stays.
- Text footer — a footer line (example:
- Watermark (optional) — turn on Show a faint diagonal watermark on every page, then
pick Text or Image:
- Text — leave the box empty to use your hospital name, or type your own short text (up to 60 characters).
- Image — upload a logo / stamp. Best results with a light or grey PNG on a transparent background — a dark full-colour logo just prints as faint grey. Off by default.
- Accent colour — the colour used for the bill title and the divider line under the header. Use a dark shade — it prints best on a black-and-white laser printer.
Click Save format when you're happy. The next bill you print or download uses the new layout. The "Powered by OPDly" line at the very bottom always stays.
How do I control what doctors and staff can see? (Roles & Permissions)
You (the owner) decide what each role can open and what it can do.
- Go to Settings → Roles & Permissions (Owner only).
- There is one column per role: Doctor, Receptionist, Pharmacist, Lab Technician, Nurse, Accountant, Attendant, Manager and Other staff. On a phone, pick the role from the Role list at the top instead.
- The rows come in two parts:
- What they can open — Dashboard, Appointments, Patients, Doctors, Staff, Billing, Pharmacy, Lab, Certificates, Reports, Audit Logs.
- What they can do — Cancel appointment, Reschedule appointment, Edit bill, Cancel bill, Refund, Back-date bill, Delete patient, Pharmacy return, Stock adjustment, Purchase entry, Verify lab reports. A dash (—) means that role can never do it (for example, doctors don't use the pharmacy).
- Tick a box to allow it, untick to take it away.
- Use Select all at the top of a column to grant or remove everything for that role at once.
- Click Save changes. Cancel takes you back without saving.
To undo everything you have set, click Reset to default and confirm. Every role goes back to how OPDly works out of the box — everything allowed — and it is saved straight away.
A few things to know:
- The owner always has full access — you can't lock yourself out.
- Your own profile and Change password are always available to everyone. If you untick Dashboard for a role, that person is taken straight to the first section they can access when they sign in.
- Changes take effect the next time that doctor or staff member reloads the page or signs in again.
- What they can open hides the menu and blocks the page in the app. What they can do is also checked by the system: the button disappears, and the action is refused even if someone tries it another way.
- A staff member with several roles gets everything any of their roles allows. You set a staff member's roles on their Edit Staff page.
- A role you haven't changed yet follows Other staff. Once you save this page, each role keeps exactly what you ticked for it.
- Until you change them, every role can do everything on this page, including Refund, Cancel bill and Delete patient. Untick what a role should not do — for example, keep Refund only for the Accountant.
- Some things are never on this page because they must stay with the right person: only a doctor or the owner writes a diagnosis, ends a consultation or issues a certificate, and only the owner can erase or export a patient's data or change these settings.
- Pharmacy and Lab only appear if you've turned those modules on (Settings → Update Hospital → Hospital Facilities). Turning them on here won't show them if the module itself is off.
Example: to let only your accountant give refunds — untick Refund in every other column (Doctor, the other staff roles and Other staff), keep it ticked for Accountant, and save. Then open that staff member's Edit Staff page and make sure Accountant is one of their roles.
Example: to let a receptionist handle appointments, patients and billing but not see finance reports or manage doctors — untick Doctors and Reports in the Receptionist column and leave the rest ticked.
How do I see who changed what? (Audit Logs)
Settings → Audit Logs shows a history of activity in your hospital — bookings, edits, payments, settings changes and more — newest first.
- Each row shows when it happened, what the activity was, the role that did it (Owner / Doctor / Staff), the section affected, and the IP address.
- It's read-only — nothing here can be edited or deleted.
- Click Load more at the bottom to see older entries.
- The owner always has access. To control whether doctors/staff can open this page, use Settings → Roles & Permissions and tick or untick Audit Logs for that role.
Common problems
A staff member can do something I only allowed for another role. Check their roles on their Edit Staff page — someone with two roles gets what both allow.
Someone gets "You don't have permission to do this". That action is unticked for all of their roles. Tick it for one of their roles in Settings → Roles & Permissions, save, and ask them to reload the page.
A doctor or staff member still sees a section I unticked. They need to reload the page or log out and back in for the change to apply. New settings are picked up on their next sign-in or refresh.
I ticked a box but Pharmacy/Lab still doesn't show. Those modules must first be enabled in Settings → Update Profile → Hospital Facilities. Roles & Permissions only controls access to modules that are switched on.
I can't see Settings / can't change something. Most settings are Owner-only. Doctors and staff can change their own password and profile but not hospital-wide settings.
The prescription preview is blank / not updating.
Give it a second after each change (it re-renders the PDF). Make sure the accent colour
is a valid colour value like #1a56db. A very large top gap in letterhead mode can push
content onto a second page.
GSTIN won't save.
GSTIN is only used when GST enabled is turned on, and it must be a valid 15-character
GST number (example format: 22AAAAA0000A1Z5).
Account & Subscription — Help
This section explains your plan, what happens when it expires, and how billing for the OPDly service itself works. Subscription details are Owner-only.
What is a subscription / plan?
Your hospital pays for OPDly on a plan. Each plan allows a certain number of doctors and staff and runs for a period (monthly). New hospitals start on a free 30-day trial.
Where do I see my plan and expiry date?
- Log in as the Owner (doctors and staff can't see this page).
- Go to Settings → Subscription.
- Read the current-plan card. It shows:
- Your plan and status (Active / Trial / Expired)
- The valid-till date and days remaining
- How many doctors / staff your plan allows
- When you joined (member since)
How do I upgrade my plan?
- Go to Settings → Subscription.
- Under Upgrade your plan, pick a plan (use the Monthly / Yearly toggle to see prices; yearly is cheaper).
- Click Upgrade to … — this opens WhatsApp with a ready message to the OPDly team. Send it, and OPDly will set up your new plan and share payment details.
There's no online card payment — upgrades are arranged directly with OPDly (you can also use the Call or Email buttons on that page).
What are the plans?
- Trial — 1 doctor, 1 staff. Free for 30 days.
- Basic — 2 doctors, 2 staff.
- Pro — 5 doctors, 5 staff.
- Enterprise — 10 doctors, 10 staff. Custom pricing.
To change plans, contact OPDly — there's no online payment button; the OPDly team updates your plan for you.
How do I pay / renew?
- Go to Settings → Subscription.
- Use the WhatsApp, Call, or Email button to reach the OPDly team.
- Tell them you want to renew (or upgrade) — they'll share payment details (currently manual, e.g. UPI).
- Once you pay, OPDly updates your plan and your expiry date extends automatically.
Renewing early doesn't waste days — the new time is added to your remaining days.
What happens when my subscription expires?
Your account becomes suspended. This means:
- You can still log in and view everything (all your data is safe).
- You cannot create or change anything — no new appointments, bills, patients, etc.
- A banner appears reminding you to renew.
Nothing is deleted — as soon as you renew, everything works again.
I got a "subscription expired" message when saving. What do I do?
Your plan has expired and the account is suspended. Renew with OPDly to restore full access. Until then you can view your data but not make changes.
I got a "plan limit reached" message. What does that mean?
You've reached the number of doctors or staff your plan allows. Either remove someone you don't need, or upgrade to a higher plan (contact OPDly). See Doctors & Staff.
Is my data safe?
Yes. Your data stays intact even if the subscription lapses — expiry only blocks changes, it never deletes anything. OPDly also keeps encrypted daily backups.
Medical Certificates
Issue a printed medical certificate for a patient — sick leave, fitness to resume duty, rest, or confirmation of illness. The wording is written for you and you can edit it before printing. Certificates are kept in a register so you can reprint one at any time.
How do I issue a certificate?
- Go to Certificates in the left menu and click Issue Certificate.
- Choose the Certificate type from the dropdown:
- Medical / Sick Leave Certificate — the patient was treated and needs leave from work or school. The most common one.
- Fitness Certificate — the patient is fit to resume work or school.
- General Medical Certificate — states the illness, treatment or condition.
- Rest / Treatment Certificate — recommends rest for a set period.
- Certificate of Illness — confirms the patient was treated for a condition.
- Fill the form:
- Patient (required) — start typing the name or phone number and pick the patient from the list. The patient must already be added in OPDly.
- Doctor (optional) — the doctor whose name and registration number print in the signature block. You can skip it, but most certificates should name a doctor.
- From / To (required for Sick Leave, Rest and Illness) — the period the
certificate covers. Both days are counted, so
1 Septo3 Sepprints as 3 days. - Fit to resume duty from (required for Fitness) — the date the patient can return.
- Date of examination (required for General Medical) — the day you examined them.
- Diagnosis / condition (optional) — for example
Viral fever. Leave it blank and it is left off the certificate entirely — useful when a patient does not want their condition written on a letter for their employer. - Remarks (optional) — one extra line printed under the main text. You can skip it.
- Check the certificate wording box. The sentence is written for you and updates as you change the type, dates or diagnosis — you never have to type the boilerplate.
- Edit the wording if you need to. The box is fully editable: whatever it says is exactly what prints, and your version is saved for reprints. If you change your mind, click Reset to default wording to bring the generated sentence back.
- Click Issue & Print. The certificate opens as a PDF in a new tab, ready to print.
How do I print a certificate again?
Go to Certificates.
Find the row — the newest are at the top. Two boxes above the list help:
- Search (optional) — type the patient's name, their patient ID
(e.g.
CCH-000042), their phone (e.g.9876543210), or the doctor's name. The list narrows as you type. - All types (optional) — narrow to one kind of certificate, e.g. Sick Leave.
You can skip both. The register shows 20 at a time — use Previous / Next at the bottom, which also tells you which page you are on.
- Search (optional) — type the patient's name, their patient ID
(e.g.
Click the printer button on that row. The same PDF opens again, exactly as it was first issued.
Reception can reprint a certificate without a doctor's help.
Common problems
- A patient I know exists isn't found — check the spelling, and clear the All types dropdown: their certificate may be a different kind than the one you filtered to.
- Search finds nothing at all — the search looks at the patient and the doctor only, not at the diagnosis or remarks written on the certificate.
- "Too many people match…" — a very common name (e.g.
Singh) matches more patients than OPDly will search through at once, so the list you see may be missing someone. Type the phone number or the patient ID instead, which is always exact.
Who can issue a certificate?
- Owner and Doctor can issue, and can delete.
- Staff (reception) can see the register and reprint, but cannot issue or delete one — a certificate is a medical statement about a patient.
- The owner can hide the Certificates menu from any role by unticking Certificates in Settings → Roles & Permissions. That only hides the register; it never lets staff issue one.
What does the certificate look like?
It prints on the same letterhead as your prescriptions, using whatever you set up in Settings → Prescription PDF Format — letterhead image, watermark and footer all carry over. Set that up once and every certificate matches your other paperwork.
The certificate shows your hospital details, the patient's name, age/sex and Patient ID, the certificate text, and the doctor's name with a signature line.
Common problems
The patient does not appear when I search. The patient must be added in OPDly first. Go to Patients → Add Patient, then come back.
The certificate says the wrong number of days.
Both the start and end dates are counted. 1 Sep to 3 Sep is 3 days, not 2. Change the
dates and issue a fresh certificate.
I need different wording than what OPDly writes. Just type over it in the certificate wording box before clicking Issue & Print. Your wording is what gets printed and saved. To go back to the standard sentence, click Reset to default wording.
The wording still shows blanks (__________).
Fill in the missing dates — the sentence fills itself in as you complete the form.
I issued a certificate by mistake. Delete it from the list (owner or doctor only) and issue a correct one. Note that a copy already handed to the patient still exists on paper — deleting only removes it from your register.
The certificate has no hospital logo or letterhead. Set it up in Settings → Prescription PDF Format. The certificate uses the same settings as your prescriptions.
The PDF did not open. Your browser probably blocked the pop-up. Allow pop-ups for OPDly, then click the printer button again.
Troubleshooting — "I'm Stuck" Help
Quick fixes for the most common problems. Try these before contacting support.
I can't log in
- Wrong password — use Forgot Password to reset it.
- "Account suspended" — usually a subscription issue; renew with OPDly (your data is safe).
- Double-check you're using the same email you registered with, with no extra spaces.
The page won't load / looks broken
- Refresh the page (pull down on mobile, or press the reload button).
- Check your internet connection.
- Try a different browser (Chrome works best) or clear the browser cache.
- If it just updated, you may be on an old version — a refresh usually fixes it.
A change I made isn't showing
- Refresh the page. Most screens update live, but another device/tab may need a reload.
- For doctors not appearing in the booking list, a full reload clears the cached list.
I can't create or save anything (bills, appointments, etc.)
- You may see a subscription expired message — your plan has lapsed. Renew with OPDly.
- Your role may not allow it (e.g. staff can't edit hospital settings). Ask the Owner.
The patient didn't get a WhatsApp message
- Make sure you entered a valid 10-digit phone number on the appointment/bill.
- WhatsApp messages are best-effort — if the number is wrong or WhatsApp is off for your hospital, it won't send. You can still share the link manually.
I can't find a patient / appointment
- Try searching by phone number instead of name (or the reverse).
- Check the date — the queue shows one day at a time; use the day arrows.
- Check spelling; partial names work too.
A menu (Pharmacy / Lab) is missing
That module is turned off for your hospital. The Owner can enable it in Settings → Update Profile → Hospital Facilities (Pharmacy available / Lab available).
I deleted something by mistake
Doctors, staff, and patients go to a recently deleted view and can be restored (Owner only). Bills are cancelled, not deleted, and stay in records.
A number / total looks wrong on a bill
Check each line's Amount and Discount, plus any Extra Discount and Round Off — all of these change the Grand Total. See Billing.
The doctor can't start the next patient
The previous consultation was never ended. Clicking Consult now shows a box naming the patient still in the room — choose Complete & Start (that visit was finished) or Send Back & Start (they stepped out and are coming back; they keep their token). See Appointments → "Another consultation is open".
Still stuck?
Note down what you were doing and any error message (if it shows a "Ref:" code, include it — it helps us find the problem fast), then contact OPDly support.