Concept B · order-first
Fulfillment
Every vial that has arrived needs a label before it can ship. The template is shared; the state decides what goes on it.
Waiting on a pharmacist
1
| Patient | Contents | Ships to | Template | Waiting | Next |
|---|---|---|---|---|---|
| Devon Review |
Tirzepatide / B6 5 / 2 mg/mL | TX | Elite Care · 11 pt | 2 days |
Only a pharmacist can approve a proof, and every review item has to be ticked before the approval is accepted. This tab shows an operator why nothing is shipping; the approving happens behind the pharmacist's own door.
Approved, waiting to be printed
1
-
Harper Review · Rx #226 · Sermorelin Acetate 1 mg/mL
Label preview
Harper Review700 S Flower Street, Los Angeles, CA 90017Sermorelin Acetate 1 mg/mL · 5 mLInject 0.2 mL subcutaneously at bedtime five nights weekly.Compounded drug · refrigerate · do not freezeQuestions? 1-844-951-3310 (toll-free)Rx #226 · Lot STR-2608-DUse by 28 Feb 2027
Printed
3
-
Frankie Review · Rx #205 · Semaglutide / B12
Label preview
Frankie Review1 Market Street, San Francisco, CA 94105Semaglutide / Cyanocobalamin 5 / 1 mg/mL · 3 mLInject 0.25 mL subcutaneously once weekly.Compounded drug · refrigerate · do not freezeQuestions? 1-844-951-3310 (toll-free)Rx #205 · Lot STR-2607-AUse by 14 Feb 2027 -
Noa Review · Rx #211 · NAD+ 100 mg/mL
Label preview
Noa Review88 Guerrero Street, San Francisco, CA 94103NAD+ 100 mg/mL · 5 mLInject 0.5 mL subcutaneously twice weekly.Compounded drug · refrigerate · do not freezeQuestions? 1-844-951-3310 (toll-free)Rx #211 · Lot STR-2559-CUse by 30 Nov 2026 -
Tenley Review · Rx #218 · GHK-Cu 50 mg/mL
Label preview
Tenley Review4210 Yoakum Blvd, Houston, TX 77006GHK-Cu 50 mg/mL · 5 mLInject 0.2 mL subcutaneously daily.Compounded drug · refrigerate · do not freezeRx #218 · Lot STR-2588-BUse by 22 Jan 2027
One shared template, with per-state configuration
| Ships to | Dispensing pharmacy | Banner | Toll-free on label | Type size | Insert rules | Printable |
|---|---|---|---|---|---|---|
| CA | Striker Pharmacy | Striker | Required | 12 pt | 3 | Yes |
| TX | Elite Care Pharmacy | Elite Care | Not required | 11 pt | 4 | Yes |
| CO · OH · SD · VT | Elite Care Pharmacy | Elite Care | Not required | 11 pt | — | Yes |
| UT | Elite Care Pharmacy | Elite Care | — | — | — | Blocked |
Two different things drive a label, and keeping them apart is what stops a new state being a new template:
- Which pharmacy dispenses decides the banner — name, address, licence, pharmacist-in-charge.
- Where the parcel is going decides the required statements, the type size, and what has to appear on the insert.
Adding a state is a row of configuration, not a new layout. A state that only has a pharmacy assigned is routing-only and stays blocked from printing until its label rules are filled in, which is why UT can take an order but cannot produce a label.
What this page assumes
- Labels earn a tab because they are a real pile. Unlike arrival, which is an action on one order, proofs genuinely accumulate waiting on a second person, and an operator needs to see that pile to know why shipping has stopped. It sits between Sent and To ship because that is where it happens.
- One base template, one config row per state. The 3×2 inch layout is print-verified and shared. What varies is the banner (driven by which pharmacy dispenses) and the statements, type size and insert rules (driven by where the parcel is going). Those two axes are deliberately separate — Striker dispenses from Texas but ships to California, so the pharmacy and the state are not the same question.
- Ops can see this queue but cannot clear it. Approval is pharmacist-only and requires every review item ticked. Showing the queue without the button is deliberate: the operator's question is "why is nothing moving", not "let me approve it myself".
- Two print routes, one rendered label. Operators can print here or leave an approved proof for the office station's next check; either route records the print, and a reprint is recorded separately.
- The station pulls; the app never pushes, because it cannot reach a printer in the office. Described in plain language rather than as a command to run: an operator should never be told to open a terminal.
- The state table is the answer to not rebuilding a label per state. It is shown in the console, not just held in a config file, because the person adding a state needs to see what a complete row looks like — and see that UT is missing one.
- This whole tab needs the internal-compounding branch. The merged code creates proofs already approved with placeholder text, and nothing ever prints them.