Pharmasync// METHODOLOGY 0.6SEVERITY v1.0.0 · D-009 · OBSERVED STATE ACTIONS
01

Sources

COVERAGE — ENGLAND ONLY · WALES, SCOTLAND, N. IRELAND NOT YET INGESTED
DATASETPUBLISHERCADENCEROLE
Dictionary of Medicines and Devices (dm+d)NHSBSA / TRUDWEEKLYTHE JOIN KEY
Medicine Supply NotificationsDHSC via CPEAS ISSUEDTIER: WATCH
Serious Shortage ProtocolsNHSBSAAS ISSUEDTIER: CRITICAL
Restricted medicines (export) listDHSCAS REVISEDTIER: CONCERN
Price concessionsCPE / NHSBSAMONTHLYMARKET STRESS
English Prescribing Data — NOT YET INGESTEDNHSBSAMONTHLY, +2 MODEMAND
WHO Model List / EU critical list — NOT YET INGESTEDWHO · EMAPERIODICCRITICALITY
02

Tiers are observed state actions

3 OF 3 RUNGS REACHABLE
WATCHMEDICINE SUPPLY NOTIFICATION IN FORCESUPPLY PROBLEM OFFICIALLY ACKNOWLEDGEDDHSC
CONCERNLISTED ON THE RESTRICTED MEDICINES (PARALLEL-EXPORT / HOARDING) LISTSUPPLY TIGHT ENOUGH THAT EXPORT IS LEGALLY PROHIBITEDDHSC / MHRA
CRITICALSERIOUS SHORTAGE PROTOCOL IN FORCESHORTAGE SERIOUS ENOUGH TO ALTER DISPENSING LAWNHSBSA

WE PUBLISH NO SEVERITY FORMULA OF OUR OWN. THE ANSWER TO “WHY IS THIS CRITICAL” IS A GOVERNMENT ACT WITH A URL AND A DATE, NOT A COEFFICIENT.

  • The tier is the HIGHEST rung in force. Rungs are not sequential — an SSP without a prior MSN is still CRITICAL.
  • Every tier assignment carries the source_url and date of the justifying act.
  • Signals never move a tier. They are published alongside it and labelled as Pharmasync analysis.
  • A rung whose source is not ingested is reported as not populated, never silently omitted.
  • Tiers record administrative acts. They are not an assessment of clinical or patient impact.
03

Boundaries, enforced in code

No clinical contentNo substitution, dosing or treatment advice. The clinical layer is linked, never reproduced.
No gated scrapingLogin-gated content is never ingested. A source allow-list fails the build if it is.
No patient dataAggregate and public only. Your stock profile never leaves your browser.
No monetisationNo paid tier is being baited. The tool is the output, and the corpus is the endowment.
04

Signals, reported alongside

OUR OWN ANALYSIS STAYS VISIBLY SEPARATE FROM THE STATE'S ACTS. A SIGNAL NEVER RAISES OR LOWERS A TIER.

SLIPPAGE · COMPUTEDSSP expiry revisions — a Serious Shortage Protocol re-dated to a later expiry, the earliest honest sign a shortage is lasting longer than first stated. One row per revision (prior_date → revised_date, signed slip_days), published at /api/v1/slippage.json. Computed from the append-only ledger, which keeps every expiry as its own immutable observation.
MARKET STRESS · COMPUTEDPrice-concession presence and month-on-month movement. Concession churn often runs ahead of formal notices.
DURATION PERCENTILES · COMPUTEDHistorical resolution times for comparable shortages. Computed from accumulated history, never predicted.
CRITICALITY WHO EML · OBSERVEDPresence on the WHO Model List of Essential Medicines.
CRITICALITY EU CRITICAL · OBSERVEDPresence on the EU Union list of critical medicines. Published independently of WHO EML — where the two disagree, the disagreement is displayed rather than resolved.
CROSS JURISDICTION STRESS · OBSERVEDCount of other regulators reporting a shortage of the same MOLECULE. Reported at molecule level via ATC/INN — never implying product equivalence across jurisdictions.

THESE ARE DEFINED IN THE PUBLISHED CONTRACT AND NONE IS COMPUTED YET — NO SIGNAL VALUES ARE SERVED. THE DEFINITIONS ARE PUBLISHED FIRST SO THEY CAN BE CHECKED BEFORE THEY CARRY ANY WEIGHT.

05

Matching, and what it gets wrong

MATCH RATE NOT PUBLISHED YET
How a name becomes a codeNotices arrive as free text. A deterministic matcher resolves each to a dm+d VMP — exact, then normalised, then fuzzy above a fixed threshold.
When it failsBelow the threshold nothing is guessed. The line goes to a review queue and is matched by hand, or listed as unmatched.
Why it is statedMatching is the riskiest assumption in the build, so its rate is published monthly and shown wherever a profile is counted.

THE RATE ITSELF IS NOT PUBLISHED YET. IT BELONGS TO THE MONTHLY SELF-AUDIT, AND PUBLISHING A MATCH RATE WITHOUT A LABELLED GOLD SET WOULD MEASURE COVERAGE AND CALL IT ACCURACY — A MATCHER THAT MATCHES EVERYTHING WRONGLY SCORES PERFECTLY.

06

Self-audit and corrections

GENERATED MONTHLY AND DATED, SO IT LIVES ON ITS OWN PAGE — WITH A JSON FEED. DEGRADATIONS ARE PUBLISHED, NOT ONLY IMPROVEMENTS.
NOT GENERATED YET — FIRST EDITION IS S13
07

The change feed

175 CHANGES · CURSOR 2026-09

WHAT MOVED, AS DISTINCT FROM WHAT IS CURRENTLY TRUE (/EVENTS.JSON). PUBLISHED AS A CURSORED, MONTHLY-SEGMENTED FEED — SEE /API/V1/CHANGES/INDEX.JSON.

  • `detected_at` is when Pharmasync observed the change, never when the publisher made it. The two differ by up to one run interval.
  • An `EXPIRED` change records that a protocol left a healthy source list. The source publishes no archive of ended protocols, so absence is the only available evidence and no end date is claimed.
  • `RESOLVED` is a valid value in the schema and is never emitted: the only candidate would be inferred from a month boundary rather than observed, and a wrong entry in an append-only ledger cannot be withdrawn.
  • A change carries `dmd_code` and no medicine name. Resolve the code through dm+d (Open Government Licence, published by NHSBSA via TRUD); see /licence.json.
  • This feed is NOT retrospective. Change detection began on 2026-08-07, and this feed is complete from that date forward. The 421 event(s) first seen before then carry no NEW record and never will — the ledger is append-only, and back-filling changes would mean inventing detection dates for observations nobody made. Read /api/v1/events.json for current state, which is complete.
08

Frequently asked

Is Pharmasync a clinical or medical device?No. It aggregates published administrative and logistics acts — shortages, restrictions, protocols, concessions — and does not interpret them clinically. It has no intended medical purpose. Substitution and dosing questions sit with the Specialist Pharmacy Service, never with this site.
Why is there no risk score or severity number?There is no formula to invent. Each tier is a government act already in force — see §02. "Why is this Critical" is answered with the notice, its publisher and its date, not a coefficient.
Which parts of the UK does this cover?England only, right now. Wales, Scotland, N. Ireland are named as a gap, not left blank — see §01 for the per-source breakdown.
Is Pharmasync free? Will there be a paid tier?Free, and structurally so — not a promotional phase. No paid tier, no advertising, no data sale. The tool is the output — nothing here is a funnel.
Do I need an account? What happens to my stock list?No accounts exist anywhere on the site. My Stock is a profile held in this browser's storage only, never sent to a server. It can be exported as a file and imported again on another device — which is also how a locality can circulate one shared profile.
Can I build on this data? Is there an API or agent integration?Yes — the site is a client of its own API. Static JSON, OpenAPI 3.1, no key, no sign-up, no rate limit. An MCP server ships as @pharmasync/mcp under MIT, for pointing an agent at the same artefacts a person sees.
How do I actually use the digest?Hover a count-strip cell to see where those records sit on the record strand. Click a cell to pin that tier — the change list filters to match and stays filtered once the pointer leaves. Click a change-kind glyph to filter by kind too; the two filters combine. Toggle My Stock, once a profile exists, to narrow the whole screen to what is actually held.