Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/FlasheyEstudi/Oasis-Liquido/llms.txt

Use this file to discover all available pages before exploring further.

Pharmacists operate the commercial and dispensing layer of Oasis Liquido. Each pharmacist account is linked to a single pharmacy where you control stock levels through a Kardex-style inventory system, ring up sales at the point of sale, and fulfill doctor-issued prescriptions by scanning their QR codes.

What pharmacists can do

  • Browse and adjust your pharmacy’s live inventory (Kardex)
  • Process retail sales at the point of sale (POS), with or without a prescription
  • Scan a patient’s QR code to verify and fulfill prescription lines
  • Create delivery orders when a sale includes home delivery
  • Review inventory movement history for restocks, sales, and manual adjustments

Pharmacy profile

Your account is associated with a single pharmacy through PharmacyManagerProfile.
FieldDescription
pharmacy_idThe pharmacy you manage; set by an administrator during onboarding
All inventory queries, sales records, and prescription fulfillments are scoped to this pharmacy_id automatically.

Kardex inventory management

Every medicine at your pharmacy has an Inventory record that holds:
FieldDescription
quantityCurrent units in stock
min_stockThreshold below which a low-stock alert is triggered
unit_priceRetail price per unit
batch_numberBatch or lot identifier (optional)
expiration_dateExpiry date for the current stock batch (optional)

Inventory movements

Every stock change is recorded as an InventoryMovement with one of the following types:
TypeWhen it occurs
restockYou add new units from a supplier delivery
saleUnits leave stock as part of a completed sale
adjustmentManual correction (e.g., damaged goods, count reconciliation)
Movements are immutable — once recorded they cannot be deleted, giving you a complete audit trail of all stock changes.
The min_stock field triggers a low-stock indicator in the inventory dashboard. Set it to reflect your typical reorder lead time so you never run out of critical medicines.

Processing a sale (POS)

A sale links one or more SaleItem records to an optional patient and an optional prescription. Use the CreateSaleRequest payload when ringing up a transaction:
{
  items: [
    { medicine_id: string; quantity: number; unit_price: number }
  ],
  patient_id?: string;          // Optional — ties the sale to a patient record
  prescription_id?: string;     // Optional — required for prescription-only medicines
  is_delivery: boolean;         // true creates a DeliveryOrder
  delivery_address?: string;
  delivery_lat?: number;
  delivery_lng?: number;
  notes?: string;
}
When is_delivery is true, the platform automatically creates a DeliveryOrder in pending status so an available driver can accept it.

Fulfilling a QR prescription

When a patient presents a QR prescription, scan it to retrieve the qr_data string and validate it against the platform:
// Step 1 — validate the QR
POST /api/v1/prescriptions/validate
{ qr_data: string }

// Step 2 — fulfill lines
POST /api/v1/prescriptions/{id}/fulfill
{
  pharmacy_id: string;
  items: [
    { prescription_line_id: string; quantity_fulfilled: number }
  ]
}
You can fulfill prescription lines partially across multiple visits. The prescription status advances from active to partially_fulfilled and finally to fulfilled once all quantities are dispensed.
Fulfillment deducts the dispensed quantity from your inventory (sale movement type) and records which pharmacy completed the order on the prescription record (fulfilled_pharmacy_id).

Build docs developers (and LLMs) love