Canadian DIN Database & DIN → RxNorm Crosswalk

Yes — Canadian DINs can be mapped to RxNorm. A Drug Identification Number identifies a Health Canada–approved product by its active ingredients, strength, pharmaceutical form, and route, and those four attributes are exactly what an RxNorm clinical drug concept is built from. Normalize both sides to that key and a DIN resolves to an RXCUI. TwinFyRx does this across all 11,456 marketed human drug products in the Health Canada Drug Product Database. Not every DIN gets an RXCUI, and that is structural rather than a gap in effort: RxNorm represents the US market, so Canadian products the US never approved — along with Canada-only strengths and dose forms — have no RxNorm concept to map to. Those rows resolve to a stable Canada-only identifier or to no mapping at all, never to a fabricated RXCUI.

This page covers what a DIN actually identifies, what the raw Health Canada database does and does not give you, why the mapping is harder than a string join, why there is no direct DIN → NDC conversion, and how each Canadian product resolves against RxNorm — a widely used canonical vocabulary for normalizing US clinical drug data — and against the NDC space it connects to.

11,456

Marketed human DINs

8,957

Prescription-scheduled

2,022

Combination products

1,620

Distinct ATC codes

Health Canada Drug Product Database, marketed human extract. Veterinary, disinfectant, and radiopharmaceutical classes are excluded.

What this is

TwinFyRx ships two things, not one: a normalized Canadian DIN database — every marketed human product from Health Canada’s DPD, deduplicated and parsed into structured ingredients, per-ingredient strengths, dose form, route, dispensing schedule, and ATC class — and a DIN-to-RxNorm crosswalk layered on top of it. The database is useful on its own for Canada-only analysis, including for the products that never resolve to an RXCUI. The crosswalk is what makes it join to US drug data.

Both are delivered the same way: as the canada_drug_product table, or through the Canada API endpoints — single-DIN lookup, search, and 500-DIN bulk resolution.

What is a DIN?

A Drug Identification Number is an 8-digit number assigned by Health Canada to every drug product approved for sale in Canada. It identifies a specific manufacturer’s product by its active ingredients, strength, pharmaceutical form, and route of administration, and must appear on the product label. It is the primary key of Health Canada’s Drug Product Database (DPD).

The detail that trips up most integrations: a DIN does not encode package size. Unlike an NDC, whose final segment distinguishes a 30-count bottle from a 90-count bottle, one DIN covers every package size that manufacturer ships of that formulation. Package configurations live in a separate DPD table. That puts the DIN’s grain squarely between NDC and RXCUI — more specific than a clinical concept, less specific than a package.

Package

NDC 00093310905

Teva amoxicillin 500 mg capsule, 500-count bottle

Formulation

DIN 02388081

Auro-Amoxicillin 500 mg capsule — any package size

Concept

RXCUI 308191

amoxicillin 500 MG Oral Capsule — any manufacturer

Three identifiers, three grains. Narrowest on the left, broadest on the right — the crosswalk moves Canadian data rightward into the concept space everything else joins on.

Canadian DIN Database

Canada has one authoritative drug database and it is public. Health Canada’s Drug Product Database covers every product approved for sale in the country, searchable one product at a time on the web and downloadable in bulk as text extracts split by product status — marketed, approved, dormant, and cancelled. There is no licensing cost and no access gate. What there is, is a normalization problem.

What Health Canada publishes

  • A ZIP of comma-delimited text files with no header row, joined on an internal drug code — one file each for products, ingredients, forms, routes, therapeutic class (ATC), schedules, packages, and status.
  • Ingredients as free text carrying the salt name — 'amoxicillin trihydrate', not 'amoxicillin'.
  • Strength as a separate value and unit per ingredient, with percentages used for topical and ophthalmic products.
  • Dose form and route in Health Canada's own controlled vocabulary, which does not align term-for-term with RxNorm's.
  • One row per product registration, so a combination product's ingredients arrive as several rows to be reassembled.
  • No RxNorm, NDC, or any other cross-border key.

What TwinFyRx adds

  • Normalization — child tables collapsed to one row per DIN, ingredients reduced to sorted base names, strengths parsed into comparable unit-aware values, dose form and route resolved into a single form concept.
  • Canonical drug_id resolution — each DIN carries the RxNorm SCD/SBD RXCUI it maps to, or a stable Canada-only identifier, plus a match_method and confidence recording how it got there.
  • ATC integration — Health Canada's product-grain ATC carried through and reconciled with the ingredient-keyed ATC used across the rest of the model.
  • Cross-border joins — the same drug_id keys the US NDC crosswalk, the RxNorm hierarchy, therapy attributes, and pricing benchmarks.
  • Delivery — downloadable table and REST API, refreshed monthly against the current DPD and RxNorm releases.

The distinction matters when scoping work: if you need to look up one Canadian product, the public DPD is the right answer and this page is only context. If you need Canadian drug data to behave like a dimension table — grouped, classified, and joined to anything else — the normalization and the crosswalk are the work, and they are what this dataset is.

DIN vs NDC vs RXCUI

There is no arithmetic conversion between a DIN and an NDC. They are issued by different regulators — Health Canada, the US FDA, and the US National Library of Medicine respectively — for different markets, at different grains. The only route between them is a crosswalk through a shared clinical vocabulary.

DINNDCRXCUI
Issued byHealth CanadaUS FDA (labeler-assigned)US National Library of Medicine
What it identifiesOne manufacturer's product formulationOne physical packageA clinical concept
GrainManufacturer × ingredients × strength × form × routeLabeler × product × package sizeIngredients × strength × form
Encodes package sizeNoYes — the final segmentNo
StructureFlat 8-digit serial, no internal segmentsSegmented 5-4-2 (labeler-product-package)Opaque integer
Manufacturer-specificYes — every manufacturer gets its own DINYesNo — generics collapse to one SCD

For the US-only comparison, see RxNorm vs NDC and the RxNorm–NDC crosswalk.

Can You Convert a Canadian DIN to a US NDC?

No — not by conversion. A DIN and an NDC are assigned independently by two regulators for two markets, and neither encodes any part of the other, so no arithmetic, padding, or string transformation relates them. They also sit at different grains: a DIN is one manufacturer’s formulation, an NDC is one physical package. Even if the identifiers were related, one DIN could not correspond to one NDC.

The correct model routes through a clinical concept both markets can be normalized to:

DIN 02388081     AURO-AMOXICILLIN · amoxicillin 500 MG · CAPSULE · ORAL
   │
   │  resolve on ingredient set + dose form + per-ingredient strength
   ▼
RXCUI 308191     amoxicillin 500 MG Oral Capsule
   │
   │  expand to every US package code carrying that concept
   ▼
NDC 00093310905  Teva amoxicillin 500 mg capsule, 500-count bottle
NDC 00003010955  … and 452 others

The fan-out at each end is the point. RXCUI 308191 is carried by 10 Canadian DINs — NOVAMOXIN, APO-AMOXI, AURO-AMOXICILLIN and seven more, one per manufacturer — and by 454 US NDCs, which is every labeler × package size combination the US market lists for the same capsule. A DIN therefore maps to a set of NDCs, not to one, and the reverse holds too. Any integration that expects a one-to-one DIN↔NDC mapping is built on an assumption the data does not support.

Two caveats worth stating. First, the middle step can fail: if the Canadian product has no US equivalent, there is no RXCUI and therefore no NDC set — no amount of matching effort produces a package code for a drug the US does not market. Second, a shared RXCUI means shared clinical identity, not shared package. The Canadian and US products agree on ingredient, strength, and dose form; they may differ on package size, excipients, and appearance.

One practical note on the last hop: the NDCs a concept expands to arrive in several formats across US datasets, so normalize them before joining — the NDC normalization guide covers the padding rules. Canadian DINs need none of this; they are flat 8-digit strings that are never zero-padded.

Why the Mapping Is Harder Than a String Join

Both sides describe a drug by ingredient, strength, and dose form. Both express all three differently, and each mismatch is a distinct source of silently wrong mappings.

Percent vs mass-per-volume

Health Canada states topical and ophthalmic products as percentages where RxNorm uses MG/ML or MG/MG — and the two sides pick different mass scales. A 0.1% solution and a 1 MG/ML product are the same strength. A comparison that treats the units as incomparable loses the match; one that treats the numbers as comparable produces a 1000× error.

Salt name vs base name

Health Canada names the salt — 'amoxicillin trihydrate', 'sertraline hydrochloride'. RxNorm may use either, and is internally inconsistent: its strength-bearing concept names often use the salt while the corresponding ingredient-and-form concept uses the base. Matching requires stripping salt, ester, and hydrate suffixes to recover a comparable base name in both directions.

Dose form vocabularies do not align

'CAPSULE' with route 'ORAL' in Health Canada's vocabulary is 'Oral Capsule' in RxNorm's. 'TABLET (EXTENDED-RELEASE)' maps to 'Extended Release Oral Tablet'. The mapping is many-to-one and incomplete in both directions — a gap costs recall, which is recoverable, so it must never be papered over with a looser match, which is not.

Units that cannot be converted at all

UNT, MEQ, MMOL, per-actuation and per-hour strengths cannot be converted without external reference data — molecular weights, device specifications. Health Canada's electrolyte concentrates state MEQ/ML where RxNorm states MG/ML. Those are compared as-is and left unmatched rather than converted on an assumption. Guessing here is how drug crosswalks cause harm.

How Each DIN Resolves

Every row carries a match_method describing how it was resolved, so you can restrict an analysis to rule-verified lineage when the use case demands it. Four values, and the vocabulary is stable:

deterministicMatched by rule

The ingredient set, dose form, and every ingredient's strength agree with a real RxNorm product. Strengths are compared unit-aware, so a Canadian 0.1% ophthalmic solution and an RxNorm 1 MG/ML product are recognized as the same concentration. Partial agreement is never enough — a strength disagreement rejects the candidate outright.

inferredResolved by candidate selection

No rule was decisive, so the DIN was resolved by selecting from a shortlist of real RxNorm concepts gathered by the deterministic stage. Selection only ever picks from that shortlist — an RXCUI is never generated, only chosen. Use this filter to exclude judgment-based lineage when your use case requires rule-only provenance.

canada_only_strengthCanada-only product

RxNorm carries the ingredient and dose form, but no product at the strength marketed in Canada. Rather than snapping to the nearest RxNorm strength — which is how drug crosswalks produce silent dosing errors — the product resolves to a stable TwinFyRx identifier plus the RxNorm clinical drug form it belongs to.

unmatchedNo mapping made

No RxNorm concept was a defensible match. The row still carries every Health Canada attribute — brand, ingredients, strength, form, schedule, ATC — it simply carries no drug_id. Nothing is invented to fill the column.

On coverage figures. Resolution rates move with every RxNorm and DPD refresh, and matching rules are tightened when a tier is found to be producing mappings that do not hold up. Rather than print a number that ages badly, current rates by method and confidence are served live from GET /v1/canada/crosswalk/coverage, reported both overall and for prescription products, which resolve at a materially higher rate than a population that includes sunscreens and dialysis concentrates.

Sample Rows

Real rows from canada_drug_product. Note the two behaviours worth understanding: many DINs collapse to one RXCUI the same way many NDCs do, and brand and generic stay distinct — ELIQUIS resolves to a branded RxNorm concept while its generics resolve to the generic one.

DINBrandStrengthdrug_id
00406716NOVAMOXINamoxicillin 500 MG308191
02388081AURO-AMOXICILLINamoxicillin 500 MG308191
02525356AMOXICILLIN BPamoxicillin 500 MG308191
02377233ELIQUISapixaban 2.5 MG1364441
02484994TEVA-APIXABANapixaban 2.5 MG1364435
02487381APO-APIXABANapixaban 2.5 MG1364435

Canada-Only Strengths: The Case Against Snapping to the Nearest Match

Some Canadian products have no RxNorm equivalent at their marketed strength even though RxNorm knows the drug perfectly well. Sertraline is the clearest case: Canada markets 25, 50, and 100 MG oral capsules, and RxNorm carries the clinical drug form sertraline Oral Capsule (RXCUI 373867) but no capsule product at those strengths. Eighteen DINs across ZOLOFT, APO-SERTRALINE, TEVA-SERTRALINE and others sit in that gap.

The tempting fix — map them to the nearest sertraline tablet — is exactly the failure mode that makes drug crosswalks dangerous. It produces a mapping that is wrong on dose form, and nothing downstream can tell. Instead these products resolve to a minted identifier alongside the RxNorm clinical drug form they legitimately belong to:

din                   02238282
brand_name            APO-SERTRALINE
strength_text         sertraline (sertraline hydrochloride) 100 MG
dose_form             CAPSULE
drug_id               NULL              -- no RxNorm product at this strength
clinical_drug_form_rxcui  373867        -- but the form is known
synthetic_drug_id     CA373867-ef40389887
synthetic_drug_name   sertraline 100 MG Oral Capsule [CA-only strength]
match_method          canada_only_strength

Never an RXCUI

The CA-prefixed format cannot collide with RxNorm's integer identifier space. A consumer can always tell a minted identifier from a real one.

Stable across refreshes

The identifier is derived from the clinical drug form and the normalized strength, so it survives rebuilds and every DIN at that strength shares it.

Still joinable

clinical_drug_form_rxcui is populated, so these products roll up to ingredient and ATC class with everything else.

What Doesn’t Resolve, and Why

RxNorm covers the US market. Where Canada and the US diverge, no amount of matching effort produces a concept that does not exist. The unresolved population is dominated by four explainable groups:

Drugs not approved in the US

Zopiclone (the US approved eszopiclone instead), domperidone, betahistine, gliclazide, and combinations such as perindopril/indapamide are marketed in Canada with no US counterpart — and therefore no RXCUI.

Many-ingredient formulations

Parenteral nutrition emulsions combining 27 ingredients — amino acids, lipids and electrolytes, and multivalent vaccines such as a 21-serotype pneumococcal conjugate, each hold a single DIN. RxNorm does not model them as one clinical drug product, so there is no concept to match — most of the unresolved rows in this group carry three or more ingredients.

Sunscreens and cosmetic-adjacent products

Health Canada regulates sunscreens as drugs and assigns them DINs — the single largest ATC group in the extract. RxNorm does not model them as clinical drug products.

Hemodialysis concentrates

Multi-electrolyte concentrates stated in MEQ/ML have no safely convertible RxNorm counterpart, and are deliberately left unmatched rather than converted on an assumed molecular weight.

Unresolved rows are not dropped. They keep every Health Canada attribute — brand, ingredients, strength, form, route, schedule, and ATC classification (Health Canada assigns WHO ATC codes natively, on 11,446 of the 11,456 marketed human DINs) — so a Canada-only product is still analysable by therapeutic class even without an RXCUI.

Querying the Crosswalk

1. Resolve a Canadian DIN to the canonical drug concept

SELECT
    c.din,
    c.brand_name,
    c.strength_text,
    d.drug_name,
    d.ingredient,
    d.dose_form
FROM canada_drug_product c
JOIN drug_profile        d ON d.drug_id = c.drug_id
WHERE c.din = '02377233';

2. Find every Canadian product for a US drug concept

SELECT
    c.din,
    c.brand_name,
    c.schedule
FROM ndc_crosswalk        n
JOIN canada_drug_product  c ON c.drug_id = n.drug_id
WHERE n.ndc11 = '00093310905';

3. Rule-verified lineage only, by therapeutic class

SELECT
    LEFT(c.atc_code, 3)   AS atc_class,
    COUNT(*)              AS dins,
    COUNT(DISTINCT c.drug_id) AS drug_concepts
FROM canada_drug_product c
WHERE c.is_prescription
  AND c.match_method = 'deterministic'
GROUP BY 1
ORDER BY dins DESC;

API endpoints

EndpointPurpose
GET /v1/canada/drugs/{din}One product by DIN, bare or zero-padded, with its crosswalk
GET /v1/canada/drugs/searchFilter by name, ATC prefix, dose form, schedule, match method, or drug_id
POST /v1/canada/drugs:lookupBulk — up to 500 DINs resolved in a single query
GET /v1/canada/crosswalk/coverageLive resolution rates by method and confidence
GET /v1/drugs/{drug_id}/canadian-dinsReverse lookup — every Canadian DIN for a drug concept

Full request and response shapes are in the API reference; the table and column definitions are on the schema reference.

Sources and Methodology

Three authoritative sources, each used for what it is authoritative about. Nothing on this page depends on a secondary aggregator.

SourcePublisherUsed for
Drug Product Database (DPD)Health CanadaThe Canadian side in full — DIN, brand name, active ingredients, per-ingredient strength, pharmaceutical form, route, dispensing schedule, ATC, and last-update date. Loaded from the marketed extract.
RxNormUS National Library of MedicineThe target vocabulary — SCD/SBD clinical drug concepts, their ingredients, dose forms, and strengths, plus the clinical drug forms Canada-only strengths attach to. Also reachable through RxNav.
ATC/DDD IndexWHO Collaborating Centre for Drug Statistics MethodologyTherapeutic classification. Health Canada assigns ATC natively at the product grain WHO actually classifies on, so combination products carry their dedicated combination code rather than an ingredient-level approximation.

Scope

The marketed human drug class only — 11,456 DINs, of which 8,957 are prescription-scheduled and 2,022 are combination products, spanning 1,620 distinct ATC codes.

Excluded

Veterinary, disinfectant, and radiopharmaceutical classes are dropped at ingest. So are the approved, dormant, and cancelled DPD extracts — only currently marketed products are loaded.

Refresh

The DPD marketed extract is reloaded monthly and the crosswalk rebuilt against the current RxNorm release on the same cadence. Each row carries Health Canada's own last_update_date.

Matching is rule-first: a candidate is accepted only on full agreement of ingredient set, dose form, and every ingredient’s strength, compared unit-aware. Where a rule is not decisive, resolution selects from a shortlist of real RxNorm concepts assembled by that rule stage — an RXCUI is never generated. Where neither succeeds, the product resolves to a Canada-only identifier or to nothing. Every row exposes which of those happened in match_method.

Frequently Asked Questions

What is a DIN (Drug Identification Number)?

A DIN is an 8-digit number assigned by Health Canada to every drug product approved for sale in Canada. It identifies a specific manufacturer's product by its active ingredients, strength, pharmaceutical form, and route of administration. A DIN must appear on the label of every marketed Canadian drug product, and it is the key used across Health Canada's Drug Product Database (DPD).

What is the difference between a DIN and an NDC?

A DIN is Canadian and an NDC is American, and they identify different things at different grains. An NDC identifies a physical package — its final segment encodes package size, so a 30-count bottle and a 90-count bottle of the same drug carry different NDCs. A DIN identifies a product formulation and does not encode package size at all, so one DIN covers every package size that manufacturer ships. An NDC is segmented (5-4-2: labeler, product, package); a DIN is a flat serial number with no internal structure. Both are manufacturer-specific, so a brand and each of its generics carry their own.

What is the Canadian equivalent of an NDC?

The Drug Identification Number (DIN) is the closest Canadian equivalent of a US NDC: it is the government-assigned identifier that must appear on every marketed drug product and is the primary key of Health Canada's Drug Product Database. The equivalence is not exact. An NDC identifies a package; a DIN identifies a formulation across all of its package sizes. Canadian package-level detail lives in a separate DPD package table keyed to the same product, alongside a UPC where one is supplied.

Does Canada use NDC numbers?

No. NDCs are assigned under the US drug listing system and have no regulatory standing in Canada. Canadian drug products are identified by a Health Canada DIN, with a Natural Product Number (NPN) or Homeopathic Medicine Number (DIN-HM) used for products regulated under other frameworks. US NDCs do appear in Canadian analytics work, but only as the identifier on the US side of a cross-border mapping — never as an identifier for a Canadian product.

Can a Canadian DIN be converted to an NDC?

Not by conversion — only by crosswalk. DINs and NDCs are assigned independently by two regulators for two markets, and neither encodes any part of the other, so no arithmetic or string transformation relates them. The correct route is DIN → RxNorm RXCUI → NDC: resolve the DIN to the RxNorm clinical drug concept its ingredients, strength, and dose form describe, then expand that concept to the US package codes carrying it. The relationship is many-to-many in both directions. RXCUI 308191 (amoxicillin 500 MG Oral Capsule) is carried by 10 Canadian DINs and 454 US NDCs, so a DIN maps to a set of NDCs, not to one.

How do you map a Canadian DIN to an RxNorm RXCUI?

Normalize both sides to a common key of ingredient set, dose form, and per-ingredient strength, then match on full agreement of all three. Health Canada and RxNorm differ systematically in how they express each of those — Health Canada names salts where RxNorm names bases, states topical and ophthalmic products as percentages where RxNorm uses MG/ML, and uses its own dose-form vocabulary — so each dimension must be normalized before comparison. Products that agree on ingredients and form but not strength are Canada-only strengths and should be given a distinct identifier rather than being mapped to the nearest RxNorm product.

Can Canadian pharmacy drug data be mapped to RxNorm?

Yes, provided the data carries a DIN. Canadian pharmacy and claims systems key dispensing records to the DIN, so any DIN-keyed record inherits whatever RxNorm mapping that DIN has. Once a DIN resolves to an RxNorm drug_id, Canadian dispensing data joins to ingredient and dose-form hierarchies, ATC classification, and US drug data on the same key. The coverage limit is the crosswalk's, not the pharmacy data's: products RxNorm does not carry — Canada-only drugs, Canada-only strengths, sunscreens, dialysis concentrates — stay unresolved and remain analysable by ATC class instead.

Why doesn't every Canadian drug have an RXCUI?

RxNorm covers drugs marketed in the United States. Canada markets drugs the US does not approve — zopiclone, domperidone, gliclazide, betahistine, and combination products such as perindopril/indapamide have no US equivalent and therefore no RXCUI. Health Canada's database also includes categories RxNorm does not model as single clinical drug products, notably sunscreens and other cosmetic-adjacent products, hemodialysis concentrates, and many-ingredient formulations such as parenteral nutrition emulsions and multivalent vaccines. These are structural gaps in RxNorm's scope, not failures of the matching process.

What is a Canada-only strength?

A Canada-only strength is a product whose ingredient and dose form exist in RxNorm but whose marketed strength does not. Sertraline is the canonical example: Canada markets sertraline 25, 50, and 100 MG oral capsules, and RxNorm carries the clinical drug form 'sertraline Oral Capsule' (RXCUI 373867) but no capsule product at those strengths. TwinFyRx mints a stable identifier for these, formatted CA<clinical_drug_form_rxcui>-<hash>, which is never an RXCUI and never collides with RxNorm's identifier space. Products sharing a Canada-only strength share one identifier, so they group and join like any other drug concept.

Can DINs be mapped to ATC codes?

Yes, and in Canada the mapping is supplied at source. Health Canada assigns a WHO ATC classification to each product in the Drug Product Database, at the product grain WHO actually classifies on — which means combination products get their dedicated combination code rather than an ingredient-level approximation. 11,446 of the 11,456 marketed human DINs carry at least one ATC code. That makes ATC usable as an analytical key even for Canadian products that never resolve to an RXCUI, and it fills gaps in ingredient-keyed ATC sources, which cannot express combination codes at all.

Is there a public Canadian DIN database?

Yes. Health Canada publishes the Drug Product Database (DPD) as a free public resource, covering every drug product approved for sale in Canada. It offers an online search interface for one product at a time and downloadable text extracts of the full dataset, split by product status — marketed, approved, dormant, and cancelled. The public DPD is authoritative but raw: ingredients arrive as free text with salt names, strengths as separate value and unit columns, and dose forms in Health Canada's own vocabulary, with no RxNorm, NDC, or normalized clinical key.

Where can I download Canadian DIN data?

Health Canada distributes the Drug Product Database as downloadable extracts from canada.ca at no cost — a ZIP of comma-delimited text files with no header row, one file each for products, ingredients, forms, routes, therapeutic class (ATC), schedules, packages, and status, joined on an internal drug code. That is the authoritative raw source. TwinFyRx delivers the same population already normalized, deduplicated, and crosswalked to RxNorm as the canada_drug_product table, available as a licensed data table or through the Canada API endpoints.

Is there an API for Canadian DINs?

Health Canada offers a public Drug Product Database web query interface, and TwinFyRx offers a REST API over the normalized and RxNorm-crosswalked version of that data. The TwinFyRx endpoints are GET /v1/canada/drugs/{din} for a single product with its crosswalk, GET /v1/canada/drugs/search to filter by name, ATC prefix, dose form, schedule, match method, or drug_id, POST /v1/canada/drugs:lookup for up to 500 DINs in one call, GET /v1/canada/crosswalk/coverage for current resolution rates, and GET /v1/drugs/{drug_id}/canadian-dins for the reverse lookup from a US drug concept to every Canadian DIN carrying it. DINs are accepted bare or zero-padded to 8 digits.

How often is the DIN database updated?

Health Canada updates the Drug Product Database on an ongoing basis as products are approved, discontinued, or amended, and stamps each product record with the date it was last changed. TwinFyRx refreshes the marketed human extract monthly and rebuilds the crosswalk against the current RxNorm release on the same cadence, so newly approved Canadian products and newly added RxNorm concepts are both picked up.

How many Canadian drug products are in the TwinFyRx crosswalk?

11,456 marketed human drug products, of which 8,957 are prescription-scheduled. That is the full Health Canada marketed extract for the human drug class; veterinary, disinfectant, and radiopharmaceutical classes are excluded. Current resolution rates by method are served live from the /v1/canada/crosswalk/coverage endpoint rather than published as a fixed figure, because they change with each RxNorm and DPD refresh.

Can I join Canadian and US drug data on the same key?

Yes, once both sides are resolved to RxNorm drug_id. A DIN resolved to drug_id 308191 and a US NDC resolved to the same drug_id refer to the same clinical concept — amoxicillin 500 MG oral capsule — so a single join key spans both markets and connects to everything else keyed on drug_id, including ATC classification, therapy attributes, and US pricing benchmarks. Pricing is the exception: NADAC and Medicare ASP are US programs and carry no Canadian rates, so a cross-border join gives you shared clinical identity, not shared price.

TwinFyRx canada_drug_product table

Every marketed Canadian human drug product, keyed by din, carrying Health Canada’s own attributes alongside a canonical drug_id — the same key used by the RxNorm hierarchy, the NDC crosswalk, ATC classification, and every enrichment layer. One join key, both markets.

Download a free data sample →