HealthPorta's drug reference ingestion service for normalized NDC products, packages, labels, and RxNorm-linked lookup support.
This service maintains the drug-side canonical tables used for:
- NDC product and package search
- FDA label retrieval
- RxNorm-linked product and package lookup
- DailyMed/OpenFDA label-derived condition evidence
- downstream crosswalk support for other HealthPorta services
Public documentation lives in docs/README.md.
Key pages:
This repository ingests from public FDA/OpenFDA source systems:
- OpenFDA (
drug/ndcanddrug/labelpayloads) - FDA download catalog (partition discovery)
Reference terminology/context used by the data model:
See the canonical source registry in docs/data-sources.md.
For production documentation and managed commercial access, see HealthPorta Docs.
HealthPorta can be used as:
- a hosted API layer for current drug reference, NDC, package, and label data
- an MCP-backed data service for AI agents and internal enterprise workflows
- a downstream integration point for customer applications, clinical products, and analytics systems that need fresh drug data
For AI-agent connectivity, see HealthPorta MCP.
Use .env.example as the configuration reference.
Local prerequisites:
- PostgreSQL
- Redis
- Python virtual environment with dependencies installed
Typical startup flow:
python main.py server start --host 0.0.0.0 --port 8080Run the imports separately.
NDC / product import:
python main.py start ndc
python main.py worker process.NDC --burstLabel import:
python main.py start label
python main.py worker process.Labeling --burstDrug indication mapping import:
python main.py start drug-indications --test
python main.py start drug-indicationsEach import rebuilds staging tables and then swaps them into the live rx_data schema.
- NDC import publishes
productandpackagetogether. - Label import publishes
labelseparately. - Drug indications import publishes
drug_condition_evidencefrom local label data plus official clinical terminology relationships. - The project uses dedicated ARQ queues for NDC and label imports by default.
- RxNorm lookup support depends on a successful NDC import because
product.rxnorm_idsis populated from OpenFDA payloads during that import. - DailyMed/NLM-derived outputs must preserve the required NLM attribution statement from the import docs.
