nx_supp_claims.nx
buildroot/runtime/nx_supp_claims.nx
about
nx_supp_claims.nx -- SUPPLEMENT GTM SUITE / LABEL CLAIMS rung. Classifies a
marketing sentence as a lawful structure/function claim or an unlawful
disease claim, because that line is where supplement companies actually get
warning letters -- more often than for the formula itself.
THE LAW IN ONE SENTENCE. A supplement may say what an ingredient does to
the normal structure or function of the body. The moment it says the
product diagnoses, mitigates, treats, cures or prevents a DISEASE, it is
making a drug claim, and an unapproved drug claim makes the product an
unapproved drug -- 21 CFR 101.93(g) sets out the criteria this implements.
THE PAIRS THAT MATTER, and they are closer than they look:
LAWFUL "helps maintain healthy cholesterol levels already in normal range"
UNLAWFUL "lowers cholesterol" (implies treating hypercholesterolemia)
LAWFUL "supports healthy sexual function"
UNLAWFUL "treats female sexual arousal disorder"
UNLAWFUL "works alongside your antidepressant to fix SSRI side effects"
-- this one is doubly bad: it is a disease claim AND an
AUGMENTS-A-THERAPY claim under 101.93(g)(2)(viii).
THAT LAST CASE IS WORTH SAYING PLAINLY: the framing "famously used to treat
antidepressant-induced sexual dysfunction", which is how ginkgo is usually
described in this category, CANNOT go on a label. The underlying research
may be perfectly real -- the sentence is still a drug claim.
NATURAL STATES ARE NOT DISEASES. FDA is explicit that menopause, pregnancy,
aging and adolescence are normal life stages, so "for the relief of hot
flashes associated with menopause" is a lawful structure/function claim
while "for the treatment of osteoporosis" is not. A classifier that
flagged "menopause" as a disease term would be wrong in a way that costs
real, lawful marketing -- so the lexicon carves them out explicitly.
FAIL-CLOSED, AND DELIBERATELY SO. A sentence with no disease trigger but
also no recognisable structure/function frame returns NEEDS_REVIEW, not OK.
This organ can retire the easy calls; it cannot replace counsel, and
pretending otherwise would be the expensive kind of wrong.
Grounding (cited; researcher-groundable):
fda_21cfr101_93_structure_function_vs_disease_claims
fda_21cfr101_93_g_2_disease_claim_criteria
dependencies 1 imports · 1 importers
imports: nx_syscalls.nx
imported by: nx_gtm_svc.nx
structs
| none |
consts
| 50 | const CL_NEEDS_REVIEW: i64 = 0 // no trigger, no clear S/F frame |
| 51 | const CL_STRUCTURE_FUNC: i64 = 1 // lawful, with disclaimer + notification |
| 52 | const CL_DISEASE_CLAIM: i64 = 2 // unlawful without drug approval |
| 53 | const CL_DRUG_REFERENCE: i64 = 3 // substitutes for / augments a therapy |
| 54 | const CL_EMPTY: i64 = 4 |
| 57 | const CL_DISCLAIMER_REQUIRED: i64 = 1 |
| 58 | const CL_NOTIFY_FDA_DAYS: i64 = 30 |
functions
| 62 | func cl_lower(c: i64) -> i64 called by 1: cl_find |
| 67 | func cl_len(s: *u8) -> i64 |
| 75 | func cl_find(hay: *u8, needle: *u8) -> i64 |
| 100 | func cl_has(hay: *u8, needle: *u8) -> i64 |
| 112 | func cl_has_disease_verb(s: *u8) -> i64 |
| 126 | func cl_has_disease_noun(s: *u8) -> i64 |
| 140 | func cl_has_drug_reference(s: *u8) -> i64 |
| 156 | func cl_has_sf_frame(s: *u8) -> i64 |
| 168 | func cl_has_natural_state(s: *u8) -> i64 |
| 182 | func cl_classify(s: *u8) -> i64 |
| 203 | func cl_is_lawful(s: *u8) -> i64 |
| 211 | func cl_requires_disclaimer(s: *u8) -> i64 |
| 217 | func cl_notification_days(s: *u8) -> i64 |