Data Caveats
The known traps in the underlying registries, why they exist, and how Qope handles each one.
These are real limitations of the upstream data, not bugs in Qope. Each is surfaced in the interface, but they are collected here so you can check a number before defending it.
A source that fails to load is not a zero
Qope pages read their data when they open. Now and then a source does not answer, or answers only in part.
Effect: a figure built from the missing source cannot be computed.
How Qope handles it: the page says which source failed instead of printing 0 or "none". Territory Brief, Compare, Insights, Cohorts, Patent Cliff and Shortages Tracker flag a failed or partial source, and Home shows a dash for a count it could not read. A partial Patent Cliff or Shortages build is not reused, so the next visit tries again.
Comma-joined values cannot be filtered
Several sources put multiple values in one field, separated by commas -- a shortage record tagged with three therapeutic categories, for example. The filtering layer splits filter values on commas, so a value that itself contains a comma can never match.
Effect: a dropdown can offer a value that returns zero rows.
How Qope handles it: where a value is known to be unfilterable, the "Open in full table" button is replaced with a greyed Not filterable in full table chip, and the tooltip explains that filtering would return a different count from the view you are looking at.
Categorical values are uppercased
Qope stores categorical values in upper case. A comparison against a mixed-case literal such as Yes silently returns nothing.
Effect: if you build a filter URL by hand, match the case the data service returns.
providers and provsummary use different specialty vocabularies
The NPPES registry and the Medicare Part D prescriber file describe specialties with different strings -- CHIROPRACTOR in one, CHIROPRACTIC in the other, and so on across many specialties.
Effect: a specialty value carried from one table to the other returns zero rows with no error.
How Qope handles it: every specialty picker loads its options from the dataset it will actually query. Do not hand-edit a specialty value between pages.
Most recall rows carry no openFDA annotation
Roughly 82 percent of FDA enforcement rows have no openFDA annotation block. A name-based filter therefore looks exhaustive but silently misses the large majority of rows.
How Qope handles it: the recall scan combines exact-name filters with a bounded text scan, and folds biosimilar suffixes back to the originator molecule, so a molecule-level recall count is not built on the annotated rows alone.
The FDA shortage list mixes notices with shortages
Records with status TO BE DISCONTINUED are 506C discontinuation notices, not shortages. At the time this was investigated they were the majority of grouped rows.
How Qope handles it: notices are counted and displayed separately everywhere, and are excluded from the Landscape and Manufacturers analyses. Availability detail is present on current rows only.
Shortage duration cannot be computed from resolved rows
Because the list only holds current records, very few resolved rows remain at any time. A median over them would not be meaningful.
How Qope handles it: median shortage age is computed over open shortages only, and labelled as such.
Patent Cliff matches Medicare spend by brand name
The Orange Book and the Medicare Part D prescriber file share no product identifier. Qope links them by the exact brand name, uppercased, and looks up each brand whose last protection ends between today and the end of next year directly in the Part D file. A brand spelled differently in the two files is not matched.
How Qope handles it: an unmatched row shows --, never zero, and gets no Opportunities score rather than an estimated one.
Combination products resolve to nothing rather than to a component
Filtering a multi-ingredient product by name would silently match one component and return a number that looks right and is wrong.
How Qope handles it: combination products show no supplier tier and no demand count, with a tooltip stating why.
Supplier counts can be floors
When an Orange Book listing is longer than the paging window, the count is reported as a floor and prefixed with >=.
EHR linkage is per module, not per EHR
One row is a facility plus certified module. A hospital attesting to several modules produces several rows. The PI criteria flag is Y, not YES. Bed-weighted vendor share is not possible from this file.
How Qope handles it: headline counts deduplicate by facility. The raw table does not, by design.
Provider geography stops at ZIP
The NPI registry carries practice addresses, not coordinates. On the Map, providers can be counted by state, county and ZIP, but cannot be plotted as pins. Facilities can. A ZIP is assigned to the county that holds most of its land area.
Medicare files are Medicare only
Every prescriber, service and spend figure describes Medicare fee-for-service activity for a completed reporting year. They do not describe commercial payers, Medicaid, cash business or Medicare Advantage. A provider with a small Medicare panel and a large commercial practice will look small here.
Discontinued listings are not competition
A company holding an approval whose every listing is marked discontinued is not competing. Qope counts actively marketed generics for contestability, and reports the discontinued holders separately in the tooltip.
AB rating changes what a generic count means
Generics without an AB therapeutic-equivalence rating cannot be substituted automatically at the pharmacy. Brand erosion in that market is far slower than the count of generics suggests. Rows in that situation carry a No AB substitute badge.