nx_drug_pathway.nx
buildroot/runtime/nx_drug_pathway.nx
about
nx_drug_pathway.nx -- GTM SUITE / INVESTIGATIONAL DRUG DEVELOPMENT rung.
The lawful route for a substance that has no supplement channel anywhere:
develop it as a MEDICINE. This models the phases, the clocks, the money,
and the places where siting the work abroad genuinely helps.
IT IS NOT A MARKET-ENTRY PROBLEM, IT IS A DEVELOPMENT PROBLEM. "How do I
get this to market in another country" has no cheap answer, because no
country sells unapproved drugs to consumers -- they license them after
evidence. What DOES differ between countries is where you can generate
that evidence quickly and cheaply, and that difference is large and
legitimate.
AUSTRALIA IS THE REAL ANSWER TO "SOMEWHERE ELSE". Under the CTN scheme an
early-phase trial is NOTIFIED to the TGA after a human research ethics
committee approves it, rather than waiting on a regulator's review clock --
so Phase 1 starts in weeks rather than months. Stack the 43.5% REFUNDABLE
R&D tax offset on top and early clinical work lands near a third of the US
cost. That is why a great many biotechs run first-in-human in Australia and
then take the data to FDA or EMA. It is entirely lawful, well-trodden, and
it is the honest version of "go abroad".
PRIOR HUMAN DATA IS THE OTHER LEVER, AND IT IS BIGGER. A substance already
studied in humans may be able to rely on that record -- 505(b)(2) in the US,
a hybrid application in the EU -- instead of repeating the work. That is the
difference between a ~$120M full programme and something a fraction of it.
It also means two peptides that look alike commercially can be very far
apart developmentally: one with published clinical work has an on-ramp, one
with mostly rodent data does not.
WHAT NO JURISDICTION OFFERS, ENCODED AS A FUNCTION. There is no country
where an unapproved drug may be sold to consumers, and a foreign approval
does not license a sale into a market that did not grant it. Those are
dp_dtc_without_approval_anywhere() and dp_foreign_approval_licenses_export(),
both hard 0, so a planner cannot route around them.
COSTS ARE ORDER-OF-MAGNITUDE PLANNING FIGURES for a small peptide, in
THOUSANDS OF USD; durations in MONTHS. Real programmes vary by an order of
magnitude and most fail. dp_estimate_is_indicative() exists so nothing
downstream presents these as a budget.
dependencies 1 imports · 1 importers
imports: nx_syscalls.nx
imported by: nx_gtm_svc.nx
structs
| none |
consts
| 51 | const DP_MAGIC_5000: i64 = 5000 |
| 52 | const DP_MAGIC_3500: i64 = 3500 |
| 53 | const DP_MAGIC_18000: i64 = 18000 |
| 54 | const DP_MAGIC_90000: i64 = 90000 |
| 55 | const DP_MAGIC_4000: i64 = 4000 |
| 59 | const DP_PRECLINICAL: i64 = 0 |
| 60 | const DP_PHASE1: i64 = 1 |
| 61 | const DP_PHASE2: i64 = 2 |
| 62 | const DP_PHASE3: i64 = 3 |
| 63 | const DP_REVIEW: i64 = 4 |
| 64 | const DP_N_PHASE: i64 = 5 |
| 66 | const DP_INVALID: i64 = 0 - 1 |
| 102 | const DP_SITE_US: i64 = 0 |
| 103 | const DP_SITE_EU: i64 = 1 |
| 104 | const DP_SITE_UK: i64 = 2 |
| 105 | const DP_SITE_AUSTRALIA: i64 = 3 |
| 106 | const DP_N_SITE: i64 = 4 |
| 203 | const DP_DATA_NONE: i64 = 0 // in vitro / rodent only |
| 204 | const DP_DATA_PHASE1: i64 = 1 // human safety exists |
| 205 | const DP_DATA_PHASE2: i64 = 2 // human efficacy signal exists |
functions
| 68 | func dp_phase_name(p: i64) -> *u8 |
| 78 | func dp_phase_cost_k(p: i64) -> i64 |
| 87 | func dp_phase_months(p: i64) -> i64 |
| 96 | func dp_estimate_is_indicative(p: i64) -> i64 |
| 108 | func dp_site_name(s: i64) -> *u8 |
| 119 | func dp_authorisation_days(s: i64) -> i64 |
| 128 | func dp_cost_permil_of_us(s: i64) -> i64 called by 1: dp_phase_cost_at_site_k |
| 139 | func dp_rd_rebate_permil(s: i64) -> i64 called by 1: dp_phase_cost_at_site_k |
| 146 | func dp_phase_cost_at_site_k(p: i64, s: i64) -> i64 |
| 158 | func dp_cheapest_site(p: i64) -> i64 |
| 175 | func dp_full_cost_k() -> i64 calls 1: dp_phase_cost_k |
| 186 | func dp_full_months() -> i64 calls 1: dp_phase_months |
| 207 | func dp_reliance_available(prior: i64) -> i64 called by 1: gtm_pathway_programme |
| 215 | func dp_phase_required(p: i64, prior: i64) -> i64 |
| 225 | func dp_programme_cost_k(prior: i64) -> i64 |
| 239 | func dp_programme_months(prior: i64) -> i64 |
| 254 | func dp_reliance_saving_k(prior: i64) -> i64 |
| 265 | func dp_dtc_without_approval_anywhere() -> i64 |
| 270 | func dp_foreign_approval_licenses_export() -> i64 |
| 277 | func dp_research_use_label_changes_status() -> i64 |