Drug Identification
Posos APIs use a structured hierarchy to identify drugs at different levels of specificity. Understanding this hierarchy is essential for sending the right codes to analysis APIs.
Drug Concept Levels
Drugs are organized in four concept levels, from most generic to most specific:
International Virtual Drug
The international virtual drug (IVD) serves as the common ground between drugs from different countries. It allows linking equivalent concepts (same substance, same dosage, same form) across borders, facilitating international interoperability.
** good to know **: The IVD level is not currently exposed in Posos APIs but may be used in future releases to enable cross-country drug mapping.
Clinical Drug (Virtual Drug)
A clinical drug represents a group of clinically equivalent drugs sharing the same:
- Active substance(s) (INN)
- Dosage(s)
- Pharmaceutical form
- Route of administration
Clinical drugs are brand-agnostic. For example, all generic and branded versions of “atorvastatin 20 mg tablet” are grouped under a single clinical drug.
Posos internal code: prefix MV (e.g., MV00001165)
Branded Drug (Specialty)
A branded drug is a specific marketed product from a particular manufacturer. For example, “TAHOR 20 mg, comprimé pelliculé” (Pfizer’s brand of atorvastatin 20 mg).
Multiple branded drugs can correspond to one clinical drug.
Packaged Drug (Presentation)
A packaged drug is a specific commercial packaging of a branded drug — for example, “TAHOR 20 mg, box of 90 film-coated tablets.”
Coding Terminologies
Different coding systems are used depending on the drug concept level:
| Level | Terminology | Description |
|---|---|---|
| Clinical Drug | posos | Posos internal identifier (code prefix MV) |
| Clinical Drug | medicabase | Medicabase reference |
| Clinical Drug | ATC4 / ATC5 / ATC7 | WHO Anatomical Therapeutic Chemical classification |
| Branded Drug | cis | Code Identifiant de Spécialité (French national drug identifier, ANSM) |
| Branded Drug | UCD7 / UCD13 | Unité Commune de Dispensation (hospital dispensing unit) |
| Packaged Drug | CIP7 / CIP13 | Code Identifiant de Présentation (packaging-level code) |
| Ingredient | inn / SMS | International Nonproprietary Name |
Regional note: The terminologies above are for the French market (
fr_FR). For Belgium (fr_BE), available terminologies includeamp,CNK,CTI Extended, andvmp.
Using Drug Codes in APIs
The DrugInput GraphQL type accepts one of three fields:
input DrugInput {
clinicalDrug: CodingInput # for clinical drug codes
brandedDrug: CodingInput # for branded drug codes (CIS, UCD)
packagedDrug: CodingInput # for packaged drug codes (CIP)
id: String # unique drug identifier
}
input CodingInput {
code: String! # the drug code
terminology: String! # the coding system (e.g., "posos", "cis", "CIP13")
}Resolving Drug Identifiers
In most integrations, you first need to convert drug names or external codes into Posos identifiers using the autocomplete API:
GET /autocomplete-api/autocomplete?query=atorvastatin&entity_type=DRUGThe response includes coded identifiers that you can extract and pass to analysis APIs:
{
"candidates": [
{
"label": "Atorvastatin 20 mg tablet",
"codings": {
"posos": [{ "code": "MV00001165", "terminology": "posos" }],
"cis": [{ "code": "60151894", "terminology": "cis" }]
}
}
]
}See Also
- Shared Input Types — Complete input type reference
- Prescription Analysis Guide — Step-by-step integration
- Clinical Drugs (MedicalDB) — Detailed clinical drug data model