/** * ───────────────────────────────────────────────────────────────────────────── * Presets de traitements (portage de `data/model/PKPresets.kt`) : pré-remplis * dans l'éditeur. Les champs Bateman des presets à PROFIL PK reflètent les * Tmax/t½ des modèles (affichés dans l'éditeur, non utilisés au calcul — le * dispatch passe par les profils/tables). * * Les libellés passent par des clés i18n (presets.fr.js / presets.en.js via * util/i18n.js) — mêmes textes que les strings Android pour la cohérence des * deux apps. * ───────────────────────────────────────────────────────────────────────────── */ import { Esters, PKModels } from './pk-engine.js'; /** * Un preset (miroir de PKPreset.kt). */ export class PKPreset { /** * @param {string} nameKey Clé i18n du libellé ("preset_ev_ese"…) * @param {string} type TreatmentType * @param {string} route AdministrationRoute * @param {string} esterType Clé ester ("EV"…, "NONE" pour Bateman) * @param {string} pkModel "ESE" | "TFS" | "WHS" * @param {number} absorptionHours Tmax (h, Bateman) * @param {number} eliminationHalfLifeHours t½ (h, Bateman) * @param {number} bioavailabilityFraction F (0..1, Bateman) * @param {string} defaultDoseUnit * @param {number} defaultDoseAmount */ constructor(nameKey, type, route, esterType, pkModel, absorptionHours, eliminationHalfLifeHours, bioavailabilityFraction, defaultDoseUnit, defaultDoseAmount) { this.nameKey = nameKey; this.type = type; this.route = route; this.esterType = esterType; this.pkModel = pkModel; this.absorptionHours = absorptionHours; this.eliminationHalfLifeHours = eliminationHalfLifeHours; this.bioavailabilityFraction = bioavailabilityFraction; this.defaultDoseUnit = defaultDoseUnit; this.defaultDoseAmount = defaultDoseAmount; } } /** Tous les presets, dans l'ordre de l'éditeur (identique au Kotlin). */ export const all = [ // --- Injections : modèles Estrannaise (tables ODS) --- new PKPreset('preset_ev_ese', 'ESTRADIOL', 'INJECTION_IM', Esters.EV, PKModels.ESTRANNAISE, 46, 100, 1, 'mg', 4.0), new PKPreset('preset_eu_ese', 'ESTRADIOL', 'INJECTION_IM', Esters.EU, PKModels.ESTRANNAISE, 55, 400, 1, 'mg', 10.0), new PKPreset('preset_een_ese', 'ESTRADIOL', 'INJECTION_SUBCUT', Esters.EEN, PKModels.ESTRANNAISE, 152, 150, 1, 'mg', 10.0), // --- Injections : modèles Transfem Science --- new PKPreset('preset_ev_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.EV, PKModels.TRANSFEM_SCIENCE, 50, 72, 1, 'mg', 4.0), new PKPreset('preset_eu_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.EU, PKModels.TRANSFEM_SCIENCE, 204, 528, 1, 'mg', 10.0), new PKPreset('preset_een_tfs', 'ESTRADIOL', 'INJECTION_SUBCUT', Esters.EEN, PKModels.TRANSFEM_SCIENCE, 156, 110, 1, 'mg', 5.0), // --- Nouveaux esters de la méta-analyse TFS (v1.4.0, modèle V3C) : // EB / EC (huile) / EC suspension / PEP — PAS de tables Estrannaise // pour ces clés : presets créés en modèle TFS uniquement. new PKPreset('preset_eb_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.EB, PKModels.TRANSFEM_SCIENCE, 16, 29, 1, 'mg', 1.0), new PKPreset('preset_ec_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.EC, PKModels.TRANSFEM_SCIENCE, 103, 161, 1, 'mg', 5.0), new PKPreset('preset_ecs_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.ECS, PKModels.TRANSFEM_SCIENCE, 30, 122, 1, 'mg', 5.0), new PKPreset('preset_pep_tfs', 'ESTRADIOL', 'INJECTION_IM', Esters.PEP, PKModels.TRANSFEM_SCIENCE, 432, 682, 1, 'mg', 32.5), // --- Modèle WHSAH (v1.4.6, fit license-free de Mona) : 6 esters, PEP non // couvert. Champs Bateman = t½ WHSAH (pas utilisés au calcul). new PKPreset('preset_ev_whs', 'ESTRADIOL', 'INJECTION_IM', Esters.EV, PKModels.WHSAH, 41, 75, 1, 'mg', 4.0), new PKPreset('preset_eu_whs', 'ESTRADIOL', 'INJECTION_IM', Esters.EU, PKModels.WHSAH, 80, 722, 1, 'mg', 10.0), new PKPreset('preset_een_whs', 'ESTRADIOL', 'INJECTION_SUBCUT', Esters.EEN, PKModels.WHSAH, 120, 176, 1, 'mg', 5.0), new PKPreset('preset_eb_whs', 'ESTRADIOL', 'INJECTION_IM', Esters.EB, PKModels.WHSAH, 13, 25, 1, 'mg', 1.0), new PKPreset('preset_ec_whs', 'ESTRADIOL', 'INJECTION_IM', Esters.EC, PKModels.WHSAH, 91, 161, 1, 'mg', 5.0), new PKPreset('preset_ecs_whs', 'ESTRADIOL', 'INJECTION_IM', Esters.ECS, PKModels.WHSAH, 60, 110, 1, 'mg', 5.0), // --- Transdermique / oral (fallback Bateman) --- new PKPreset('preset_e2_gel', 'ESTRADIOL', 'TRANSDERMAL_GEL', Esters.NONE, PKModels.ESTRANNAISE, 4, 24, 0.8, 'mg', 2.0), new PKPreset('preset_e2_patch', 'ESTRADIOL', 'TRANSDERMAL_PATCH', Esters.NONE, PKModels.ESTRANNAISE, 8, 24, 0.9, 'mg/day', 0.1), new PKPreset('preset_e2_oral', 'ESTRADIOL', 'ORAL', Esters.NONE, PKModels.ESTRANNAISE, 1.5, 16, 0.4, 'mg', 2.0), // --- Anti-androgènes (Bateman) --- new PKPreset('preset_cpa', 'ANTI_ANDROGEN', 'ORAL', Esters.NONE, PKModels.ESTRANNAISE, 2, 30, 0.8, 'mg', 10.0), new PKPreset('preset_spiro', 'ANTI_ANDROGEN', 'ORAL', Esters.NONE, PKModels.ESTRANNAISE, 1.5, 8, 0.7, 'mg', 100.0), new PKPreset('preset_bica', 'ANTI_ANDROGEN', 'ORAL', Esters.NONE, PKModels.ESTRANNAISE, 3, 168, 0.9, 'mg', 50.0), ];