PI Transfer Tracker β How to Use
A quick guide for daily tasks. Bookmark, print, or save as PDF (button top-right).
Website: https://red-island-0bb34e510.7.azurestaticapps.net
Contents
- π What's New (August 2026)
- β USP Overnight Shipping Policy (Tacrolimus / Cyclosporine ophth, oil-based injections, etc.)
- Signing In (365 or Local Account)
- Creating a New Transfer (Single + Bulk Upload with OCR)
- Non-Transfer Pickup at Another Pharmacy (incl. bulk pickup orders)
- Refilling an Existing Transfer (receiving pharmacies β use this, not + New Transfer)
- Editing or Deleting a Transfer
- Asking a Question (with Teams Notification)
- The Alerts Tab
- Credit Card Workflow
- Shipments β Direction Filter, Create, Receive
- π¦ Packing Checklist (shipping team's daily worksheet)
- Printing & Batch Operations
- FedEx Tracking β Auto, Manual, & Click-through
- Marking Transfers Paid / Charged
- Reports β Summary, Detail, Packing Checklist
- Admin Tasks (incl. multi-day shipping schedule, audit log)
- Email Notifications (daily summary + shipment notices)
- Status Definitions (incl. Pending Clarification, Needs Formula)
- Common Questions
π What's New (August 2026)
Quick rundown of the latest updates so the team isn't surprised by changed behavior.
Partial-receive for bulk shipments (mark what's missing)
- When you receive a bulk shipment and some prescriptions didn't actually make the box, you no longer have to check every Rx or nothing. Use Receive Partial and check off only what you have β anything unchecked gets flagged as missing so the fill pharmacy knows to look.
- The fill pharmacy sees the missing items highlighted on the shipment and gets a Teams notification.
- Transfers where the entire shipment for that patient was missing are automatically pulled off the bulk box, reverted to In Progress, and put back on the fill queue for the next shipment.
Γ Reship missing (fill pharmacy pulls flagged Rx off a Received bulk)
- Once the receiving pharmacy flags a prescription as missing (via Receive Partial), the fill pharmacy can open the shipment and click Γ Reship missing next to that transfer.
- That transfer comes off the bulk shipment/packing slip and goes back to In Progress so it lands on the next box out.
- Available only for transfers that were flagged as missing β if the receiver marked the whole shipment as fully received, the button doesn't appear.
Γ Remove / Γ Not in box (before a shipment is received)
- Pending bulk β the origin pharmacy sees a Γ Remove button on each transfer in the shipment to correct an over-packed manifest before the box goes out.
- In Transit / Delivered β same button, labeled Γ Not in box. Use it if you realize a script was added to the packing slip but didn't physically ship. The transfer is pulled off the shipment and reverted to In Progress.
Intake Location field
- New Transfer / Edit Transfer now has an Intake Location field β where the call or fax was originally received (may be different from the Origin/dispensing pharmacy).
- Useful for cross-store call routing: the person who took the intake can be traced back even if a different location becomes the origin.
Urgent / High-Priority flag + same-store warning
- Mark any transfer as π¨ Urgent on the New/Edit form β it gets a red badge on all lists and sorts to the top so the fill team sees it first.
- If you accidentally set the Origin and Fill to the same store, a yellow warning appears at submit-time so you can catch the mis-route before saving.
Mark as Duplicate of #___
- Found two transfers for the same patient/Rx? Open the duplicate β click Mark as duplicate of #___ β type the ID of the canonical transfer. The dupe closes with a link pointing to the original so the history stays clean.
Per-transfer History (audit trail)
- Every transfer detail modal now has a History section showing every status change, edit, shipment add/remove, question, and comment with a timestamp and the user who did it.
- Use it when investigating "how did this get to X status?" or "who changed the ship-to address?"
Search by Transfer ID
- The top search box now matches Transfer IDs (e.g.,
21680) in addition to patient names, Rx#s, and drug names. Faster jump to a specific transfer.
Teams routing improvements
- Questions and status alerts now route to the correct pharmacy chat based on the effective origin β for non-transfer pickup orders, that's the pickup pharmacy, not the fill pharmacy. So if Erie is compounding but Jamestown is doing the pickup, the alert lands in the Jamestown chat.
- Erie (the hub) is excluded from routing β an Erie-only transfer notifies whoever's on the other side.
Admin: view/edit stored Teams webhook URLs
- Admins can now audit + edit the raw Teams webhook URLs on the Admin page instead of hunting through Azure Storage Explorer. Fixed a bug where the password-manager autofill duplicated the same URL across every location.
Drug name required on every Rx line
- The Rx items table now requires a drug name on every populated line. Catches the case where someone tabbed past the datalist without picking a value β no more transfers submitted with a blank drug field.
Refill fix: no more ghost file metadata
- Fixed a bug where creating a refill sometimes carried over stale file metadata from the source transfer (making it look like a file was attached when it wasn't). Refills now start clean and inherit only real, uploadable files.
Printing no longer changes status
- Printing a transfer / summary sheet used to auto-advance the status to In Progress. That's gone β print freely without touching status.
July 2026 (previous month)
Active / Complete / All view toggle on Transfers
- The old Show completed checkbox is gone. In its place: a three-button toggle β Active, Complete, All β right next to the status dropdown.
- Active (default) hides transfers that are complete for your pharmacy. What "complete" means depends on which side you're on:
- Fill pharmacy (Erie for compounds) β closes out at Shipped. The package left; your work is done.
- Receiving pharmacy (destination for pharmacy ship-tos and pickup orders) β closes out at Received. You still see it in Active until someone at your pharmacy checks it in.
- Patient direct-ships β closes out at Shipped for everyone. No in-pharmacy receive step.
- Canceled β closes out for everyone immediately.
- Complete flips the view so you only see transfers that are closed out for your pharmacy.
- All ignores the completion rule β same behavior as the old "Show completed" checkbox on.
- Admins in All-locations mode: set the Origin filter to a pharmacy to see that pharmacy's Active view. Without a filter, a transfer is considered complete only when both sides are done (received or canceled).
- If you had saved a default view with "Show completed" set, the app migrates it automatically the first time you load β no reconfiguration needed.
Non-transfer skips the PK Transfer Sheet requirement
- On + New Transfer, when you check π Prescriptions will be picked up at another pharmacy (Non-transfer), the PK Transfer Sheet upload becomes optional. Same rule for the Formula Worksheet (already optional).
- The label and hint text update in real time as you check/uncheck the box β no need to reload the form.
- Reason: the order originates at the fill pharmacy, so there's no transfer paperwork to attach.
Bulk Upload supports non-transfers
- New batch-level checkbox π Non-transfer in the "Apply to all new drafts" bar at the top of Bulk Upload, alongside the Fill Location dropdown.
- Check it and set the Pickup pharmacy dropdown before you upload β every draft created from the file inherits both settings.
- In the review queue table, each row has its own Pickup pharmacy dropdown so you can override the destination on individual drafts without opening the full editor.
- Drafts flagged as non-transfer skip the PK sheet requirement but need a pickup pharmacy to be marked Ready.
Origin filter now catches non-transfer pickup orders
- When Erie fills a non-transfer script that's being picked up at Jamestown, filtering Origin = Jamestown now finds it. The pickup pharmacy is treated as the "effective origin" so the team sees everything that belongs on their worklist.
- Non-transfer rows show as Jamestown β Erie with a yellow π Non-transfer badge under the FromβFill column so you can tell at a glance that Erie is doing the compounding but Jamestown is handing it off.
Pickup signature capture
- The pickup signature pad now works with a mouse as well as touchscreens and styluses β sign directly in the browser on any device.
Anticipated Ship Date now saves reliably
- Fixed a Chrome-specific bug where changing the anticipated ship date on an existing transfer sometimes reverted on save. The field now honors whatever's in the date picker at the moment you hit Save.
- New Recalculate button next to the field clears your manual override so the automatic appointment-based calculation can take over again.
Houston renamed to Spring
- The Texas store is Spring in the portal (matching Active Directory / Entra ID). Same location, same address, same team β just the name the app uses.
June 2026 (previous month)
payment auto-sync
- The portal now talks to Tabz directly. When a patient pays in Tabz (or Tabz creates a cart for them), the matching transfer updates automatically β no need to come back and click Mark Paid.
- New Payment column on the All Transfers table shows the rolled-up status: Pending, π Tabz Cart Created, Partial, β Paid (Tabz), β Paid in Store, or Canceled.
- New Pay Date column shows when payment posted.
- The detail modal shows a per-Rx Tabz badge on each item so you can see exactly which scripts are paid and which are still in the cart.
- Manual "π² Paid in Store" override is still available β even on transfers that already have a Tabz cart created, the small π² icon in the Actions column lets you mark it paid in store if the patient walks in and pays at the counter instead.
- Receipt PDFs are auto-pulled from Tabz when a script is marked paid.
Ship-to address behavior fixed
- On the New Transfer form, Ship To = Pharmacy is the default and the address field now auto-fills with the origin pharmacy's address when the form opens.
- Switch Ship To = Patient (or Delivery-Lancaster) β the address field clears so you can type the patient's address. Switch back to Pharmacy β it refills from the origin pharmacy.
- Saved addresses on existing transfers are no longer silently overwritten on page load. (The one-time backfill that fixed ~66 mis-addressed records is done and won't keep running.)
Sign-in screen
- New clean look matching the Training Portal: white centered card on a solid blue background.
- Microsoft 365 button is now the obvious primary action; the username + PIN form is hidden until you click the small "External users or contractors? Use the username & PIN login below" hint.
All Transfers table
- Wider layout (1800px) so all the new columns fit without column squish.
- Patient name now shows on two lines (last name then first) for consistent wrapping no matter how wide the column is.
- Save as default + Reset buttons moved to the start of the filter row so they're easier to find.
- New Ship-To type filter (Pharmacy vs Patient) on the filter bar.
- Pickup-at-pharmacy rows no longer show a π pin under Ship To β they match the regular Pharmacy rows for consistency.
Status, Alerts & Action Items
- Past Anticipated Ship overdue items now live on the Alerts tab badge (not Action Items). Action Items focuses on actionable Cancel acknowledgments / Open Questions.
- SLA / "Past Status Time Limit" check now excludes Received β completed transfers can't be overdue.
- Delivered patient-direct ships now count as complete for the completion filter (no separate Received step on those). Superseded by the July 2026 Active/Complete/All toggle β see above.
Receive shipment screen
- Select all / Unselect all toggle on the Rx checklist so you don't have to tick every box by hand for a clean shipment.
- If a bulk shipment is marked Received but a transfer in it is still In Progress, the portal now auto-heals the orphaned transfer status to Received on next load.
OCR drug-name cleanup
- OCR results are now matched against your known drugs list. So when a scanned sheet comes back with extra leading characters or stray symbols, the portal substitutes the closest matching known drug instead of saving the garbled name.
Tracking
- The tracking number field on the Edit ship / tracking modal is now editable, and changing it pulls the live FedEx status right then.
Patient name display
- Patient names are now displayed in consistent Title Case everywhere ("MALAGON, ALEX" β "Malagon, Alex"). The underlying stored data is unchanged.
β USP Overnight Shipping Policy
Effective June 2026 (from Megan Smith / clinical leadership):
Several of our compounded sterile medications now require overnight cold shipping to comply with updated USP standards. Patients receiving these medications are now charged $50 for overnight shipping directly to their home, rather than the previous 2-day option. Per USP regulations, these sterile-prepared medications must be shipped overnight and stored frozen.
Existing patients (6-month rule): If the patient has filled the medication within the last 6 months they get one complimentary overnight shipping; future fills are $50.
New patients or no fill in 6+ months: charged $50 on this fill.
Medications requiring overnight shipping
- Tacrolimus ophthalmic
- Cyclosporine ophthalmic
- Medroxyprogesterone injection
- Estradiol ophthalmic
- Oil-based injections, including:
- Testosterone
- Testosterone combination products
- Estradiol (oil)
- Progesterone (oil)
- Other oil-based injectable formulations
How the portal helps
- When you type one of these drugs on the New Transfer or Edit Transfer form, a yellow warning box pops up under the Items section with the policy reminder and a recommended charge.
- Once the patient name is filled in, the warning checks the patient's history: it tells you "β¨ Complimentary this fill" (if last fill was within 6 months) or "π° Charge $50" (new patient or 6+ months since last fill).
- The Delivery Charge dropdown now includes a $50 (USP overnight) option β set this when the patient is being charged.
- A portal-wide yellow banner reminds the team until they dismiss it.
Admins: editing the warning list
Go to Admin β Drug Warnings. You can:
- Edit the match patterns β one pattern per line, space-separated terms (all must be present). Example:
tacrolimus ophth matches drugs containing both "tacrolimus" and "ophth" (case-insensitive).
- Change the headline, body, and complimentary / standard messages that appear in the warning box.
- Change the charge amount ($50 today; if pricing changes, update here).
- Change the complimentary window (6 months today). Set to blank if the rule doesn't apply.
- Uncheck "Active" to disable a warning without deleting it.
- + Add Warning to create new rules for future policies β the same engine works for any drug-policy callout.
Signing In
The site requires sign-in before showing any data. Two options on the sign-in page:
Option 1: Sign in with Microsoft 365 (preferred)
- Click Sign in with Microsoft 365 (blue button with the 4-color MS logo)
- Use your @pharmacyinnovations.net account (same one you use for Outlook/Teams)
- Your default location comes from the admin's Users & Access list. If you see the wrong location, ask an admin to update your row β or use the location dropdown in the navbar to temporarily switch (saved across browsers and devices).
If you signed in before your location was set: Sign out and back in (or just refresh the page) β the app re-fetches your assigned location on each sign-in.
Option 2: External users / contractors (username + PIN)
For staff who don't have a Microsoft 365 license. An admin must create the account first.
- Click the light-gray hint "External users or contractors? Use the username & PIN login below."
- Enter your username and PIN (set by the admin)
- Click Sign in
To switch locations day-to-day, just change the dropdown in the navbar.
Creating a New Transfer
Two ways: Single Transfer (one at a time) or Bulk Upload (many transfers from a multi-page PDF).
Single Transfer
- Click + New Transfer
- The form opens with Single Transfer mode selected. Fill in:
- Patient Name (required)
- Patient info (DOB, allergies)
- Routing: Origin Location + Fill Location
- Shipping: Ship-to (Pharmacy or Patient), address. If you pick Pharmacy, the origin pharmacy's address auto-fills.
- Billing Method
- Patient Price (optional) β for the team to record the price charged to the patient. Surfaces on the detail modal and on the Summary Sheet printout.
- For future appointment? (optional) β when checked, set the appointment date. The anticipated ship date auto-calculates backward from the appointment so the box arrives in time.
- Anticipated Ship Date β auto-calculated from the destination pharmacy's receiving day(s). Editable.
- PK Transfer Sheet upload (required for normal transfers β drop a PDF, app auto-fills the fields it can read)
- Optional: Hard Copy Scan, Formula, Transfer Notes
- Items / Prescriptions: Origin Rx #, Receiving Rx # (filled in by fill location later), Drug, Qty
- Click Submit transfer
Non-transfer pickup at another pharmacy? Check the blue box at the very top of the form before entering patient details. See the
Non-Transfer Pickup section above.
Temporary patient address? When Ship To = Patient, a "π Temporary address" checkbox appears in the Shipping section. Toggle it on, optionally set a "Through" date β the receiving pharmacy will see a warning banner telling them not to update the patient's permanent address.
Tip: Upload a clean PDF transfer sheet first β the app auto-fills patient, DOB, drug, Rx# from the document. You just verify and submit.
Bulk Upload (recommended for the weekly stack)
Drop a multi-page PDF that contains multiple transfer sheets and the app splits them automatically.
- Click + New Transfer β toggle to Bulk Upload top right
- Set the bulk-level defaults if all transfers in this file share them:
- Fill Location β applies to every draft
- Anticipated Ship Date β applies to every draft
- π Non-transfer β check this if the whole stack is prepared-for-pickup orders (not real transfers). Set the Pickup pharmacy that appears next to it. Every draft inherits both. You can still override the pickup pharmacy per row from the queue table dropdown, and drafts flagged non-transfer skip the PK sheet requirement.
- Click π Select PDFs to upload and pick the file(s)
- The app processes each page:
- For digital PDFs with selectable text: pdf.js extracts fields instantly
- For scanned/image-only PDFs: Azure AI OCR reads each page (takes ~30-60 seconds for a 22-page file)
- Each "PATIENT Rx TRANSFER INFORMATION" page becomes one draft. Pages between transfer headers attach as hard copies to the preceding draft.
- Review the queue β drafts marked β Needs Review are missing required fields
- Click Edit on any draft to fix fields. Inside the editor:
- π View attached pages shows you the actual PDF pages assigned to this draft
- Save & return to queue saves edits
- Save & Approve saves AND immediately commits the transfer to the live system
- Click Approve on each ready draft, or Approve all N ready at the top to do them in one shot
The queue persists. Close the tab, sign out, leave the browser β when you come back, your in-progress bulk drafts are still there waiting. Use Clear queue to remove everything if you want a fresh start. Page images (for the View Pages button) are kept only during the active session and won't survive a browser reload.
Non-Transfer Pickup at Another Pharmacy
Use this when the order is originating from the filling pharmacy and being shipped to another pharmacy for the patient to pick up there. This is NOT a normal transfer β the receiving pharmacy doesn't put anything in their dispensing system, they just hand off the prepared scripts when the patient walks in.
How to use it
- Click + New Transfer
- At the top of the form, check the blue box "π Prescriptions will be picked up at another pharmacy (Non-transfer)"
- Pick the Pickup pharmacy from the dropdown. The Shipping address fields auto-fill with that pharmacy's address.
- Continue filling out the rest of the form like a normal transfer (patient, drugs, etc.)
- Submit
Both the filling pharmacy AND the pickup pharmacy will see the order on their Transfers list, so the pickup pharmacy knows they have an order coming.
PK Transfer Sheet is optional on non-transfer orders. The order originates at the fill pharmacy, so there's no transfer paperwork to attach. Upload one if you have it; the app won't block you if you don't.
Bulk pickup orders
Some weeks you send a stack of prepared scripts to another pharmacy as a single batch (e.g., 12 scripts for the Seminole pickup window). Instead of entering each patient:
- Check the π¦ Bulk pickup order box inside the pickup section
- Enter Number of scripts and a short Description (e.g., "Weekly batch of compounds for Seminole pickup customers")
- The Patient and Items sections are no longer required for bulk pickup orders
When NOT to use bulk pickup: If the receiving pharmacy will fill the script themselves (i.e., a true transfer), enter each one as a normal transfer with individual transfer sheets. Bulk pickup is only for the prepared-and-shipped-for-pickup case.
Refilling an Existing Transfer
Receiving pharmacies β use this, not + New Transfer. If the receiving pharmacy is processing a refill for an order that's already been transferred once, always use the Refill flow (+ Refill tab or the π Refill this Rx button on the transfer detail). This keeps the refill chained to the original so the full Rx History stays connected. Entering it as a brand-new transfer breaks that connection.
From an in-app transfer (normal path)
- Click + Refill (top tab)
- Search by patient name, Origin Rx#, or Receiving Rx#
- Click Refill this β on the right transfer
- Review the Shipping & Payment Defaults (auto-pulled from the original). Click Edit if anything changed (new address, different billing).
- Check the Prescriptions boxes for which Rx to include in this refill (some patients have multiple Rx and may only need one refilled)
- Click Continue to refill form β
- The form opens pre-filled. PK transfer sheet, hard copies, formula, and Rx numbers all carry over from the original β same prescription, same paperwork. Review everything, replace any document if something changed, then click Submit.
Refills don't require a hard copy scan (optional) and inherit the original's docs, so you usually don't have to upload anything new.
From the transfer detail (one-click)
Open any transfer β click π Refill this Rx at the top β fills out the new transfer for you. Same carry-over behavior.
Refill of a transfer NOT in the app (legacy / manual)
For patients whose original transfer pre-dates the app, you can enter a refill manually:
- Click + Refill β scroll past the search results
- Click + Enter Refill Manually in the dashed box at the bottom
- The form opens marked as Refill / Manual / Legacy with a gray "Prior Transfer Info" section at the top
- Fill in whatever you have for the original: prior pharmacy, prior Rx #, prior transfer date, notes (all optional)
- Fill out the rest like a new transfer (patient, drugs, PK sheet upload, etc.), then submit
The Prior Transfer Info section will appear on the transfer detail so the receiving pharmacy can see the context. This option is temporary β once enough refill history is in the app, you'll always find the original via search.
Viewing the refill chain
Open any transfer that's part of a refill chain β the detail modal shows an Rx History section listing the original at the top plus every refill below in chronological order. Each row shows the date, item count, and status. Click Open on any row to switch the modal to that entry. Works whether you opened the original or any refill.
Editing or Deleting a Transfer
Edit (all roles)
- From the Transfers tab, click any row to open the detail modal
- Click βοΈ Edit Transfer at the top
- Change anything: patient info, routing, ship-to, billing, documents, transfer notes
- Click Save changes
Use this to fix typos, update the ship-to address, swap the wrong origin pharmacy, or add documents that came in later.
Delete (admin only)
On the detail modal, admins see a π Delete button at the bottom-left. Click it and confirm β the transfer is removed permanently. Cannot be undone.
Quick inline edits
- Receiving Rx # β fill location staff can type the Rx# directly on each item row in the detail modal (no need to open Edit Transfer)
- Status from the All Transfers table β each row has a status dropdown right in the table. Change it without opening the row. Choosing "Canceled" still routes the transfer to Action Items for acknowledgment.
- Status from the detail modal β Update Status dropdown at the top of the modal
- Tracking + dates β click Edit ship / tracking on the detail modal. Entering a tracking number auto-flips status to Shipped.
Asking a Question About a Transfer
Use this when you need info from another pharmacy.
- From the Transfers list, find the patient β click β Ask question on that row.
(Or open the transfer and click β Ask Question at the top.)
- Type your question, click Send Question
- The other location's Teams gets a notification with a button to open the transfer (admin must have set up the webhook for that location)
- They reply in the transfer's Discussion section
- Your reply appears for them on their Alerts tab
You can see questions YOU asked that are still unanswered on the Alerts tab β "Questions You've Asked" section.
The Alerts Tab
The Alerts tab shows three sections:
- Open Questions β questions other team members asked YOUR location, waiting for your answer. Click Answer β to open the transfer.
- Questions You've Asked β your own pending questions still waiting on a reply.
- Transfers Past Status Time Limit β transfers stuck in one status too long (admin-configurable). Click any row to open and update.
The number badge on the Alerts tab = open questions for you + overdue transfers combined.
Credit Card Workflow
The CC Authorization form options only appear on the New Transfer / Edit Transfer form when you set Billing Method = Credit Card and the card is NOT already on file. The form has the PI logo, patient + Rx pre-filled, and a written authorization clause β no signature line.
Two ways to capture the card info:
Option A: Print blank, fill by hand, scan back in
- On the transfer form, set Billing Method to Credit Card
- Click π¨ Print blank form
- A one-page PDF prints with patient name and Rx auto-filled
- Customer / cardholder writes in their card info on the paper
- Scan the completed form
- Upload the scanned file in the same section, then submit the transfer
Option B: Fill on screen, save as PDF, upload
- Click βοΈ Fill on screen instead of Print blank
- A new window opens with the same form, but the card fields are editable inputs
- Cardholder types in their info (name, billing zip, card #, expiration, CVV)
- Click π¨ Save as PDF / Print at the top β pick "Save as PDF" as the destination
- Upload the saved PDF in the same section, then submit the transfer
Card data stays local. Whether you scan the paper or save as PDF, the card number is only entered on the customer's side. The app never transmits typed card data to the backend β same PCI posture as the original paper-scan flow.
Billing team opens the transfer β clicks the print-the-signed-form button (visible on the detail modal when a CC form is attached) when they need to charge.
Shipments
WorldShip Customer Reference β the bridge between this app and FedEx
This is the most important thing to understand about shipping: every time you generate a FedEx label in WorldShip, type either the Transfer ID or the BULK Shipment ID into WorldShip's "Customer Reference" field. The daily auto-match cron looks up FedEx shipments by reference and links the tracking back to the transfer or bulk shipment in this app β automatically. No manual tracking number entry.
- Patient-direct ship β Customer Reference = the Transfer ID (visible at the top of the transfer detail modal in a yellow band)
- Bulk pharmacy-to-pharmacy ship β Customer Reference = the BULK Shipment ID (e.g.,
BULK-2026-0042, shown after you create the shipment in the app)
Creating a Bulk Pharmacy Shipment (weekly box to another pharmacy)
- Shipments tab β + Create Shipment
- Destination Type: Pharmacy, To: pick the destination pharmacy
- The list below auto-loads transfers in In Progress heading to that pharmacy. (New / Pending Clarification / Needs Formula transfers don't appear here β they have to be moved to In Progress first.) Check the ones in this box.
- Tip: filter the list by Anticipated ship on or before to focus on what's due today.
- Carrier: FedEx. Tracking number is optional here β leave it blank.
- Click Create Shipment
- The app shows the new BULK Shipment ID prominently. Write it down or memorize it.
- The app offers to print a packing slip with the PI logo, BULK ID, Code128 barcode, From/To addresses, and the manifest. Put it inside the box.
- Go to WorldShip and generate the FedEx label. Type the BULK ID into WorldShip's Customer Reference field.
- Done. The daily auto-match cron will find the FedEx shipment by reference, link the tracking number to this bulk, and cascade it to every transfer in the box. Status auto-advances to Shipped.
You can come back later to add tracking manually if needed β open the bulk shipment in the Shipments tab and use Edit ship / tracking. But for typical FedEx shipping, the cron handles it.
Creating a Ship-to-Patient transfer
Patient-direct ships don't need a bulk shipment record. When you generate the FedEx label in WorldShip, type the Transfer ID (shown at the top of the transfer detail modal) into the Customer Reference field. The auto-match cron picks it up and links tracking to that transfer.
Seeing both directions β Incoming vs Outgoing
Pharmacies see both shipments going TO them (incoming) and shipments going FROM them (outgoing) on the Shipments tab by default. Each row has a colored chip in the first column showing direction relative to your location:
- Green β Incoming β shipments to your pharmacy
- Blue β Outgoing β shipments from your pharmacy
Use the [All] [β Incoming] [β Outgoing] toggle in the filter bar to scope to one direction.
You can also filter by Ship date range (top of the page) to scope to a particular shipping window.
Next-shipment banner
The blue strip just under the navbar shows "π¦ Your next pharmacy shipment to [your location] is expected on [Day MM/DD/YYYY]" β computed from your location's receiving day(s) configured in Admin β Pharmacy Mailing Addresses. If your location receives shipments multiple days a week (e.g., Tue and Thu), the banner shows the nearest upcoming day and lists the full schedule in parens.
Receiving a Shipment
- Shipments tab β focus the π· Scan tracking barcode field at the top
- Scan the FedEx barcode OR the bulk packing slip barcode
- The shipment opens β click π¦ Arrived at my pharmacy when the box is in your hand
- Check off each Rx as you unpack it
- Take photos of any damage with the camera button
- Click Mark Package Received
π¦ Packing Checklist (shipping team's daily worksheet)
The Packing Checklist replaces paper sheets the shipping team used to assemble manually. Pulls in every transfer scheduled to ship today, groups by destination pharmacy, and lets staff check items off as they pack. Each check is saved to the backend so other users (and managers) see live progress.
Opening the checklist
- Go to the Shipments tab.
- Click π Packing Checklist (top-right, next to Pull from FedEx).
- The Reports tab opens in Packing Checklist mode with Today's date applied and all destinations selected.
Filters
- Ship date: shortcut buttons for π
Today (default), Tomorrow, Next 7 days, All dates. Manually edit the date filter fields below if you want a custom range.
- Destinations to pack: a chip row with each PI pharmacy + a Patient (Direct Ship) chip. Click to toggle. Select all / Clear buttons on the right. Lancaster Delivery items merge into the regular Lancaster bulk box automatically β flagged π Delivery in the row notes.
Already-shipped orders are hidden. The checklist only shows transfers that still need to physically leave the building. Anything already in Shipped / Delivered / Received / Canceled status is filtered out.
The row layout
| Column | What it shows |
| β Checkbox | Click as you pack each item. Saves immediately to the backend; teammates see your checks within ~30 seconds. A small green "β [your name]" appears under the box so anyone can tell who packed which item. |
| Patient | Last name, First name. |
| Drug(s) β Qty | Each Rx item on its own line. |
| Type | New or Refill. |
| Ant Ship | The transfer's scheduled ship date (filtered to today by default). |
| FedEx Reference | The Transfer ID plus a Code128 barcode. Focus WorldShip's Customer Reference field and scan the barcode β no typing. |
| Notes | β Cold-chain, π Pickup-at-pharmacy, π Delivery (Lancaster), plus any transfer notes. |
π₯ Add Order to Today (when an order is ready early)
If an order is ready earlier than its scheduled ship date and you want to pack it today:
- Click π₯ Add Order to Today (green button in the date-filter row).
- Search by patient, transfer ID, drug, Rx #, or pharmacy.
- Click π
Set to Today on the row.
- The transfer's anticipated ship date is bumped to today, the modal closes, and the order appears under its destination group on the checklist.
The change is persisted on the transfer like any other ant-ship-date update β so the Teams notification for date changes will fire and the origin pharmacy will know.
π¦ Create Shipment & Print Slip (end of packing)
Each pharmacy destination group has a header button that appears when at least one row in that group is checked. It says, e.g., π¦ Create Shipment & Print Slip (7).
- Pack the items, check the boxes throughout the day as you go.
- When you're ready to close out a destination's box, click its π¦ Create Shipment & Print Slip button.
- Confirm β a new BULK shipment is created with the checked transfers as the manifest.
- The packing slip prints automatically (PI logo, BULK ID, Code128 barcode, full manifest with Cold / Pickup / Delivery badges).
- The new shipment's detail modal opens behind the print window β useful if an extra order comes in late and you need to + Add transfers to the box before generating the FedEx label.
- The checks for those transfers are cleared so the row visually settles to "done."
Patient (Direct Ship) and any non-pharmacy destinations don't show the Create Shipment button β they're handled as individual FedEx packages. Use the Transfer ID barcode in the FedEx Reference column to scan into WorldShip when you label each one.
Printing / saving as PDF
Click π Print / Save as PDF at the top of the Reports tab. The printed sheet is black-and-white (so it's photocopier-friendly) and includes empty checkboxes β ready to tick by hand. Color stays only on screen.
Daily reset: "Packed today" checks automatically clear at midnight β any check made before midnight on day X only counts for that day. No cleanup needed.
Payment Status (
Auto-Sync + Paid in Store)
Payment status now updates automatically when a patient pays in Tabz (or Tabz creates a cart). You only need to click anything when the patient pays at the counter β that's the Paid in Store override.
The Payment column
The All Transfers table has a Payment column showing the rolled-up status for the whole transfer (based on every Rx on it):
- Pending β no payment activity yet from Tabz.
- π Tabz Cart Created β Tabz has built a cart for the patient (text/email sent). Waiting on payment.
- Partial β some Rx are paid, some still pending.
- β Paid (Tabz) β fully paid through Tabz.
- β Paid in Store β billing team / counter marked it paid manually (patient paid at the pharmacy).
- Canceled β Tabz canceled the order.
The Pay Date column shows when the payment posted.
Tabz auto-sync β how it works
- Tabz sends the portal an event each time a prescription goes pending β cart created β paid β canceled. The portal matches it to a transfer by Rx number first, then by patient name + recent transfer (7-day window) as a fallback.
- When matched via patient name, the portal also back-fills the Rx number on the item so the next event matches directly without the fallback.
- Receipt PDFs are pulled and stored automatically when an Rx is marked paid β viewable from the item row in the detail modal.
Per-Rx detail
Open any transfer's detail modal β each Rx row shows its own Tabz status badge so you can see exactly which scripts are paid and which are still in the cart. (Helps when a patient pays for 2 of 3 scripts and you need to know which one is still outstanding.)
The "π² Paid in Store" override
The Actions column shows a small blue π² icon button on any transfer that isn't fully paid yet β including ones with a Tabz cart already created. Click it when the patient walks in and pays at the counter. The Payment column flips to β Paid in Store immediately.
Why the icon shows on Cart Created rows: Sometimes Tabz has built a cart but the patient pays in person before they get to it. The π² button lets you override without waiting for Tabz.
From the transfer detail modal
Same π² Mark Paid in Store button is in the Shipping & Billing section. Once marked, it shows β Paid in Store by [Name] on [Date] with an Undo button.
Filter by payment status
The All Transfers filter bar has a Payment dropdown so the billing team can pull "what's still outstanding" or "all carts waiting on patient payment" in one click. Same filter is on the Reports tab.
Reports β Summary, Detail, Packing Checklist
The Reports tab has a single filter bar at the top covering every common scope:
- Origin / Fill / Status / Type (New or Refill) / Ship to / Paid
- Created date range, Anticipated ship date range
- Clear all in one click
Three tabs underneath:
- π Summary β KPIs (Total Transfers, In Flight, Avg Cycle Time, Avg Turnaround, On-Time Ship Rate, Past Anticipated Ship, Cold Chain Items) plus charts: Volume by Status, Volume by Origin Location, Avg Turnaround by Origin.
- π Detail β full per-transfer table with ID, patient, drugs, route, ship-to, status, type, anticipated ship date, created date. Sorted by anticipated ship date. Rows past their anticipated date and not shipped highlight red.
- π¦ Packing Checklist β the shipping team's daily worksheet. See the dedicated Packing Checklist section above for full instructions.
π Print / Save as PDF button (top-right) works in any mode β opens the browser print dialog where you can choose "Save as PDF" as the destination to export. Summary mode prints portrait, Detail and Packing Checklist print landscape.
π₯ Export CSV downloads the filtered transfers with timestamped filename.
Admins see every location's data; techs/managers see only their location's data automatically.
Printing & Batch Operations
Batch print transfer sheets (Erie sterile team)
- Transfers tab β check the boxes next to transfers you want to print
- Click π¨ Print Selected (N) at the top right
- App opens a print window with all selected PK sheets + hard copies in one job
- After printing, the app auto-changes those transfers to In Progress
Print docs for a single transfer (from the detail modal)
- Open any transfer β look at the Attached Documents section
- Click π¨ Print all attached documents β prints PK sheets, hard copies, and signed CC form for that transfer
- Doc links (PK Transfer Sheet, Hard Copy Scan, etc.) are clickable β opens the original file in a new browser tab
Print Summary Sheet (optional cover/handoff)
Sometimes you want a one-page reference for filing or hand-off without the actual attached scans. The transfer detail modal has a π Print Summary Sheet button (next to Refill this Rx) that prints a single page with:
- Yellow WorldShip Reference / Transfer ID banner at the top
- Patient name, DOB, allergies
- Routing, status, anticipated ship date
- Ship-to address and tracking
- Billing method + Patient Price (if entered)
- Prescriptions table with origin Rx, receiving Rx, doctor
- Transfer notes; prior transfer info for legacy refills
The summary doesn't auto-print with attachments β it's only printed when you click that button.
FedEx Tracking β Auto, Manual, & Click-through
You typically don't have to do anything here β the app handles tracking automatically as long as the WorldShip Customer Reference is set correctly when you generate the label. There's also a manual fallback for when the auto-match misses, and every tracking number in the app is a clickable link to FedEx's tracker.
How auto-match works
- A scheduled job runs once a day (12:00 UTC, ~7-8 AM ET)
- For every open transfer without tracking, the job queries the FedEx Track API by reference using the Transfer ID
- For every open bulk shipment without tracking, the job queries by the BULK ID
- Any match found: tracking number + ship date are written to the transfer/bulk. Status flips to Shipped.
- Bulk matches cascade β when a BULK ID matches, the tracking is applied to every transfer in that bulk
- Every 15 minutes while you're on the Shipments tab, the app re-polls FedEx for live status updates on every active shipment. Delivered only flips on FedEx's strict "DL" code β "Out for delivery" or "Delivery delayed" do not falsely mark a package delivered.
Manual pull on demand (Shipments tab β Pull from FedEx)
If you don't want to wait for the daily cron, click π¦ Pull from FedEx on the Shipments tab to trigger the same lookup right now. Queries every open transfer + every open BULK shipment. Results show what was matched. Note: FedEx's reference index can lag the actual label by up to a day, so a same-day pull may miss; the daily cron re-tries the next morning automatically.
Manual tracking entry (when auto-match misses or you need it now)
Every bulk shipment modal has a FedEx Tracking row with an βοΈ Edit (or + Add tracking manually) button:
- Open the bulk shipment from the Shipments tab.
- Click βοΈ Edit on the FedEx Tracking row.
- Paste the FedEx tracking number from WorldShip (10β22 digits).
- The app validates, saves, and immediately queries FedEx for live status. If FedEx says it's already in transit / delivered, the shipment's status updates and the tracking cascades to all transfers in the bulk.
Clickable tracking links
Every tracking number shown anywhere in the app (Shipments list, Transfers list, transfer detail modal, Action Items, FedEx Pull results) is a clickable link that opens FedEx's public tracker in a new tab. No more copy/paste to FedEx.com.
The key thing: typing the Transfer ID or BULK ID into WorldShip's Customer Reference field is what makes auto-match work. The Packing Checklist's barcode column lets staff scan instead of type. If you forget, you can still paste a tracking # manually via the bulk shipment modal.
Admin Tasks (admins only)
The Admin tab is only visible if your email is in the Admin Users list (set in this same tab).
Users & Access
One consolidated table showing all 365 users + local accounts. From here you can:
- Adjust role (tech / manager / admin) and location for any user
- Reset PIN for local accounts
- Remove any account
- Pre-authorize a 365 user: type their email + pick role; they get that role on first sign-in
- Create a local account: username + PIN + name + location + role for staff without 365
Other admin items
- SLA Rules: hour limits per status before transfers show on the Alerts tab
- Formula Library: saved formula worksheets per pharmacy
- Pharmacy Mailing Addresses: used for Ship-to-Pharmacy auto-fill and for the From/To addresses on the bulk packing slip. Receives Shipments column = check the day(s) of the week each pharmacy normally gets its boxes. Multi-day support β pharmacies that receive shipments twice a week (e.g., Tue + Thu) just check both. The next-shipment banner at the top of every page is computed from this.
- Email Notifications: per-location recipient list for both the daily summary email and shipment notification emails. Multiple emails per location (one per line or comma-separated). An optional "Always-CC" list copies managers on every location's daily summary.
- Teams Webhooks: paste Power Automate webhook URLs per location so Ask Question, status delay, and anticipated-date-change notifications go to the right place
- Document Templates: preview what the printable docs look like (CC Auth form in either print-blank or fill-on-screen mode, plus the bulk packing slip). Sample data β useful for showing staff what to expect.
- Audit Log: append-only record of who viewed / created / edited / deleted / changed-status on every transfer, plus sign-in events. Filters by user / action / Transfer ID. CSV export for monthly compliance reports.
Security: idle timeout + audit logging
The app signs users out automatically after 30 minutes of inactivity (a warning appears at 28 min). Move the mouse or press any key to reset the timer. This limits PHI exposure on shared/unattended workstations.
Every PHI-touching action is recorded to the audit log: viewing a transfer, creating one, editing one, deleting one, changing status, marking paid, sign-in events. Admins can review the log in Admin β Audit Log.
Email Notifications
The app sends two kinds of emails automatically from noreply@pharmacyinnovations.net. No setup per user β admins manage the recipient lists in Admin β Email Notifications.
Daily Summary (5 PM ET)
For every location that had transfer activity that day, the app sends a per-location summary email:
- Incoming section β transfers your location received today, grouped by origin pharmacy, with status badges
- Outgoing section β transfers your location originated today, sent to other pharmacies
- Locations with zero activity get no email that day (no inbox noise)
- Each row links to the transfer in the portal
Shipment notifications (when a shipment is created)
- Bulk pharmacy-to-pharmacy β the destination pharmacy gets an email listing all transfers in the box, tracking number, BULK ID, and links back to the shipment
- Ship-to-patient β the fill location gets notified that a transfer has shipped to the patient, with tracking
Recipients are configured in Admin β Email Notifications. Same list is used for both kinds.
Status Definitions
| Status | What it means |
| New | Just submitted, not yet processed |
| In Progress | Being compounded at the fill location. This is now the last stage before Shipped β "Ready to Ship" was retired and existing transfers in that status auto-migrated to In Progress. |
| Pending Clarification | Order is on hold while the fill location waits for clarification from the originating pharmacy (e.g., dose unclear, missing info). Setting this status auto-pings the origin pharmacy's Teams chat so they know to respond. |
| Needs Formula | Order is on hold because the fill location doesn't have the required formula. Auto-pings the origin pharmacy's Teams chat with the request. |
| Shipped | In transit (auto-set when tracking # is added) |
| Delivered | Patient or pharmacy has received |
| Canceled | Transfer canceled (must be acknowledged on Action Items tab before being archived) |
Late-shipment notifications: When the anticipated ship date is updated by anyone NOT at the originating pharmacy (typically the fill location pushing the date out), the origin pharmacy gets a Teams notification with the old and new dates.
Common Questions
Q: I picked the wrong origin pharmacy and submitted. Can I fix it?
A: Yes β open the transfer β βοΈ Edit Transfer β change origin β Save.
Q: I leave the Bulk Upload page mid-review. Will my drafts be there when I come back?
A: Yes. The bulk queue is saved automatically and persists across reloads. Page-image previews disappear after a reload (no harm β you can still edit and approve), but draft data stays.
Q: The bulk upload only detected 4 transfers but my PDF has 11. What do I do?
A: Open browser DevTools (F12) β Console tab. Look for "OCR page N:" log lines. The ones where isTransferSheet=false are the missed ones. Copy a snippet of their firstChars text and send it to whoever maintains the app β they'll tune the detection.
Q: I deleted a transfer by accident. Can I get it back?
A: No. Delete is permanent. Reach out immediately if you need a record reconstructed β depending on backup state, it may or may not be recoverable.
Q: A patient changed their address. How do I update for refills?
A: Edit the existing transfer with the new address before refilling, OR start the refill and use the Edit button on the Shipping & Payment Defaults to override.
Q: We canceled a transfer β does the app know?
A: Change the status to Canceled on the transfer. It will show up under Action Items until someone acknowledges it. This prevents accidentally shipping it.
Q: How do I see all transfers for one patient?
A: Use the search bar at the top of the navbar β type their name. Results include their transfers AND shipments.
Q: Can I export the list?
A: Yes β Reports tab β Export CSV at the bottom.
Q: I forgot my local-account PIN.
A: An admin can reset it from Admin β Users & Access β click Reset PIN on your row.
Q: The original transfer isn't in the app β how do I record a refill?
A: + Refill tab β scroll to the bottom β click + Enter Refill Manually. You can put whatever you know about the original (prior pharmacy, prior Rx #, date) in the gray "Prior Transfer Info" box. The rest of the form works like a new transfer. This is temporary β once enough history is in the app, you'll find originals via search.
Q: My default location keeps showing the wrong pharmacy.
A: Sign out and back in (or refresh the page) β the app reads your assigned location from the admin's Users & Access list on each sign-in. If it's still wrong, the admin needs to update your row.
Q: Do I have to enter a tracking number when I create a bulk shipment?
A: No, leave it blank. Generate the FedEx label in WorldShip with the BULK ID in the Customer Reference field. The daily auto-match cron links the tracking automatically. If you'd rather, you can manually paste a tracking # later via Edit ship / tracking on the bulk shipment.
Q: I forgot to type the Transfer ID / BULK ID in WorldShip β what now?
A: Open the transfer (or bulk shipment) β Edit ship / tracking β paste the FedEx tracking number manually. It'll set the status to Shipped just like the auto-match would have.
Q: I checked off some Packing Checklist items. Will my teammates see my checks?
A: Yes β checks live on the transfer record in the backend, not in your browser. Your teammates' checklists update within ~30 seconds of you clicking. A small green "β [your name]" appears under each box so anyone can see who packed which item. Same goes for the reverse β your view will pick up their checks within ~30 seconds.
Q: My Packing Checklist checks disappear at midnight β is that a bug?
A: No, that's intentional. Checks are date-stamped, and the checklist only counts today's stamps. Yesterday's checks are kept in the audit history but don't show as "packed today" anymore β so each morning everyone starts fresh.
Q: An order is ready earlier than its anticipated ship date and I want to pack it today. Do I have to edit the transfer?
A: No β use the π₯ Add Order to Today button on the Packing Checklist. Search by patient or transfer ID, click Set to Today, and it appears on the checklist immediately. The transfer's anticipated ship date is updated (and the origin pharmacy gets the standard Teams notification for the date change).
Q: The app keeps loading me back into the Transfers tab when I refresh β can I land on a different one?
A: Yes, that's been fixed. Whatever tab you were on when you refresh, the app now restores. Click any tab once and it becomes your new default until you click another.
Q: Where do I see all refills for a patient/Rx?
A: Open any transfer in the chain β the Rx History section shows the original and every refill in order. Click Open on any row to switch the modal to that entry.
Q: I don't see my new transfer when trying to add it to a shipment.
A: The shipment list only shows transfers in In Progress status. Open the transfer and bump the status to In Progress, then it'll appear. New, Pending Clarification, and Needs Formula transfers don't appear (they're still being worked).
Q: I'm at the receiving pharmacy and need to process a refill for a transfer that's already in the app. Do I enter it as a new transfer?
A: No β use the Refill flow. Either + Refill tab β search for the patient β Refill this, OR open the existing transfer β π Refill this Rx button at the top. This chains the refill to the original so the full Rx History stays connected. Entering it as + New Transfer breaks that connection and creates an orphan record.
Q: My pharmacy gets shipments twice a week. Can I set that?
A: Yes. Admin β Pharmacy Mailing Addresses β for your location, check all the days you receive shipments (e.g., Tue and Thu). The anticipated ship date auto-calc and the next-shipment banner both use the nearest day from the multi-day schedule.
Q: Why does the next-shipment banner sometimes say "Set your location's receiving day(s)"?
A: Your location doesn't have any receiving days configured. An admin needs to go to Admin β Pharmacy Mailing Addresses and check the day(s) of the week for your location.
Q: My order is held up because we need clarification from the origin pharmacy. What status do I set?
A: Change the transfer's status to Pending Clarification (or Needs Formula if it's specifically a missing formula). Setting either status automatically pings the origin pharmacy's Teams chat so they know to respond. The order stays in this status until you bump it back to In Progress.
Q: The anticipated ship date needs to change because we can't ship on time. What should I do?
A: Open the transfer β βοΈ Edit Transfer β change the Anticipated Ship Date β Save. If you're at the fill location (not the originating pharmacy), the origin pharmacy automatically gets a Teams notification with the old and new dates.
Q: Where does the green Paid badge come from?
A: Either the row's "π² Mark Paid / Charged" button on All Transfers OR the same button on the transfer detail. Click once β done. The badge shows who marked it and when.
Q: My session signs me out after I leave the screen for a while. Why?
A: For security, the app signs users out automatically after 30 minutes of inactivity. A warning banner shows up at 28 minutes β move the mouse or press a key to reset the timer and stay signed in.
Q: Can I send the same script to multiple pharmacies for pickup?
A: Each non-transfer pickup goes to one pickup pharmacy per record. If a single batch is going to multiple destinations, enter one bulk pickup per destination.
Updated 2026-06-15 β USP overnight cold-shipping policy notice with admin-editable Drug Warnings + inline form warning + $50 dropdown option + dismissible portal banner. Tabz payment auto-sync (Payment + Pay Date columns, per-Rx badges, receipt PDFs), Paid-in-Store override always available, sign-in screen restyled to Training Portal look, Ship-To address pre-fill + clear on type switch, two-line patient names in table (1800px wider), Save as default + Reset moved to filter row start, Ship-To type filter, pickup pin removed from table, OCR drug-name matching against known drug list, editable tracking with live FedEx pull, Past Anticipated Ship moved to Alerts badge, SLA excludes Received, Receive screen Select all toggle, Bulk-Received cascade auto-heals orphan transfers. Need to edit this guide? Edit help.html in the repo.