Solution · FHIR R4 Medication API

FHIR R4 Medication API — drug data as resources.

Add ?format=fhir to a drug fetch and receive a standards-valid FHIR R4 Medication — no mapping layer on your side.

647,075

products

19

countries

50

live sources

GET /v1/drugs/{id}?format=fhir

In code

One request. The record back.

Add ?format=fhir to a drug fetch and the API returns a FHIR R4 Medication resource instead of the native shape — ready to drop into an EHR, a CDS-Hooks service, or any HL7-aware pipeline. No mapping layer on your side.

  • Standard R4 Medication. Validates against the base HL7 Medication profile — no proprietary resourceType.
  • Correct code/identifier split. Public codesystems in coding[], jurisdiction-internal codes in identifier[], each with its system URI.
  • Swiss fields as extensions. Dispensing category and BAG-SL reimbursement carried as typed extensions, not stuffed into core fields.

Append ?format=fhir to any drug fetch and receive a Medication resource with codes and identifiers in their correct FHIR homes.

GET /v1/drugs/{id}?format=fhir
curl 'https://drug-database.com/v1/drugs/\
3f8a1c2d-1b4e-4c7a-9d2f-0a1b2c3d4e5f?format=fhir' \
  -H 'Authorization: Bearer dd_live_…'
response
{
  "resourceType": "Medication",
  "id": "3f8a1c2d-1b4e-4c7a-9d2f-0a1b2c3d4e5f",
  "meta": {
    "profile": ["http://hl7.org/fhir/StructureDefinition/Medication"]
  },
  "status": "active",
  "code": {
    "text": "Aspirin Cardio 100 mg",
    "coding": [
      { "system": "http://www.whocc.no/atc", "code": "B01AC06" },
      { "system": "https://www.gs1.org/gtin", "code": "7680651870019" }
    ]
  },
  "identifier": [
    { "system": "https://swissmedic.ch/swissmedic-no", "value": "65187" },
    { "system": "https://www.refdata.ch/pharmacode", "value": "1234567" }
  ],
  "manufacturer": { "display": "Bayer (Schweiz) AG" },
  "extension": [
    { "url": "…/swissmedic-dispensing-category", "valueCode": "B" },
    { "url": "…/bag-sl-reimbursed", "valueBoolean": true }
  ]
}

Live data

A real product, as FHIR R4 Medication.

Every market identifier we hold is mapped to its correct FHIR home. Codes with a recognised codesystem (ATC, GTIN, NDC, PZN, CIP13, dm+d AMPP-ID) become code.coding[] entries; Pharmacode and Swissmedic-No become identifier[] entries. Swiss dispensing category and BAG-SL reimbursement ride along as typed extensions.

  • 647,075 products from 19 countries’ registers
  • Every row carries its source and last-checked date
FHIR R4ATORVASTATIN CALCIUM
{  "resourceType": "Medication",  "id": "000ad304-7b50-4dbf-97a8-d55b151a7cb5",  "meta": {    "source": "drug-database:drug/000ad304-7b50-4dbf-97a8-d55b151a7cb5",    "profile": [      "http://hl7.org/fhir/StructureDefinition/Medication"    ]  },  "code": {    "coding": [      {        "system": "http://www.whocc.no/atc",        "code": "C10AA05",        "display": "ATORVASTATIN CALCIUM"      },      {        "system": "http://hl7.org/fhir/sid/ndc",        "code": "50228-451-10",        "display": "ATORVASTATIN CALCIUM"      },      {        "system": "http://hl7.org/fhir/sid/ndc",        "code": "5022845110",        "display": "ATORVASTATIN CALCIUM"      },      {        "system": "http://hl7.org/fhir/sid/ndc",        "code": "5022845190",        "display": "ATORVASTATIN CALCIUM"      },      {        "system": "http://hl7.org/fhir/sid/ndc",        "code": "50228-451-90",        "display": "ATORVASTATIN CALCIUM"      }    ],    "text": "ATORVASTATIN CALCIUM"  },  "status": "active",  "identifier": [    {      "system": "urn:drug-database:register:us",      "value": "US:50228-451_19c6b2b4-fbba-44dd-8668-bec63b285506",      "use": "official"    }  ],  "manufacturer": {    "display": "ScieGen Pharmaceuticals, Inc."  }}
A real United States product rendered by the same mapper the API uses (row checked 23 Aug 2026).Open the ATORVASTATIN CALCIUM record

Where it comes from

Standards & freshness

  • FHIR R4, base HL7 Medication profile — validates with standard tooling.
  • code.coding[] covers ATC, GTIN, NDC, PZN, CIP13 and dm+d AMPP-ID, each with its system URI.
  • Swiss data (dispensing category, BAG-SL reimbursement) carried as typed extensions.
  • The FHIR view is ETag-cached and revalidatable via the changes feed.
  • FHIR fetches need the drugs:read scope.
  • See the docs for the full coding-system URI table.

Registers behind the resources

  • FDA drug shortages
  • DMP FEST (Legemiddelverket)
  • Swissmedic AIPS
  • Health Canada DPD
  • FDA Orange Book
  • BDPM (ANSM)
  • Läkemedelsverket
Sources passing their checks, as of 3 Oct, 00:05 UTC.Every source and its status

FAQ

Common questions, answered plainly.

Which FHIR version?
FHIR R4. The resource declares the base http://hl7.org/fhir/StructureDefinition/Medication profile and validates as a standard Medication resource.
How are codes split between coding[] and identifier[]?
Codes with a recognised public codesystem URI — ATC, GTIN, NDC, PZN, CIP13, dm+d AMPP-ID — go into code.coding[]. Jurisdiction-internal identifiers like Pharmacode and Swissmedic-No go into identifier[] with their de-facto system URIs.
What about Swiss-specific fields?
Swissmedic dispensing category (A–E) and BAG-SL reimbursement status are carried as typed FHIR extensions, so they round-trip without polluting the standard fields.

Ready when you are

Start building with the FHIR Medication API. Free key, no card.

The free plan includes 10 lookups a month — enough to judge the data. Pro is $29/month when you build on it.