HormoneTrack-web/js/pk/presets.js
Siphonight 624e047f39 v1.9.4 (web) : presets ESE étendus (EC/EB/EUCS) + i18n — miroir Android
Le modèle ESE analytique (v1.9.0) couvre 6 esters injectables : presets
ajoutés pour EC (huile), EB et EUCS (undécylate suspension cristalline,
exclusif à ce fit) — les champs Bateman reflètent les t½ terminales des
fits (informatifs). Miroir de PKPresets.kt Android.
2026-09-19 22:59:28 +02:00

87 lines
6.0 KiB
JavaScript

/**
* ─────────────────────────────────────────────────────────────────────────────
* 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),
// --- v1.9.4 : le modèle ESE est ANALYTIQUE (estrannaise.js) et couvre
// 6 esters injectables — presets ajoutés pour EC (huile), EB et EUCS
// (undécylate suspension cristalline, exclusif à ce fit). Champs
// Bateman = t½ terminales des fits (pas utilisés au calcul).
new PKPreset('preset_ec_ese', 'ESTRADIOL', 'INJECTION_IM', Esters.EC, PKModels.ESTRANNAISE, 7, 202, 1, 'mg', 5.0),
new PKPreset('preset_eb_ese', 'ESTRADIOL', 'INJECTION_IM', Esters.EB, PKModels.ESTRANNAISE, 1, 4, 1, 'mg', 1.0),
new PKPreset('preset_eucs_ese', 'ESTRADIOL', 'INJECTION_SUBCUT', Esters.EUCS, PKModels.ESTRANNAISE, 22, 756, 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),
];