22 Slice Regulatory Approvals
Pipeline Slice: Regulatory Approvals
Section titled “Pipeline Slice: Regulatory Approvals”Status: SHARP CORE VERTICAL / IN-PLACE PUBLICATION. Fixture-complete multi-authority capture, live FDA approval, REMS/CDx, and scoped label capture, source-current effective claims, normalization, evidence, resolution, canonical assertions, product protections, six query models, contracts, and provenance are implemented. Live compound-label approved-use decomposition, non-FDA live adapters, and approval-notification/designation feeds remain source expansions; atomic approvals-family publication remains an activation gate. Denoising state: sharp (noise -> rough -> sharp -> converged) Updated: 2026-07-25
Purpose
Section titled “Purpose”Model regulatory approval intelligence: source approvals, labels, designations, indication language, safety programs, companion diagnostics, product exclusivity/patent records, and structured label-derived evidence. This slice turns regulator-published artifacts into quality-passing regulatory assertions that agents can query through SQL; reviewed curation overlays apply only when the normal pipeline needs correction.
Legacy Data Gov treated approvals as a multi-regulator unification problem: FDA, EMA, KEGG/PMDA, and CDE/NMPA sources were collected into source tables, matched to canonical drugs, assembled into unified DrugApproval records, enriched with labels, and parsed into structured indications (../bioloupe-data-gov/docs/drug-approvals.md, ../bioloupe-data-gov/lib/tasks/regulatory/, ../bioloupe-data-gov/app/models/drug_approval.rb).
Current Decided Shape
Section titled “Current Decided Shape”Regulatory approvals produce evidence-backed approval and indication assertions, not merely a list of approved products. The slice owns source-specific regulatory identity and label evidence; drug/disease/biomarker identities are resolved through exact/cross-reference/verifier policy before publishing to q_*; curation is the reviewed override path.
flowchart LR FDA[FDA / openFDA / Drugs@FDA / labels] FDASupp[FDA REMS / companion diagnostics] EMA[EMA public medicines data] KEGG[KEGG / PMDA-derived drug source] CDE[CDE / NMPA source records + labels] Raw[Raw approval snapshots] LabelRaw[Immutable FDA label versions] SuppRaw[Raw supplement snapshots] Normalized[Normalized approval records] SuppNorm[Normalized supplement records] SuppLinks[Approval supplement links] Evidence[Approval / indication / label evidence claims] Resolution[Drug, disease, biomarker, organisation resolution] Verify[Verifier / accepted basis] Curation[Reviewed curation overlay] Canonical[Canonical approval assets] Query["q_drug_approvals family"] FDA --> Raw FDASupp --> SuppRaw EMA --> Raw KEGG --> Raw CDE --> Raw Raw --> Normalized --> Evidence --> Resolution --> Verify --> Canonical --> Query FDA --> LabelRaw --> Evidence SuppRaw --> SuppNorm --> SuppLinks --> Evidence Curation -. optional override .-> Canonical
Source Inventory
Section titled “Source Inventory”| Source | Greenfield role | Source identifiers | Legacy evidence | Web/reference evidence |
|---|---|---|---|---|
| FDA openFDA / Drugs@FDA | US application/product/label source | NDA/BLA/ANDA application number, submission number, SPL set id where available | regulatory:fda:*, FdaDatum, FDA label enrichment (../bioloupe-data-gov/docs/drug-approvals.md) | openFDA exposes drug endpoints including product labeling and Drugs@FDA data: https://open.fda.gov/apis/drug/ |
| FDA Orange Book | live FDA product approval/exclusivity/patent source, not a stale legacy cache | application number, product number | legacy supplementary Orange Book records are used but local rows were stale in June 2026 | FDA publishes Orange Book data files: https://www.fda.gov/drugs/drug-approvals-and-databases/orange-book-data-files |
| FDA Purple Book | live biological product approval source and biologic relationship evidence | BLA/application/product names | regulatory:purplebook:sync, PurplebookRecord were active in June 2026 | FDA Purple Book downloads list current CSV/XLSX files: https://purplebooksearch.fda.gov/downloads |
| DailyMed / SPL labels | official structured label sections for indications, warnings, dosing, adverse reactions | SPL set id/version, application numbers | Fda::LabelSync, Fda::DailyMedClient, boxed warnings extraction | DailyMed provides SPL labeling resources; openFDA also exposes product labeling: https://dailymed.nlm.nih.gov/dailymed/ and https://open.fda.gov/apis/drug/label/ |
| EMA public medicines data | EU centralized medicine authorizations and product information | EMA product number, medicine name, authorization status | regulatory:ema:download_and_extract, EmaApprovedDrug | EMA publishes human medicines data and product information downloads: https://www.ema.europa.eu/en/medicines |
| KEGG drug database | Japan/PMDA-linked approval/reference drug source | KEGG drug id / remark codes | KeggApprovedDrug, KEGG scraper | KEGG DRUG is a drug information resource with REST access patterns: https://www.kegg.jp/kegg/drug/ |
| CDE / NMPA | China chemical/marketed approval source and official labels | CDE/NMPA application/source ids; Chinese source fields | regulatory:cde:collect, ChinaApprovedDrug, CDE PDF label processing (../bioloupe-data-gov/docs/drug-approvals.md) | CDE public portal/source systems: https://www.cde.org.cn/ |
| FDA companion diagnostics / REMS | live supplementary regulatory facts linked to approval context; not approval rows | device/test ids, REMS program ids, source application numbers | companion diagnostics and REMS tasks/models were active in June 2026 | FDA publishes companion diagnostic and REMS resources through official pages: https://www.fda.gov/medical-devices/in-vitro-diagnostics/list-cleared-or-approved-companion-diagnostic-devices-in-vitro-and-imaging-tools and https://www.fda.gov/drugs/drug-safety-and-availability/risk-evaluation-and-mitigation-strategies-rems |
| FDA approval notifications / breakthrough designations | deferred regulatory events/designations, not approval rows or safety claims | notification URLs, event dates, designation ids | notifications and breakthroughs tasks/models were active in June 2026 | FDA publishes approval-notification resources through official pages: https://www.fda.gov/drugs/resources-information-approved-drugs/hematologyoncology-cancer-approvals-safety-notifications |
Source Decision
Section titled “Source Decision”Model FDA, EMA, KEGG, and CDE as first-class source families because the product intentionally unifies all four. The complete fixture graph exercises every family. FDA has live approval and supplement adapters; EMA, KEGG, and CDE remain fixture/import-ready until their exact public live contracts are implemented. That adapter maturity never changes the region-aware canonical model.
FDA labels remain part of this regulatory domain but use a separate source interface:
regulatory_label_source. The label endpoint has a different configured cohort, paging limit,
document-version selector, and activation scope from the bulk approval/product downloads. Its
Dagster definition and fixture live under defs/sources/regulatory/; reusable mechanics remain in
the deeper lib/sources/regulatory_labels/ module. This is one domain owner with two runtime
interfaces, not a second SOC-owned source family.
evidence.approval_claims_effective, evidence.indication_claims_effective, and
evidence.regulatory_safety_claims_effective admit claims only from each normalized record’s current
immutable source artifact; supplement claims also require the current accepted
supplement-to-approval link. Canonical rebuilds read these effective views, so a corrected source
snapshot cannot leave stale prior-artifact approval facts active. Migration 20260725_0008 applies
the same rule to an already-versioned database.
Asset Graph for This Slice
Section titled “Asset Graph for This Slice”flowchart TD SourceSystems[[Regulatory sources]] Raw[sources.regulatory.*_snapshots] SuppRaw[sources.regulatory.fda_supplement_snapshots] Normalized[normalized.approval_source_records] LabelRaw[sources.regulatory.fda_label_snapshots] EmbeddedLabelNorm[normalized.label_documents] LabelNorm[normalized.regulatory_label_records] SuppNorm[normalized.regulatory_supplement_records] SuppLinks[resolution.approval_supplement_links] ApprovalClaims[evidence.approval_claims] IndicationClaims[evidence.indication_claims] SafetyClaims[evidence.regulatory_safety_claims] Resolution[resolution.regulatory_entities] Curation[[curation.effective_overrides]] Canonical[canonical.drug_approvals] Query["q_drug_approvals family"] SourceSystems --> Raw --> Normalized --> ApprovalClaims --> Resolution SourceSystems --> SuppRaw --> SuppNorm --> SuppLinks --> SafetyClaims Raw --> EmbeddedLabelNorm --> IndicationClaims --> Resolution LabelRaw --> LabelNorm LabelNorm --> SafetyClaims --> Resolution Resolution --> Canonical --> Query Curation -. reviewed overrides .-> Canonical
Implemented concrete assets
Section titled “Implemented concrete assets”| Layer | Asset key | Grain | Notes |
|---|---|---|---|
| source | sources.regulatory.approval_snapshot_store | one physical append-only multi-authority store | Single DDL owner; family capture assets depend on it and never create the table themselves. |
| source | sources.regulatory.fda_snapshots | one FDA application/product source snapshot | Preserve raw openFDA/Orange Book/Purple Book payload and source retrieval metadata. |
| source | sources.regulatory.fda_label_snapshots | one immutable FDA SPL/openFDA label version | Exact label capture with an explicit active-version selector and scoped activation metadata. |
| source | sources.regulatory.fda_supplement_snapshots | one FDA REMS program or CDx device-list row artifact | Preserve raw grouped REMS CSV payloads and official CDx table rows; not approval rows. |
| source | sources.regulatory.ema_snapshots | one EMA product row/document snapshot | Store source export version and product-info locator. |
| source | sources.regulatory.kegg_snapshots | one KEGG drug/source snapshot | Keep KEGG id and scraper/parser provenance. |
| source | sources.regulatory.cde_snapshots | one CDE API/PDF/source snapshot | Preserve Chinese source fields, extracted text, translation provenance. |
| normalized | normalized.approval_source_records | one source approval/product record | Source-faithful, not canonicalized. |
| normalized | normalized.label_documents | one embedded multi-authority label/document identity | Metadata projected from an approval snapshot; not the exact FDA section store. |
| normalized | normalized.regulatory_label_records | one selected FDA label document/section/study/outcome/AE record | Projects only explicitly active label versions; live compound indication sections remain source text until governed decomposition. |
| normalized | normalized.regulatory_supplement_records | one source-faithful REMS/CDx routing record | Carries source application numbers, drug terms, biomarker terms, and artifact locator. |
| evidence | evidence.approval_claims | one approval/status/date/region claim | Approval status, region, date, application number, product identity. |
| evidence | evidence.indication_claims | one parsed indication assertion | Disease, line/setting, biomarker, population, indication type. |
| evidence | evidence.regulatory_safety_claims | one label warning/REMS/boxed warning/CDx claim | Safety and diagnostic linkage facts. |
| resolution | resolution.approval_supplement_links | one accepted REMS/CDx-to-approval link | Exact source application-number link to normalized.approval_source_records; no fuzzy auto-link. |
| resolution | resolution.regulatory_entities | one candidate set per source term/subject | Drug, disease, biomarker, organisation, regulator identity. |
| canonical | canonical.drug_approvals | one effective approval assertion | Region/source-specific approval fact. |
| query | query.q_drug_approvals* | agent-facing grains below | Materialized SQL read models. |
Source-capture implementation spec
Section titled “Source-capture implementation spec”Regulatory source capture must follow the source-resource standard in
12-source-first-ingestion.md. The implementation seam is one RegulatorySourceResource in
lib/sources/regulatory/resource.py; the Dagster assets in defs/sources/regulatory/ remain thin.
class RegulatorySourceResource(dg.ConfigurableResource): fda_approval_mode: Literal["fixture", "live"] = "fixture" fda_supplement_mode: Literal["fixture", "live"] = "fixture" max_live_records: int | None = None source_http: SourceHttpResource
def approval_capture(self, source_family: Literal["fda", "ema", "kegg", "cde"]) -> RegulatoryApprovalCapture: ... def supplement_capture(self) -> RegulatorySupplementCapture: ...Exact FDA label capture uses a separate typed interface because its variation and activation semantics differ:
class RegulatoryLabelSourceResource(dg.ConfigurableResource): mode: Literal["fixture", "live", "import"] = "fixture" application_numbers: list[str] = [] search_query: str = "" max_live_records: int | None = None source_http: SourceHttpResource
def capture(self) -> RegulatoryLabelCapture: ...Complete exact-application live capture may replace only those applications; complete free-query capture may upsert only observed label sets; bounded or incomplete capture cannot change the active selector; live capture can never replace the global inventory. Operator imports are captured immutably but do not activate automatically.
max_live_records is only a bounded live-smoke guard. Full source refreshes leave it unset. Any
bounded live run must publish capture_scope=bounded_smoke and is_complete_source_capture=false
so downstream users do not mistake the sample for the full regulatory corpus.
| File/module | Required role |
|---|---|
lib/sources/regulatory/models.py | typed approval/supplement capture records, source locator/value objects, source-mode metadata |
lib/sources/regulatory/adapters.py | fixture and live adapters for openFDA/Drugs@FDA, Orange Book, Purple Book, REMS, CDx, later EMA/KEGG/CDE |
lib/sources/regulatory/resource.py | source mode, max_live_records, base URLs, nested source_http, retry/error classification |
lib/sources/regulatory/repository.py | DDL/upsert into sources_regulatory.approvals_snapshots and sources_regulatory.supplement_snapshots, source-artifact registration |
defs/sources/regulatory/approvals.py | Dagster asset declarations only: keys, groups, pools, resource calls, repository writes, metadata |
defs/sources/regulatory/supplements.py | same as approvals; no env flag branch and no direct low-level HTTP dependency |
defs/sources/regulatory/labels.py | thin FDA label asset declaration; owns no HTTP, parsing, or activation logic |
lib/sources/regulatory_labels/ | label-specific model, fixture/live/import adapters, active-version policy, and immutable repository |
The source assets use pool="source_fda" for FDA live calls and pool="postgres" when bulk
database writes are the bottleneck. Default test and dev materializations use fixtures. Live smoke
tests mock source_http by default and only hit the real internet under an explicit opt-in run.
Rejected alternatives:
| Alternative | Rejection |
|---|---|
Keep BIOLOUPE_LIVE_SOURCE_FDA_ENABLED / BIOLOUPE_LIVE_SOURCE_FDA_SUPPLEMENTS_ENABLED in asset bodies | The asset body becomes the variation seam, source mode is hidden from run config, and tests couple to branching instead of contracts. |
Put openFDA download logic directly in approvals.py | Makes an already large Dagster definition file own HTTP, parsing, persistence, and graph metadata. |
Separate fda_source, ema_source, kegg_source, cde_source resources immediately | Prematurely expands the approval interface. One approval resource is deeper until authority-specific auth/runtime constraints force a split. |
Put FDA labels inside RegulatorySourceResource only to minimize resource count | Resource count is not the design goal. Label API, cohort, paging, version selection, and activation vary together and justify one small stable interface. |
Slice-Local Domain Model
Section titled “Slice-Local Domain Model”Regulatory approvals stress regionality, source authority, label versioning, and indication decomposition.
| Entity | Grain | Canonical key recommendation | Notes |
|---|---|---|---|
| Regulatory source record | one source-published product/application row | reg_source:{source}:{source_record_id} | Source identity remains stable even if canonical links change. |
| Regulatory supplement artifact | one REMS program or CDx device-list row artifact | reg_supplement:{source}:{artifact_kind}:{source_record_id} | Routes official supplemental evidence to approvals without becoming an approval row. |
| Approval assertion | one product/drug approval in one region/source context | approval:{source}:{source_record_identity}:{region}:{status_or_date_hash} | Source-record identity is product-grained where the source is product-grained; application number alone is not unique. |
| Label document/version | one official label/source document version | label:{source}:{document_id}:{version_or_seen_at} | Label text is evidence, not the canonical indication itself. |
| Indication assertion | one structured use from a label/source record | indication:{approval_key}:{disease_context}:{line_setting_biomarker_hash} | A single label can yield many indications. |
| Regulatory designation | one designation/program fact | designation:{source}:{designation_type}:{subject_id} | Breakthrough, orphan, PRIME, accelerated, conditional, etc. |
| Regulatory product protection record | one source-scoped product + patent/exclusivity record | product_protection:{source}:{application}:{product}:{kind}:{source_record_id} | Patent and regulatory exclusivity are distinct. An expiry date is source context, not a universal loss-of-exclusivity date. |
| Safety program / warning | one REMS/boxed-warning/safety claim | safety:{source}:{program_or_warning_id} | Safety evidence may be approval-wide or indication-specific. |
| Companion diagnostic link | one drug/biomarker/test/indication relation | cdx:{source}:{test_or_device_id}:{drug_or_indication} | Requires drug + biomarker/test resolution. |
| Applicant / holder / partner role | one organisation role on an approval | approval_org_role:{approval_key}:{role}:{org_term_hash} | Ownership/partner semantics may be time-sensitive. |
Invariants
Section titled “Invariants”- Approval facts are region- and source-scoped. A US FDA approval is not equivalent to EMA/CDE/KEGG approval.
- Drug approval is not the same grain as indication. One approval/label can contain multiple indications; one indication can require multiple biomarker/disease/treatment-line constraints.
- Label-derived evidence must retain the label/source document version and text locator.
- Translated CDE label claims must retain original Chinese text, translation version, and source PDF/API locator.
- Innovation type (
original,generic,biosimilar, etc.) is a derived claim with source-specific mapping evidence, not a universal raw field. - Patent and regulatory-exclusivity records retain source, region, application/product linkage, protection kind, source code/identifier, expiry date, use code where present, and source release. They do not collapse into one global
loss_of_exclusivityfact. - REMS and CDx source artifacts link to approvals only through accepted
resolution.approval_supplement_linksrows. Exact source application number is the first implemented basis; approval notifications and breakthrough designations remain separate event/designation work.
Slice-Local Entity Resolution
Section titled “Slice-Local Entity Resolution”| Subject kind | Source term examples | Candidate target types | Publishable basis | High-impact? |
|---|---|---|---|---|
approval_drug_link | brand name, active ingredient, product name, CDE English fields | drug spine resolved_drug_key / brand product / ingredient concept | exact synonym, source cross-reference, context-verified, verifier-passed fuzzy/LLM, reviewed curation override | yes |
approval_indication_disease_link | label disease language, CDE translated disease terms | canonical Disease / NCIt disease concept | exact/NCIt, context-verified, verifier-passed semantic/LLM, reviewed curation override | yes |
approval_biomarker_link | PD-L1, HER2, EGFR mutation, companion diagnostic biomarker | canonical Biomarker / gene/protein/variant | exact/cross-reference/context-verified/reviewed curation override | yes |
approval_organisation_link | applicant, MAH, sponsor, license holder, partner | canonical Organisation | exact legal name/alias, source cross-reference, reviewed curation override | medium/high |
companion_diagnostic_link | test/device/biomarker/drug pair | diagnostic test/device + biomarker + drug | FDA exact device list, source cross-reference, reviewed curation override | high |
approval_trial_link | label clinical-study reference, NCT in label | canonical Trial | exact registry id or verifier or reviewed curation override | medium/high |
No approval-drug or indication-disease fuzzy match publishes without deterministic basis, verifier acceptance, or reviewed curation override. Legacy ActiveAdmin locks and source drug_id matches become explicit resolution receipts or curation overlays, not mutable columns.
Implemented approval-drug resolution is ingredient-first, product-name fallback. The resolver first tries the source active-ingredient/generic drug_term against the drug spine’s resolution.entity_names; if that does not produce a resolved key, it tries the source product_name/brand against the same spine. This uses source-derived canonical.drug_brands populated from approval/product evidence, so branded approvals like KEYTRUDA can resolve to drug:pembrolizumab without reading legacy brand_drugs, minting approval-local drug identity, or requiring NCIt/RxNorm authority enrichment to finish first. Authority-vocabulary external ids improve q_drugs; they are not a prerequisite for resolving a regulator’s own product row.
Evidence Claim Schemas
Section titled “Evidence Claim Schemas”approval_claim
Section titled “approval_claim”| Field | Meaning |
|---|---|
claim_id | stable id from source snapshot + field path + extractor version |
source_family | FDA / EMA / KEGG / CDE / supplementary FDA source |
source_record_key | source-scoped source id |
application_number | NDA/BLA/ANDA/etc when present |
product_name | source product/brand name |
region | USA/EU/Japan/China/etc |
approval_status | approved, withdrawn, pending, conditional, etc. source-faithful then normalized |
approval_date | source date + precision |
claim_value | structured JSON for source-specific fields |
source_locator | API/download/PDF row locator |
Supplement evidence claims reuse evidence.regulatory_safety_claims after the supplement artifact
has an accepted approval_supplement_link. REMS emits safety_type='rems'; CDx emits
safety_type='companion_diagnostic'. The source_record_key remains the linked approval source
record so existing canonical/query assets materialize downstream, while source_artifact_key and
source_locator point to the REMS/CDx artifact, not the approval snapshot.
indication_claim
Section titled “indication_claim”| Field | Meaning |
|---|---|
approval_key | parent approval/source record |
label_key | source label/document version |
source_artifact_key | immutable label/API/PDF/source snapshot key |
source_locator | SPL section, label section, API row, PDF page/span, or source field locator |
raw_indication_text | exact label/source text span |
disease_context_term | raw disease phrase |
line_or_setting | treatment line, adjuvant/metastatic/maintenance/etc |
biomarker_requirements | raw and structured biomarker constraints |
population_constraints | age, prior therapy, disease subtype, geography, etc |
indication_type | treatment / diagnosis / prevention / mitigation / unknown |
resolution_subject_keys | disease/biomarker/drug/org subjects |
Curation Override Subjects
Section titled “Curation Override Subjects”| Subject kind | Why overrideable | Example curation decision |
|---|---|---|
approval_drug_link | Wrong drug match corrupts approvals, SOC, forecasting, and competitive landscape. | FDA application X resolves to Drug Y, not same-name unrelated brand. |
approval_indication_assertion | Labels often contain compound, nested indication language. | Split one label paragraph into two disease-specific indications. |
approval_indication_disease_link | Disease/subtype matching determines downstream SOC and market context. | “HER2-positive gastric cancer” resolves to disease + biomarker context. |
innovation_type_assertion | Source-specific codes are not semantically uniform. | CDE category 5.1 maps to original for this source context. |
approval_organisation_role | Applicant/holder/partner impacts ownership analytics. | Label applicant is legal holder, not commercial owner. |
companion_diagnostic_link | CDx claims combine test, biomarker, drug, and indication. | FDA CDx row links test A to biomarker B and drug C for indication D. |
product_protection_link | Application/product mismatches corrupt exclusivity context and commercial summaries. | Repoint an Orange Book patent/exclusivity row to the source product it actually covers. |
Canonical Assets
Section titled “Canonical Assets”| Canonical asset | Grain | Built from |
|---|---|---|
canonical.drug_approvals | one effective approval assertion | approval claims + drug/org resolution/verifier receipts; curation overlay when present |
canonical.approval_indications | one structured indication | label/source text + disease/biomarker resolution/verifier receipts; curation overlay when present |
canonical.regulatory_designations | one designation/program fact | breakthrough/orphan/conditional/etc source claims |
canonical.companion_diagnostic_links | one drug-biomarker-test relation | FDA CDx evidence + entity resolution |
canonical.regulatory_product_protections | one source-scoped product patent/exclusivity record | versioned Orange Book or equivalent regulator files + product/approval resolution |
normalized.label_documents is the embedded multi-authority document-identity registry produced
from approval snapshots. Exact FDA documents and sections are separately owned by
sources_regulatory.fda_label_* and normalized.regulatory_label_*; this prevents approval rows
from pretending to be complete label capture. Warning, boxed-warning, and REMS claims remain
evidence-layer facts in evidence.regulatory_safety_claims and are surfaced through
q_label_evidence; promote them to canonical.regulatory_safety_claims only when a reviewed
safety-claim overlay exists. Approval organisation roles are deferred to the
organisation-intelligence slice instead of modelled as a ghost canonical table here.
q_drug_approvals Family
Section titled “q_drug_approvals Family”| Query model | Grain | Purpose |
|---|---|---|
q_drug_approvals | one effective approval | region-aware approval search by drug, source, date, status, innovation type |
q_approval_indications | one indication assertion | disease/biomarker/treatment-line indication discovery |
q_label_evidence | one label/REMS/warning evidence span | trace label-derived and supplement-derived claims to source text |
q_regulatory_designations | one designation/program fact | orphan/breakthrough/accelerated/conditional/PRIME/etc tracking |
q_companion_diagnostics | one drug-biomarker-test relation | CDx intelligence for biomarker-linked therapies |
q_regulatory_product_protections | one regulator product + protection record | inspect patent/exclusivity context and source expiry dates without pretending one date is universal LOE |
q_provenance receipts, optionally exposed through q_regulatory_provenance | one or more receipts per provenance-required row/fact | global source snapshots + extraction runs + evidence claims + resolution/verifier receipts + curation overlays when applicable; q_regulatory_provenance may exist only as a convenience view over q_provenance |
q_regulatory_product_protections requires regulatory_product_protection_key, source/region, application and product identifiers, resolved approval/drug/brand keys, protection_kind (patent or regulatory_exclusivity), source code/identifier, patent/use code when applicable, expiry date and precision, source release, assertion/supersession state, and provenance_key. The source record is authoritative for what the regulator file reports; legal validity, litigation outcomes, pediatric extensions, and market-entry predictions require separate evidence. 35-slice-commercial-intelligence.md may project selected protection context into a product summary but does not own or duplicate these records.
Downstream key contract
Section titled “Downstream key contract”resolved_approval_key(s) used by downstream slices (regulatory-event mentions in 24-slice-news-intelligence.md, approval-backed evidence in 25-slice-standard-of-care.md and forecasting readiness in 28-slice-forecasting-tpp.md) is defined here as a stable key into q_drug_approvals — the same identity as the approval_key domain key (approval:{source}:{source_record_identity}:{region}:{status_or_date_hash}). It stays region- and source-scoped: a downstream resolved_approval_key is never a global “approved” flag, and downstream slices reference it rather than minting approval identity. Drug, disease, biomarker, and organisation identities inside this slice resolve into their owner spines (resolved_drug_key → 29, resolved_disease_key/resolved_biomarker_keys → 30, resolved_org_key → 26).
q_approval_indications comparative fact contract
Section titled “q_approval_indications comparative fact contract”q_approval_indications is the regulatory-label side of the shared therapeutic-fact model in 20-pipeline-families.md. It is an approved-use assertion from a regulator/source artifact, not a clinical outcome row. FDA labeling guidance treats the INDICATIONS AND USAGE section as the place to state approved uses and clinically significant limitations; DailyMed/openFDA expose structured label artifacts, while EMA/CDE/KEGG need source-family-specific locators and translations where applicable (FDA labeling guidance: https://www.fda.gov/media/114443/download; DailyMed SPL resources: https://dailymed.nlm.nih.gov/dailymed/; openFDA label endpoint: https://open.fda.gov/apis/drug/label/).
| Contract field | Required meaning |
|---|---|
| Purpose | Answer: “For what patient population/context is this product approved or regulator-described, from which label/source, and with what constraints?” |
| Grain | One structured indication assertion for one approval/product/source label context + disease/population/line/biomarker slice. |
| Stable row key | approval_indication:{source_family}:{approval_key}:{label_key}:{indication_hash}. |
| Required columns | approval_indication_key, approval_key, label_key, source_family, region, regulator, application_number, product_name, resolved_drug_key, disease_term, resolved_disease_key, biomarker_terms, resolved_biomarker_keys, line_or_setting, population_constraints, indication_type, approval_status, approval_date, raw_indication_text, source_artifact_key, source_locator, translation_version, source_language, assertion_state, provenance_key. |
| Search affordances | filters on region/source/regulator, drug, disease, biomarker, line/setting, approval status/date, indication type; full text/trigram on raw indication text and product names. |
| Provenance rule | provenance_grain=bundle for every indication row; field receipts for raw_indication_text, approval_status, approval_date, line_or_setting, population_constraints, and translated fields. |
| Refresh/materialization | current runtime is an in-place plain view after label-document extraction, indication decomposition, disease/biomarker/drug resolution, verifier gates, and applicable curation-review gates; it is not last-known-good protected until the approvals family adopts atomic generation publication. |
| Blocking checks | schema_contract, provenance_coverage, source_artifact_immutability, source_locator, document_version, source_authority, resolution_basis, llm_verifier_required, curation_review_state when override applies. |
Allowed fact_path examples:
approval_indication:approval=fda-nda-123:label=spl-abc:disease=nsclc:attr=label_textapproval_indication:approval=fda-nda-123:label=spl-abc:disease=nsclc:attr=approval_statusapproval_indication:approval=cde-456:label=pdf-789:disease=gastric_cancer:attr=translation_versionThis row can support SOC assertions, forecasting readiness, and competitive-landscape queries, but it remains source/regulator-scoped. It must not become a global drug is approved flag without region, source, indication, and provenance.
Current boundary: q_approval_indications materializes structured source fields from the
approval-source path. The exact FDA label adapter captures live
indications_and_usage sections but does not yet decompose compound section text into atomic
approved-use claims. Those rows fail closed before downstream review candidates. Implementing and
evaluating that governed regulatory extraction is a live activation blocker, not evidence that
every raw section is already queryable as a structured indication. Per
ADR-0011, even a successfully
decomposed approved use remains distinct from standard of care.
q_approval_indications column contract seed
Section titled “q_approval_indications column contract seed”| Column | Type | Nullability | Semantic type | Provenance |
|---|---|---|---|---|
approval_indication_key | text | not null | query row key | row |
approval_key | text | not null | approval assertion key | row |
label_key | text | nullable | label artifact/version key | bundle when label-derived |
source_family | text | not null | source family | row |
region | text | not null | geography/regulatory region | row |
regulator | text | nullable | regulator | row |
application_number | text | nullable | source application id | bundle when present |
product_name | text | not null | source product name | bundle |
resolved_drug_key | text | nullable | resolved drug key | field when present |
disease_term | text | nullable | source disease phrase | bundle when present |
resolved_disease_key | text | nullable | resolved disease key | field when present |
biomarker_terms | text[] | nullable | source biomarker phrases | bundle when present |
resolved_biomarker_keys | text[] | nullable | resolved biomarker keys | field when present |
line_or_setting | text | nullable | treatment line/setting | field when present |
population_constraints | jsonb | nullable | patient population constraints | field when present |
indication_type | text | not null | treatment/diagnosis/prevention/etc | bundle |
approval_status | text | not null | regulatory status | field |
approval_date | date | nullable | approval/effective date | field when present |
raw_indication_text | text | nullable | label/source text | field when present |
source_artifact_key | text | not null | immutable source artifact | bundle |
source_locator | jsonb | not null | source locator | bundle |
translation_version | text | nullable | translation version | field for translated sources |
source_language | text | nullable | language code | row |
source_authority_tier | text | not null | authority tier | row |
assertion_state | text | not null | effective assertion state; curation overlay if applicable | row |
provenance_key | uuid | not null | provenance bundle | bundle |
Catalog notes: region, source_family, and indication_type should be controlled vocabularies. raw_indication_text is nullable only for non-label source records that express indication as structured fields; in that case source_locator must identify the source fields exactly.
q_approval_indications vocab/search/example seed
Section titled “q_approval_indications vocab/search/example seed”Legacy data-shape pressure from local datalake confirms that regulatory values should be normalized but source-preserving: drug_approvals.region is currently concentrated in USA, CN, EU, and JP; source_type includes FDA, China/CDE, EMA, KEGG, and Purple Book-derived records; approval_status includes drug_approved, drug_discontinued, drug_approval_unknown, drug_pending, and drug_rejected; indications.indication_type includes treatment, prevention, diagnosis, mitigation, and symptom_relief (public.drug_approvals, public.indications, sampled from local datalake).
Controlled vocabularies:
| Field | Controlled values / normalization |
|---|---|
region | USA, EU, CN, JP, with room for future ISO/region expansion. |
source_family | fda, dailymed, openfda, ema, cde, nmpa, kegg, purple_book, orange_book, curation_overlay. |
approval_status | approved, discontinued, withdrawn, pending, rejected, unknown, plus source-specific raw value retained in evidence. |
indication_type | treatment, diagnosis, prevention, mitigation, symptom_relief, unknown. |
innovation_type if exposed on sibling approval model | original, generic, non_original, biosimilar, biosimilar_interchangeable, unknown. |
source_authority_tier | regulator_label, regulator_approval_database, regulator_supplementary, third_party_regulatory_projection, curation_overlay. |
Search/index contract:
| Search need | Required index/affordance |
|---|---|
| Approval/indication lookup by drug/region | btree on (resolved_drug_key, region, approval_status). |
| Disease/biomarker indication discovery | btree on resolved_disease_key; GIN on resolved_biomarker_keys. |
| Label/source text search | generated tsvector and trigram index over raw_indication_text, product_name, and disease_term. |
| Temporal/regulatory filtering | btree on approval_date, source_family, regulator. |
| Provenance audit | btree on source_artifact_key; hash/btree on provenance_key; btree on source_authority_tier. |
| Translation QA | partial index where source_language <> 'en' or translation_version is not null. |
Example row shape:
approval_indication_key: approval_indication:fda:nda-123456:spl-abc:nsclc-pdl1approval_key: approval:fda:nda-123456:usa:approvedlabel_key: label:dailymed:spl-abc:v2026-01-01source_family: fdaregion: USAregulator: FDAapplication_number: NDA123456product_name: Examplemabresolved_drug_key: drug:examplemabresolved_disease_key: disease:nsclcbiomarker_terms: [PD-L1 TPS >= 50%]line_or_setting: first_line_metastaticindication_type: treatmentapproval_status: approvedraw_indication_text: indicated for first-line treatment of metastatic...source_authority_tier: regulator_labelprovenance_key: <uuid>Pathological examples the implementation must handle:
| Case | Why it is dangerous | Required behavior |
|---|---|---|
| Label indication has no explicit disease phrase but structured source fields imply one | Some source records expose indication via fields rather than a clean label text span. | Permit raw_indication_text is null only when source_locator identifies exact source fields and the indication decomposition is provenance-complete. |
| CDE/NMPA translated indication lacks original Chinese text | Translation can change disease, line, and biomarker meaning. | Block accepted query publication until original text, translation version, and source artifact locator are present. |
| Publication result is tempting to treat as approval | A publication can support efficacy evidence but is not a regulator approval source. | Never publish q_approval_indications from publication-only authority; keep it in publication evidence/SOC support surfaces. |
| Same drug has different approval status across regions | A global approved flag erases regulatory reality. | Keep rows region/source scoped; agents must filter region, source_family, and approval_status. |
Checks and Quality Gates
Section titled “Checks and Quality Gates”Blocking:
- every approval assertion has source family, source record key, region, and provenance bundle;
- every published approval-drug link has accepted basis;
- every
resolved_drug_key,resolved_disease_key,resolved_biomarker_keys, andresolved_org_keyvalue resolves to an active row in its ownerq_*model (referential_integritygate in08-contracts-and-quality.md); - every indication row has raw source text or source field locator;
- translated CDE-derived claims retain original text + translation provenance;
- every product protection row resolves to an exact source application/product record, preserves protection kind and source release, and does not publish a derived universal LOE date;
- schema of
q_drug_approvalsfamily matches generatedq_catalog; - no high-impact unresolved conflict publishes as accepted indication/drug truth.
Warning:
- source freshness drift by regulator;
- sudden count change by source/status/region;
- unmapped source submission class or innovation code;
- label parser section drift;
- unusually high unresolved indication/disease terms.
Source Expansion Boundary
Section titled “Source Expansion Boundary”- Add sampled, contract-tested live adapters for EMA, KEGG/PMDA, and CDE/NMPA without changing the source/evidence/query grains.
- Add FDA approval-notification and breakthrough-designation capture as event/designation sources, not approval rows.
- Expand label evidence from exact locators and bounded excerpts to fuller section capture only when storage, licensing, and agent retrieval needs justify it.
- Extend source-specific innovation mappings as evidence claims; never infer one universal innovation class from incompatible regulator codes.