L
Leaphealth - OSDocs

Items, SKUs and CSV import

Manage the medicine and supply catalogue (SKU master), understand item fields and prices, and bulk-import items and opening stock from a CSV file.

An item (shown as a SKU on the pharmacy screens) is one thing you stock: a medicine in a given strength and form, a consumable, an implant, a housekeeping product. The item list is shared by all centres in your organisation. Stock quantities are then held per store and per batch.

This page is for administrators and pharmacy leads who maintain the catalogue. Doctors prescribe from the same list, so keeping it accurate matters for prescribing as well as for billing.

Where items are managed

Screen

Menu

What it lists

Pharmacy, SKU master tab

SettingsInventoryPharmacy

All active items of every type

General Store, Item master tab

SettingsInventoryGeneral Store

Active items of type HOUSEHOLD only

Both menus are visible to administrators only.

Large catalogues are not shown in full

If your catalogue is large, these lists do not show every item, and the search box only searches the items that are shown. Items that do not appear on screen still exist and can be prescribed and billed.

Item types

Type

Typical use

DRUG

Medicines. Only drug items can be prescribed and can carry prescribing defaults. Drug lines on a bill must have a batch.

CONSUMABLE

Gloves, syringes, dressings

SURGICAL

Surgical supplies

IMPLANT

Implants

EQUIPMENT_CONSUMABLE

Parts and consumables for equipment

HOUSEHOLD

Housekeeping, stationery and other general-store stock

OTHER

Anything else

Controlled medicines carry a schedule: H, H1, X or NDPS. An item marked as controlled must have a schedule.

What the item fields mean

Field

Meaning

SKU ID / Item ID

The item code. If you do not give one, LeapHealthOS creates a code starting with ITEM-.

Brand name, Generic / composition

The brand name is shown as the item's name. When an item is imported without a brand name, the generic name is used instead.

Drug code

Your own unique code for the medicine. It must be unique across the organisation and is used to match rows on re-import.

Manufacturer, Presentation (dosage form), Strength, Route

Descriptive drug details.

HSN, GST

Tax code and tax rate used on bill lines for this item. Prices are treated as tax-inclusive unless the item says otherwise.

MRP

Maximum retail price per pack. Used on a bill when the batch being sold has no MRP of its own. A bill line can never be priced above the MRP.

Selling price

Default price used when neither the batch nor the item has an MRP.

Cost

Default cost of the item, used when a batch has no cost of its own.

Reorder threshold

The quantity at or below which the item shows as Low stock in every store that has no store-specific rule.

Base unit

The unit stock is counted in, for example TAB. An item needs a base unit before any stock can be received.

On screen, prices are entered and shown in rupees.

SKU master (Pharmacy)

The SKU master tab shows SKU ID, SKU (brand and generic), Manufacturer, Group, Pack, MRP, Selling, Cost, Threshold and Consumable. Search with "Search brand, generic, SKU ID…".

Edit a SKU

Click the edit icon on a row to open Edit SKU. You can change:

  • Brand name and Generic / composition
  • Manufacturer
  • Consumable (Yes / No)
  • MRP / pack (₹), Selling / pack (₹), Cost / pack (₹)
  • Reorder threshold

SKU ID, Pack, Group and Sub group are shown read-only. Click Save changes.

The Consumable switch changes the item type

Saving the Edit SKU dialog sets the item type to CONSUMABLE when Consumable is Yes, or to DRUG when it is No. An item that was SURGICAL, IMPLANT or any other type is changed to one of these two. Avoid using Edit SKU on items of other types.

Group, Sub group and Pack may show a type or a dash

These columns do not yet show the group names and units your items belong to. They fall back to the item type, the dosage form or "—".

Add a single SKU

Add SKU opens the form your implementation team publishes for the Inventory — Pharmacy: Add SKU placement. Items saved from it are created as DRUG items. Click Save SKU; you see "SKU saved". If the form has not been set up yet, the dialog shows "No Add SKU form is configured". See Clinical forms and placements.

The general store works the same way: Add item opens the form your implementation team publishes for the Inventory — General store: Add item placement, and creates HOUSEHOLD items. After saving there, refresh the page to see the new item.

Item master (General Store)

The Item master tab lists Item ID, Item, Item type, Default unit cost and Threshold. The edit icon opens Edit item, where you can change Item name and Reorder threshold; Item ID, Section and Unit are shown read-only. Click Save changes. Saving keeps the item as HOUSEHOLD.

Import items and opening stock from CSV

Use the CSV import to load your catalogue in one go and, optionally, the stock you already hold.

Pick the store

Administrator with the store MANAGER role

Open SettingsInventoryPharmacy and check the store picker in the top bar. The import uses the centre of the selected store.

Open the upload dialog

On the SKU master tab, click Upload CSV.

Expected result: The Upload SKUs dialog opens.

Download and fill the template

Click Download template to get pharmacy_skus_template.csv. Fill one row per item (see the column reference below). Save it as CSV.

Upload

Drop the file in the dialog or browse to it (5 MB at most) and click Upload.

Expected result: A message such as "12 items added from stock.csv", or "10 items added, 2 rows failed".

Upload CSV files only

The dialog accepts .xlsx and .xls files, but only CSV files are read. An Excel file fails. Save your spreadsheet as CSV before uploading.

The result message does not list the details

The message only counts items added and rows failed. It does not show items that were updated, whether stock was received, or why a row failed. If the numbers look wrong, check the SKU master and the Stock tab against your file, using the checklist under "When rows fail" below.

Column reference

Use the column names from the downloaded template. Capital letters and spaces in column names do not matter.

Column

Required

Notes

brand_name or generic_name

Yes, one of them

The item name is the brand name, else the generic name.

dosage_form

Yes

Needed on every row, including household items.

drug_code

No

Used to find an existing item. Must be unique.

item_type

No

One of the item types above. If empty, is_consumable decides between CONSUMABLE and DRUG.

is_consumable

No

yes / true / y / 1 means yes. Not in the pharmacy template; add the column if you need it.

dosage_strength, dosage_unit

No

Strength must be a positive number.

default_route, manufacturer

No

bundle, sub_bundle

No

Therapeutic group and sub-group. Created if they do not exist.

hsn_code

No

is_controlled, controlled_schedule

No

Schedule must be H, H1, X or NDPS.

is_substitutable, rx_norm_code, atc_code

No

mrp, selling_price

No

In rupees.

base_unit

Needed for stock

A unit code such as TAB. A code you do not have yet is created.

frequency, duration_days, quantity, instructions, is_morning, is_afternoon, is_night, is_sos

No

Prescribing defaults used to prefill prescriptions. Only allowed on DRUG items. Duration and quantity must be positive whole numbers.

Stock columns

Add these to receive opening stock for the row. Leave qty empty or 0 for catalogue-only rows.

Column

Notes

qty

Quantity to receive.

unit_cost

Cost per unit, in rupees. Required when qty is set.

batch_number

Required when qty is set.

expiry_date

Optional. Format YYYY-MM-DD.

grn_number

Your receipt number. Required when qty is set.

supplier_code, supplier_name

Required when qty is set. A supplier with that code is created if it does not exist.

The template also contains Opening stock and Consumption columns. They are ignored; use qty for stock.

How the import treats your rows

  • Each row stands alone. A bad row fails on its own; the rest of the file still loads.
  • Existing items are updated, not duplicated. A row is matched to an existing item by drug_code, otherwise by an exact item name. Only the MRP and selling price are updated, plus the base unit if the item had none. If two active items share the name, the row fails: add a drug_code.
  • Stock goes into the pharmacy store. All stock rows are received into the single active PHARMACY store at the centre, as one receipt per supplier and grn_number. You need the MANAGER role at that store.
  • Re-uploading is safe. If a supplier and grn_number were already imported, those stock rows are skipped, so the same stock is never added twice.

General Store uploads also put stock in the pharmacy

Upload CSV on the General Store screen (the Upload items dialog) uses the same import. Its template has no stock columns. If you add stock columns anyway, the stock goes into the centre's pharmacy store, not the selected general store.

When rows fail

Check the rows that did not appear, or whose stock is missing, against this list:

Check

Fix

Every row has a brand or generic name, and a dosage form.

Fill them in.

Prices and quantities are numbers of zero or more, in rupees.

Remove currency symbols and text.

Rows with qty have unit_cost, batch_number, grn_number, supplier_code and supplier_name.

Fill all the stock columns.

Dates are written as YYYY-MM-DD.

Reformat the dates.

No two active items share the same name.

Add a unique drug_code.

The centre has exactly one active PHARMACY store.

See Stores and store roles.

The supplier and grn_number were not imported before.

Use a new grn_number for new stock.

Schedules and item types use the values listed on this page.

Correct the spelling.

Prescribing columns are only filled for DRUG items.

Clear them or change the type.

Rows with stock have a base_unit.

Add the unit code.

Things you cannot do on screen yet

Units of measure, purchase units and pack sizes, item categories and groups, and deactivating an item have no screen in LeapHealthOS yet. Your implementation team can set them up for you. Group names and base units can also be created through the CSV import.

inventorypharmacySKUitemsCSV importopening stockadmin

Was this page helpful?

Last updated on

On this page