Skip to content

Indications

An indication is a specific approved use of a drug for a disease — the FDA label entry that says “pembrolizumab is indicated for the first-line treatment of metastatic NSCLC in patients whose tumors express PD-L1 (TPS >= 1%).” Four entities decompose that sentence into queryable structure: indications, therapeutic_approaches, indication_biomarkers, and therapeutic_approach_prior_therapies.

erDiagram
    drug_approvals ||--o{ indications : "indicated for"
    indications }o--|| diseases : "treats"
    indications ||--o{ indication_biomarkers : "requires"
    indication_biomarkers }o--|| biomarkers : "biomarker"
    indication_biomarkers }o--o| therapeutic_approaches : "scoped to"
    indications ||--o{ therapeutic_approaches : "treatment strategies"
    therapeutic_approaches }o--o| regimens : "uses"
    therapeutic_approaches ||--o{ therapeutic_approach_prior_therapies : "requires prior"
    therapeutic_approach_prior_therapies }o--o| drugs : "prior drug"

indications — approved use linking drug_approval to disease

Section titled “indications — approved use linking drug_approval to disease”

The central table. Each row links one drug_approval to one disease with rich contextual facets.

ColumnTypePurpose
drug_approval_idFKParent drug approval
disease_idFKTarget disease
indication_typetextinitial, supplemental, or expanded
indication_texttextOriginal indication wording from the drug label
disease_stagesjsonbApplicable stages (e.g., ["Stage IIIB", "Stage IV"])
disease_subtypesjsonbApplicable subtypes (e.g., ["squamous", "non-squamous"])
disease_extentsjsonbDisease extents (e.g., ["metastatic", "locally advanced"])
disease_statusesjsonbPatient statuses (e.g., ["treatment-naive", "relapsed"])
populationtextAge or fitness constraints (e.g., "adult", "pediatric >= 12")
risksjsonbBoxed warning risk tags
accelerated_approval_datetimestamptzDate of accelerated approval, if applicable
full_approval_datetimestamptzDate of full/traditional approval, if applicable
accelerated_approval_studiesjsonbNCT IDs or study names supporting accelerated approval
full_approval_studiesjsonbNCT IDs or study names supporting full approval
data_sourcetextProvenance: bioloupe, fda, ema, llm, etc.
source_referencetextExternal ID or URL in the source system
confidencedecimal(3,2)Extraction confidence score (0.00—1.00), LLM-extracted only

A check constraint ensures full_approval_date >= accelerated_approval_date when both are set — an indication cannot receive full approval before accelerated approval.

therapeutic_approaches — treatment strategies within an indication

Section titled “therapeutic_approaches — treatment strategies within an indication”

Each indication can have multiple therapeutic approaches representing different treatment strategies (monotherapy vs. combination, different lines of therapy).

ColumnTypePurpose
indication_idFKParent indication
regimen_idFK (nullable)Treatment regimen used, if mapped
is_single_agentbooleanMonotherapy (true) vs. combination (false)
treatment_linesjsonbLines of therapy (e.g., ["1L", "2L"])
treatment_settingsjsonbTreatment settings (e.g., ["neoadjuvant", "adjuvant"])
min_lineintegerMinimum line of therapy (numeric)
max_lineintegerMaximum line of therapy (numeric)

indication_biomarkers — biomarker requirements for patient selection

Section titled “indication_biomarkers — biomarker requirements for patient selection”

Captures companion diagnostic requirements. A biomarker can be scoped to the indication as a whole or to a specific therapeutic approach within it.

ColumnTypePurpose
indication_idFKParent indication
therapeutic_approach_idFK (nullable)Scoped to a specific approach, or null for indication-wide
biomarker_idFKThe required biomarker
requirementtextrequired, recommended, or optional
required_valuetextExpected test result (e.g., "TPS >= 50%", "Positive")
companion_diagnostictextName of the approved companion diagnostic test

therapeutic_approach_prior_therapies — required prior treatments

Section titled “therapeutic_approach_prior_therapies — required prior treatments”

Records which prior therapies a patient must have received (or failed) before qualifying for a therapeutic approach.

ColumnTypePurpose
therapeutic_approach_idFKParent therapeutic approach
therapy_nametextName of the required prior therapy
requirementtextmust_have_received, refractory_to, relapsed, or intolerant_to
drug_idFK (nullable)Linked drug entity, when the prior therapy maps to a known drug

Indications hang off drug_approvals, not drugs. A drug may have approvals in multiple regions (FDA, EMA, PMDA, NMPA), each with different indications. Attaching indications to the approval rather than the drug preserves this regional specificity. Querying “all indications for drug X” is a simple join through drug_approvals.

Therapeutic approaches model the treatment landscape. Rather than flattening line-of-therapy and setting into columns on indications, the schema uses a separate therapeutic_approaches table. This handles the common case where a single indication covers multiple treatment contexts — e.g., pembrolizumab for NSCLC is approved as both monotherapy in 1L and in combination with chemotherapy in 1L, each a distinct therapeutic approach.

Biomarkers can scope to indication or approach. The nullable therapeutic_approach_id on indication_biomarkers supports both indication-wide biomarker requirements (e.g., “all uses of this drug require HER2 testing”) and approach-specific ones (e.g., “PD-L1 >= 50% required only for the monotherapy approach”).

Prior therapies reference drugs loosely. The drug_id on therapeutic_approach_prior_therapies is nullable because prior therapy requirements often reference drug classes or regimen names (e.g., “prior platinum-based chemotherapy”) that do not map cleanly to a single drug entity.

All indications for a drug, with disease and approval region:

select
i.indication_text,
d.name as disease,
da.region,
i.accelerated_approval_date,
i.full_approval_date
from indications i
join drug_approvals da on da.id = i.drug_approval_id
join diseases d on d.id = i.disease_id
where da.drug_id = :drug_id
order by i.full_approval_date desc nulls last;

Indications requiring a specific biomarker with their companion diagnostics:

select
i.indication_text,
d.name as disease,
ib.required_value,
ib.requirement,
ib.companion_diagnostic
from indication_biomarkers ib
join indications i on i.id = ib.indication_id
join diseases d on d.id = i.disease_id
join biomarkers b on b.id = ib.biomarker_id
where b.name = 'PD-L1'
and ib.requirement = 'required';

Second-line therapeutic approaches with their prior therapy requirements:

select
dr.name as drug,
d.name as disease,
ta.treatment_lines,
ta.is_single_agent,
tapt.therapy_name,
tapt.requirement as prior_therapy_requirement
from therapeutic_approaches ta
join indications i on i.id = ta.indication_id
join drug_approvals da on da.id = i.drug_approval_id
join drugs dr on dr.id = da.drug_id
join diseases d on d.id = i.disease_id
left join therapeutic_approach_prior_therapies tapt on tapt.therapeutic_approach_id = ta.id
where ta.treatment_lines @> '["2L"]'::jsonb
order by dr.name, d.name;