Skip to content

ICH Guidelines Reference

This reference explains which guideline family is relevant to a MolTrace review and what the user should do with the threshold result.

  • Q3A(R2): organic impurities in new drug substances
  • Q3B(R2): impurities in new drug products
  • Q3C: residual solvents
  • Q3D: elemental impurities
  • M7(R2): mutagenic impurities
  • Q2(R2) and Q14: analytical validation and development

Guideline tables and jurisdiction-specific language require regulatory-owner review before production publication.

Do not invent threshold numbers. For each guideline page, the regulatory owner must:

  1. Download the current official guideline from ICH or the relevant agency site.
  2. Extract the threshold table and page reference.
  3. Record the effective date and document version.
  4. Compare FDA, EMA, PMDA, and Health Canada interpretations where they differ.
  5. Add a reviewer note explaining any MolTrace-specific implementation choice.
GuidelineContextThreshold typeValueSource pageReviewer
Q3A(R2)New drug substance impurityReportingTBD after source verificationTBDRegulatory owner
Q3A(R2)New drug substance impurityIdentificationTBD after source verificationTBDRegulatory owner
Q3A(R2)New drug substance impurityQualificationTBD after source verificationTBDRegulatory owner
Q3CResidual solventClass-specific limitTBD after source verificationTBDRegulatory owner
M7(R2)Mutagenic impurityAcceptable intake or control classTBD after source verificationTBDRegulatory owner

Each jurisdiction note should answer:

  • Does the agency use the ICH text directly or add local implementation guidance?
  • Which submission sections or forms are affected?
  • Are nitrosamine or mutagenic impurity expectations updated by separate guidance?
  • What evidence does MolTrace show to justify the threshold used?

The published page must show the official source citation next to every numeric threshold.


The Regentry backend implements the ICH impurity guidelines as deterministic, version-pinned calculators — no model is ever in the numeric path. Each engine encodes the published ICH criteria (transcribed from the official tables and cited on every result) and returns a content-hashed rule_set_version, so a threshold is auditable and reproducible. Every value is decision-support: it must be verified against the official ICH source and signed off by a qualified reviewer before any filing use. The release timeline gives chronological context.

  • calculate_q3ab_thresholds(daily_dose_g, substance_type, route) computes the reporting, identification, and qualification thresholds for drug substances (Q3A) and drug products (Q3B) from the maximum daily dose. It resolves each ICH ”% or absolute, whichever is lower” rule to a single effective % for the dose (converting a µg/day or mg/day total-daily-intake cap to a percentage), flags which limit binds, and returns the dose band, regulatory basis, and table reference per value. The canonical multi-band Q3B tables (with µg-TDI caps) and Q3A >2 g qualification at 0.05% are encoded exactly. (v0.22.1, 2026-06-08)
  • classify_solvent(...) resolves a solvent by name, CAS, or SMILES and assigns it to Q3C(R8) Class 1 (avoid), Class 2 (limit by permitted daily exposure), or Class 3 (low toxic potential), returning the systemic PDE, the Option-1 concentration limit (ppm), recommended analytical methods, and the basis / table reference. check_residual_solvent_limits(...) checks measured residual levels against the dose-scaled permitted limit (Option 2 for Class 2/3; the fixed Option-1 limit for Class 1) and returns pass / fail with a signed margin. A curated subset of Appendices 1–3 (all 5 Class 1, 18 common Class 2, 21 representative Class 3 = 44 solvents) is encoded; an unknown solvent returns an explicit matched=false, never a guessed limit. (v0.22.2, 2026-06-08)
  • get_element_pde(element, route) returns the Q3D(R2) permitted daily exposure (PDE) for an elemental impurity by administration route, with its class and the 30%-of-PDE control threshold; calculate_concentration_limit(...) gives the permitted product concentration at a daily dose (Option 1: PDE ÷ max daily dose); and risk_assessment_report(...) produces a class-driven Q3D risk assessment over a product’s components and manufacturing equipment (Class 1 & 2A always assessed; 2B on intentional addition or equipment sourcing; 3 route-dependent). The oral / parenteral / inhalation PDEs (Table A.2.1, all 24 elements) are encoded; cutaneous / transcutaneous routes return an explicit “not encoded” (route_data_available=false), never a guessed PDE. (v0.22.3, 2026-06-08)
  • classify_m7(...) assesses a potential impurity under ICH M7(R2) using the five-class scheme of Mueller et al. (2006): a DNA-reactive structural-alert screen plus the dual-(Q)SAR rule, with experimental data overriding in-silico predictions, Cohort-of-Concern (CoC) handling, and the staged less-than-lifetime threshold of toxicological concern (TTC). It returns the class (1–5), the TTC or a compound-specific-AI flag, the in-silico concordance, the CoC flag, an expert-review flag, and a narrative for CTD Section 3.2.S.3.2. The decision logic (class assignment, dual-(Q)SAR rule, CoC handling, staged-TTC math) is pure and content-versioned — no model in the path; the only model-like component is the expert rule-based structural-alert SMARTS screen (a rule engine, not an LLM), used as a per-system default only when a formal (Q)SAR result is not supplied. Class 4 (alert shared with the drug substance) needs drug-substance context and is not auto-assigned; the curated alert set must be verified against the official M7(R2) guideline and qualified expert review before any filing use. (v0.22.4, 2026-06-08)

FDA CPCA nitrosamine potency (the M7 Cohort-of-Concern path)

Section titled “FDA CPCA nitrosamine potency (the M7 Cohort-of-Concern path)”
  • classify_cpca(smiles, authority='FDA'|'EMA') implements the canonical FDA Carcinogenic Potency Categorization Approach (CPCA) — a deterministic structure-activity flowchart that scores an N-nitrosamine’s carcinogenic potency and assigns one of five potency categories, each with a recommended acceptable-intake (AI) limit. It derives the compound-specific AI that ICH M7 defers to for Cohort-of-Concern nitrosamines. The α-hydrogen scoring table, the 16 feature point-values, the flowchart, and the AI ladder (Category 1 = FDA 26.5 / EMA 18, then 100 / 400 / 1500 / 1500 ng/day) are transcribed verbatim from the FDA’s open-source featurize-nitrosamines reference tool and the Aug-2023 NDSRI guidance; RDKit recognizes structure only. calculate_cumulative_risk(...) applies the FDA Rev-2 cumulative rule (sum(measured / AI) < 1). Every result is decision-support requiring qualified toxicologist / regulatory-affairs sign-off, never a regulatory determination. (v0.23.0, 2026-06-09)

A chronological summary; see each subsection above for substantive detail.

VersionDateHeadline
v0.23.02026-06-09FDA CPCA nitrosamine potency classifier (M7 CoC path)
v0.22.42026-06-08ICH M7(R2) mutagenic-impurity classifier
v0.22.32026-06-08ICH Q3D(R2) elemental-impurity engine
v0.22.22026-06-08ICH Q3C(R8) residual-solvent classifier
v0.22.12026-06-08ICH Q3A/B impurity threshold calculator