THE IDEAS BEHIND THE NUMBERS
Explore the science
The data, calculations and their limits.
THE CONNECTIONS AT A GLANCE
Select an item to read its direct connections.
Loading the map…
Keyboard: arrows to browse, Enter to open.
Other documented items
These items are documented without a connection shown in this version of the map. This does not mean they are unused in Nutrikom.
Colours distinguish categories. Item size and position do not indicate the strength of evidence. Only direct links are highlighted.
Choose an item or connection
Through the data and sources
All connections · meaning and sources
No results. Try another word.
About this exploration
Frozen corpus · 14 October 2026
Descriptive composition · no personal prediction
Reference version: 14 October 2026
The map is unavailable. Complete reading remains below.
Liste complète, sans JavaScript
Les fiches et les sources restent consultables même si la carte ne peut pas se charger.
30 objets · 22 liens · 7 types
Fibres
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Fibres
g par portion ; présence ≠ définition analytique vérifiée
nut-fiber · r1 · champ fiber / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L27–27 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['fiber','g','Fibre','Fibres']
['fiber','g','Fibre','Fibres']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'fiber'=>'g'
'fiber'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Graisses saturées
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Graisses saturées
g par portion ; présence ≠ définition analytique vérifiée
nut-saturated_fat · r1 · champ saturated_fat / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L27–27 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['saturated_fat','g','Saturated fat','Graisses saturées']
['saturated_fat','g','Saturated fat','Graisses saturées']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'saturated_fat'=>'g'
'saturated_fat'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Sodium
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en milligrammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Sodium
mg par portion ; présence ≠ définition analytique vérifiée
nut-sodium · r1 · champ sodium / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L28–28 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['sodium','mg','Sodium','Sodium']
['sodium','mg','Sodium','Sodium']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'sodium'=>'mg'
'sodium'=>'mg'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Sucres totaux
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Sucres totaux
g par portion ; présence ≠ définition analytique vérifiée
nut-sugar · r1 · champ sugar / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L28–28 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['sugar','g','Total sugars','Sucres totaux']
['sugar','g','Total sugars','Sucres totaux']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'sugar'=>'g'
'sugar'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Protéines
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Répartition 4/4/9 utilise Protéines — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Protéines
g par portion ; présence ≠ définition analytique vérifiée
nut-protein · r1 · champ protein / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L25–25 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['protein','g','Protein','Protéines']
['protein','g','Protein','Protéines']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'protein'=>'g'
'protein'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Glucides déclarés
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Glucides déclarés, sans qualification automatique des glucides disponibles ou de la réponse glycémique.
Liens avec d’autres éléments
- Répartition 4/4/9 utilise Glucides déclarés — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Glucides déclarés
g par portion ; présence ≠ définition analytique vérifiée
nut-carbohydrate · r1 · champ carbohydrate / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L26–26 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['carbohydrate','g','Carbohydrate','Glucides']
['carbohydrate','g','Carbohydrate','Glucides']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'carbohydrate'=>'g'
'carbohydrate'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Lipides totaux
Nutriment
À quoi ça sert dans Nutrikom
Quantité indiquée par la source pour cette portion, en grammes. La présence d’une valeur ne garantit pas que sa définition a été vérifiée.
Limite essentielle
Une valeur renseignée n’est pas une mesure personnelle. L’absence ne signifie pas zéro.
Liens avec d’autres éléments
- Répartition 4/4/9 utilise Lipides totaux — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Lipides totaux
g par portion ; présence ≠ définition analytique vérifiée
nut-fat · r1 · champ fat / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L26–26 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['fat','g','Total fat','Graisses totales']
['fat','g','Total fat','Graisses totales']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'fat'=>'g'
'fat'=>'g'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Énergie déclarée
Mesure déclarée
À quoi ça sert dans Nutrikom
Énergie indiquée par la source pour la portion. Elle est distincte du total calculé avec la convention 4/4/9.
Limite essentielle
La portion et la base de source définissent le calcul ; elles ne prouvent pas la consommation réelle.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Énergie déclarée
Énergie source, distincte du total conventionnel 4/4/9
measure-energy · r1 · calories / kcal
plugin/assets/js/product-v3/app.js · L25–25 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['calories','kcal','Energy','Énergie']
['calories','kcal','Energy','Énergie']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'calories'=>'kcal'
'calories'=>'kcal'
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Portion et base
Mesure déclarée
À quoi ça sert dans Nutrikom
La quantité saisie multiplie une portion de référence. Une quantité en grammes nécessite une masse explicitement renseignée.
Limite essentielle
La portion et la base de source définissent le calcul ; elles ne prouvent pas la consommation réelle.
Liens avec d’autres éléments
- Calcul par portion utilise Portion et base — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Portion et base
Multiplicateur de portion ; g uniquement depuis masse explicite
measure-portion · r1 · serving / quantity / grams
plugin/assets/js/product-alpha-v12/composer-state.js · L441–479 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function withCalculatedNutrients
function withCalculatedNutrients(entry) {
const factor = entry.quantity;
const nutrients = {};
for (const key of NUTRIENTS) {
const value = nullableFinite(entry.serving?.[key]);
nutrients[key] = value === null ? null : round1(value * factor);
}
return { ...entry, ...nutrients };
}
function finite(value) {
const number = Number(value);
return Number.isFinite(number) ? number : 0;
}
function nullableFinite(value) {
if (value === null || value === undefined || value === '') {
return null;
}
const number = Number(value);
return Number.isFinite(number) ? number : null;
}
function isFoodResult(item) {
return item !== null
&& typeof item === 'object'
&& foodResultId(item) !== ''
&& canonicalFoodNameForDedup(item.food_name) !== '';
}
function foodResultId(item) {
return String(item?.food_id ?? '').trim();
}
function foodResultKey(item) {
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Calcul par portion
Règle de calcul
À quoi ça sert dans Nutrikom
Multiplie les valeurs de référence par la quantité saisie, en conservant les arrondis appliqués à chaque aliment.
Limite essentielle
Règle descriptive ou technique ; elle ne valide pas une interprétation clinique.
Liens avec d’autres éléments
- Calcul par portion utilise Portion et base — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Total des apports utilise Calcul par portion — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Allocation de portion
multiplier valeurs de base par quantité, arrondi natif par item
rule-portion · r1 · withCalculatedNutrients
plugin/assets/js/product-alpha-v12/composer-state.js · L441–479 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function withCalculatedNutrients
function withCalculatedNutrients(entry) {
const factor = entry.quantity;
const nutrients = {};
for (const key of NUTRIENTS) {
const value = nullableFinite(entry.serving?.[key]);
nutrients[key] = value === null ? null : round1(value * factor);
}
return { ...entry, ...nutrients };
}
function finite(value) {
const number = Number(value);
return Number.isFinite(number) ? number : 0;
}
function nullableFinite(value) {
if (value === null || value === undefined || value === '') {
return null;
}
const number = Number(value);
return Number.isFinite(number) ? number : null;
}
function isFoodResult(item) {
return item !== null
&& typeof item === 'object'
&& foodResultId(item) !== ''
&& canonicalFoodNameForDedup(item.food_name) !== '';
}
function foodResultId(item) {
return String(item?.food_id ?? '').trim();
}
function foodResultKey(item) {
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Total des apports
Règle de calcul
À quoi ça sert dans Nutrikom
Additionne les valeurs nutritionnelles renseignées. Si certaines manquent, le total reste partiel : une valeur inconnue ne devient pas zéro.
Limite essentielle
Règle descriptive ou technique ; elle ne valide pas une interprétation clinique.
Liens avec d’autres éléments
- Total des apports utilise Calcul par portion — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Composition du repas utilise Total des apports — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Sommes nutritionnelles
somme des seules valeurs renseignées ; absence préservée
rule-aggregate · r1 · aggregateFoods / fromItems
plugin/assets/js/product-alpha-v12/composer-state.js · L207–247 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function aggregateFoods
function aggregateFoods(foods) {
const totals = {};
for (const key of NUTRIENTS) {
let sum = 0;
let present = false;
for (const food of foods) {
const value = nullableFinite(food[key]);
if (value !== null) {
sum += value;
present = true;
}
}
totals[key] = present ? round1(sum) : null;
}
return totals;
}
export function macroEnergySplit(foods) {
const selectedFoods = Array.isArray(foods) ? foods : [];
const unavailable = {
available: false,
neutral: false,
carbohydrate_g: null,
protein_g: null,
fat_g: null,
carbohydrate_kcal: null,
protein_kcal: null,
fat_kcal: null,
total_macro_kcal: null,
carbohydrate_percent: null,
protein_percent: null,
fat_percent: null,
};
if (selectedFoods.length === 0) {
return unavailable;
}
let carbohydrate = 0;
let protein = 0;
leHistorique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Données complètes ou manquantes
Règle de calcul
À quoi ça sert dans Nutrikom
Indique, pour chaque nutriment, si les données sont complètes, partielles ou absentes, et quels résultats peuvent être présentés.
Limite essentielle
Règle descriptive ou technique ; elle ne valide pas une interprétation clinique.
Liens avec d’autres éléments
- Part des aliments et ex æquo est conditionné par Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Repères d’étiquetage UE est conditionné par Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Composition du repas utilise Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Couverture et inconnus
complete/partial/unavailable par champ et admission par composante
rule-coverage · r1 · meal-coverage-v1
plugin/src/WordPress/AI/MealCoverage.php · L19–35 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
public static function fromItems
public static function fromItems(array $items): array
{
$rows = []; $total = count($items);
foreach (self::UNITS as $key => $unit) {
$sum = 0.0; $known = 0;
foreach ($items as $item) {
$value = $item['nutrients'][$key] ?? null;
if ($value === null) continue;
$sum += (float) $value; $known++;
}
$status = $known === 0 ? 'unavailable' : ($known === $total ? 'complete' : 'partial');
$rows[$key] = ['key'=>$key, 'value'=>$known ? round($sum, 1) : null,
'unit'=>$unit, 'status'=>$status, 'known_foods'=>$known, 'total_foods'=>$total,
'source'=>'client_submitted_food_entry', 'serving_basis'=>'selected_portions',
'reference_eligible'=>$status === 'complete' && in_array($key, self::REFERENCES, true)];
}
$missinHistorique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Répartition 4/4/9
Règle de calcul
À quoi ça sert dans Nutrikom
Présente une répartition illustrative de l’énergie entre glucides, protéines et lipides, selon la convention 4/4/9. Elle est distincte de l’énergie indiquée par la source.
Limite essentielle
Règle descriptive ou technique ; elle ne valide pas une interprétation clinique.
Liens avec d’autres éléments
- Répartition 4/4/9 utilise Glucides déclarés — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Répartition 4/4/9 utilise Protéines — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Répartition 4/4/9 utilise Lipides totaux — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Composition du repas utilise Répartition 4/4/9 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Répartition 4/4/9
illustration des macros, base séparée des kcal déclarées
rule-macro · r1 · macroEnergySplit
plugin/assets/js/product-alpha-v12/composer-state.js · L225–259 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function macroEnergySplit
function macroEnergySplit(foods) {
const selectedFoods = Array.isArray(foods) ? foods : [];
const unavailable = {
available: false,
neutral: false,
carbohydrate_g: null,
protein_g: null,
fat_g: null,
carbohydrate_kcal: null,
protein_kcal: null,
fat_kcal: null,
total_macro_kcal: null,
carbohydrate_percent: null,
protein_percent: null,
fat_percent: null,
};
if (selectedFoods.length === 0) {
return unavailable;
}
let carbohydrate = 0;
let protein = 0;
let fat = 0;
for (const food of selectedFoods) {
const values = [food?.carbohydrate, food?.protein, food?.fat].map(nullableFinite);
if (values.some((value) => value === null)) {
return unavailable;
}
carbohydrate += values[0];
protein += values[1];
fat += values[2];
}
const carbohydrateKcal = carbohydrate * 4;
const proteinKcal = proteinHistorique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Part des aliments et ex æquo
Règle de calcul
À quoi ça sert dans Nutrikom
Décrit la part des aliments dans les apports et signale les ex æquo, lorsque les données nécessaires sont complètes et les aliments identifiés. Les arrondis et le détail du calcul restent traçables.
Limite essentielle
Règle descriptive ou technique ; elle ne valide pas une interprétation clinique.
Liens avec d’autres éléments
- Part des aliments et ex æquo est conditionné par Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Comprendre ce repas utilise Part des aliments et ex æquo — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Contributions et égalités
classement conditionnel, identités de lignes, arrondi, traces et détail
rule-contribution · r1 · meal-reading-relations-v1
plugin/assets/js/product-v3/meal-relations.js · L13–24 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · d498f3819a2ddf87783584839c52c60de4f53703
export function projectRelations
export function projectRelations(foods, nutrients, angle = 'general') {
const identitiesValid = foods.every(food => (typeof food.id === 'string' && food.id.trim()) || Number.isInteger(food.id))
&& new Set(foods.map(food => String(food.id))).size === foods.length;
const states = {};
for (const [key,row] of Object.entries(nutrients)) {
const missing = identitiesValid ? foods.filter(food => !known(food[key])).map(food => String(food.id)) : [];
const zero = row.status === 'complete' && row.value === 0;
// Source zero is only asserted when the original serving values establish it.
const sourceZero = zero && foods.every(food => known(food.serving?.[key]) && food.serving[key] === 0);
states[key] = {status: row.status, value: row.value, unit: row.unit,
known_foods: row.known_foods, total_foods: row.total_foods, missing_ids: missing,
zero: zero ? sourceZeHistorique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Repères d’étiquetage UE
Règle de calcul
À quoi ça sert dans Nutrikom
Compare les apports aux repères d’étiquetage européens pour un adulte moyen, lorsque les données sont complètes. Pour le sel, convertit le sodium en mg en équivalent sel en g avec le facteur 0,0025.
Limite essentielle
Repère d’étiquetage pour adulte moyen, pas besoin personnel ni reste à consommer.
Liens avec d’autres éléments
- Repères d’étiquetage UE est conditionné par Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Repères d’étiquetage UE est documenté par Règlement UE 1169/2011 (version 2018) — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Repères d’étiquetage UE
pourcentage adulte général quand complet ; sodium ×0.0025 en g équivalent sel
rule-label · r1 · eu-1169-annex-xiii-2018-v1
plugin/src/WordPress/AI/MealReference.php · L28–44 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · e3c45f7cfbbbbbb09e686f9f978ee166b7f7fc8c
public static function fromItems
public static function fromItems(array $items): array
{
$rows = [];
foreach (self::REFERENCES as $key => [$label, $unit, $reference, $kind, $factor]) {
$known = 0; $sum = 0.0;
foreach ($items as $item) {
$value = $item['nutrients'][$key] ?? null;
if ($value === null) continue;
$known++; $sum += (float) $value;
}
$count = count($items);
$status = $known === 0 ? 'unavailable' : ($known === $count ? 'complete' : 'partial');
$amount = $known ? $sum * $factor : null;
$rows[] = ['key' => $key, 'label' => $label, 'unit' => $unit,
'amount' => $amount === null ? null : round($amount, 6),
'status' => $status, 'known_foods' => $known, 'total_foods' => $count,
'reference' => $reference, 'percent' => $stHistorique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Angle de lecture
Explication
À quoi ça sert dans Nutrikom
L’angle de lecture change la mise en avant, pas la composition du repas.
Limite essentielle
Explication générale, sans prédiction personnelle ni conseil thérapeutique.
Liens avec d’autres éléments
- Angle de lecture est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Angle de lecture
L’angle de lecture change la mise en avant, pas la composition du repas.
claim-general · r1 · general (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"general","fr":"L’angle de lecture change la mise en avant, pas la composition du repas.","en":"Reading focus changes the emphasis, not the meal’s composition.","source_report":"NHP01","source_pages_or_reference_id":"p. 24, approach A; Super Lead 6113633832 §1–3","allowed_scope":"Design behaviour of this local prototype only.","prohibited_inference":["Clinical validation","Personal score","Treatment benefit"],"required_data":[],"fallback_when_missing":"Keep the common composition and its unknown values."}
{"claim_id":"general","fr":"L’angle de lecture change la mise en avant, pas la composition du repas.","en":"Reading focus changes the emphasis, not the meal’s composition.","source_report":"NHP01","source_pages_or_reference_id":"p. 24, approach A; Super Lead 6113633832 §1–3","allowed_scope":"Design behaviour of this local prototype only.","prohibited_inference":["Clinical validation","Personal score","Treatment benefit"],"required_data":[],"fallback_when_missing":"Keep the common composition and its unknown values."}Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Sodium et tension
Explication
À quoi ça sert dans Nutrikom
Réduire le sodium au fil du temps peut aider à contrôler la tension.
Limite essentielle
Explication générale, sans prédiction personnelle ni conseil thérapeutique.
Liens avec d’autres éléments
- Comprendre ce repas utilise Sodium et tension — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Sodium et tension est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Sodium et tension
Réduire le sodium au fil du temps peut aider à contrôler la tension.
claim-sodium · r1 · sodium (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"sodium","fr":"Réduire le sodium au fil du temps peut aider à contrôler la tension.","en":"Reducing sodium over time can help manage blood pressure.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 sodium wording; p. 4; references [4] AHA/ACC 2025 and [34] DASH-Sodium","allowed_scope":"General pattern-level explanation; no inference about this meal’s physiological effect.","prohibited_inference":["Predicted blood-pressure change","Meal ceiling or remaining daily allowance","Potassium salt advice","Heart-failure or kidney treatment target"],"required_data":["snapshot.meal_coverage.nutrients.sodium.status == complete"],"fallback_when_missing":"Omit this general sentence; show the known subtotal/unknown and missing foods, without ranking."}
{"claim_id":"sodium","fr":"Réduire le sodium au fil du temps peut aider à contrôler la tension.","en":"Reducing sodium over time can help manage blood pressure.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 sodium wording; p. 4; references [4] AHA/ACC 2025 and [34] DASH-Sodium","allowed_scope":"General pattern-level explanation; no inference about this meal’s physiological effect.","prohibited_inference":["Predicted blood-pressure change","Meal ceiling or remaining daily allowance","Potassium salt advice","Heart-failure or kidney treatment target"],"required_data":["snapshot.meal_coverage.nutrients.sodium.status == complete"],"fallback_when_missing":"Omit this general sentence; show the known subtotal/unknown and missing foods, without ranking."}Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Substitution des graisses
Explication
À quoi ça sert dans Nutrikom
Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.
Limite essentielle
Explication générale, sans prédiction personnelle ni conseil thérapeutique.
Liens avec d’autres éléments
- Comprendre ce repas utilise Substitution des graisses — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Substitution des graisses est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Substitution des graisses
Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.
claim-fat · r1 · fat (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"fat","fr":"Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.","en":"Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 fat substitution wording; p. 4; reference [5] AHA/ACC 2023 chronic coronary disease guideline","allowed_scope":"General replacement concept over the diet; no food substitution prescribed for this meal.","prohibited_inference":["All fat is harmful","Meal-level myocardial infarction risk","Numerical LDL change","Fabricated savings","Personal treatment recommendation"],"required_data":["snapshot.meal_coverage.nutrients.saturated_fat.status == complete"],"fallback_when_missing":"Omit the general sentence; retain total fat and the known saturated-fat subtotal, without full-meal ranking."}
{"claim_id":"fat","fr":"Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.","en":"Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 fat substitution wording; p. 4; reference [5] AHA/ACC 2023 chronic coronary disease guideline","allowed_scope":"General replacement concept over the diet; no food substitution prescribed for this meal.","prohibited_inference":["All fat is harmful","Meal-level myocardial infarction risk","Numerical LDL change","Fabricated savings","Personal treatment recommendation"],"required_data":["snapshot.meal_coverage.nutrients.saturated_fat.status == complete"],"fallback_when_missing":"Omit the general sentence; retain total fat and the known saturated-fat subtotal, without full-meal ranking."}Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Limite glycémique
Explication
À quoi ça sert dans Nutrikom
La composition de ce repas ne prédit pas la réponse glycémique personnelle.
Limite essentielle
Explication générale, sans prédiction personnelle ni conseil thérapeutique.
Liens avec d’autres éléments
- Comprendre ce repas utilise Limite glycémique — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Limite glycémique est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Limite glycémique est documenté par Rapport GLY01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Limite glycémique
La composition de ce repas ne prédit pas la réponse glycémique personnelle.
claim-carb · r1 · carb (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"carb","fr":"La composition de ce repas ne prédit pas la réponse glycémique personnelle.","en":"This meal’s composition does not predict an individual blood glucose response.","source_report":"NHP01; GLY01","source_pages_or_reference_id":"NHP01 pp. 18, 23, 27–28; GLY01 research specification: prediction exclusions and carbohydrate-definition admission","allowed_scope":"Limitation of composition-only information; carbohydrate here is reported carbohydrate, not verified available carbohydrate.","prohibited_inference":["Measured or estimated GI/GL result","Glucose spike or curve","Insulin dose","Treatment change","Safe for diabetes","Fibre subtraction with unverified carbohydrate definition"],"required_data":[],"fallback_when_missing":"Retain this limitation when carbohydrate is partial or unavailable; name the missing data in the factual sentence."}
{"claim_id":"carb","fr":"La composition de ce repas ne prédit pas la réponse glycémique personnelle.","en":"This meal’s composition does not predict an individual blood glucose response.","source_report":"NHP01; GLY01","source_pages_or_reference_id":"NHP01 pp. 18, 23, 27–28; GLY01 research specification: prediction exclusions and carbohydrate-definition admission","allowed_scope":"Limitation of composition-only information; carbohydrate here is reported carbohydrate, not verified available carbohydrate.","prohibited_inference":["Measured or estimated GI/GL result","Glucose spike or curve","Insulin dose","Treatment change","Safe for diabetes","Fibre subtraction with unverified carbohydrate definition"],"required_data":[],"fallback_when_missing":"Retain this limitation when carbohydrate is partial or unavailable; name the missing data in the factual sentence."}Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Limite des besoins personnels
Explication
À quoi ça sert dans Nutrikom
Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.
Limite essentielle
Explication générale, sans prédiction personnelle ni conseil thérapeutique.
Liens avec d’autres éléments
- Comprendre ce repas utilise Limite des besoins personnels — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Limite des besoins personnels est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Limite des besoins personnels
Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.
claim-support · r1 · support (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}
{"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Composition du repas
Module
À quoi ça sert dans Nutrikom
Présente la composition du repas à partir de 15 champs nutritionnels : énergie, nutriments, répartition des macronutriments et disponibilité des données. Aucun score global n’est produit.
Limite essentielle
Le module décrit les données saisies ; il ne calcule pas une adéquation personnelle.
Liens avec d’autres éléments
- Composition du repas utilise Total des apports — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Composition du repas utilise Données complètes ou manquantes — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Composition du repas utilise Répartition 4/4/9 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Composition descriptive V3
interface actuelle ; 15 champs, kcal/macros/couverture, aucun score global produit
module-compose · r1 · 3.6.0
plugin/assets/js/product-v3/app.js · L54–57 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
function makeSnapshot
function makeSnapshot(foods){const totals=NativeComposer.aggregateFoods(foods),nutrients={};for(const [key,unit] of fields){const knownFoods=foods.filter(f=>typeof f[key]==='number'&&Number.isFinite(f[key])).length;nutrients[key]={key,unit,value:totals[key],status:knownFoods===0?'unavailable':knownFoods===foods.length?'complete':'partial',known_foods:knownFoods,total_foods:foods.length};}
const missing=fields.filter(([key])=>nutrients[key].status!=='complete').map(([key])=>key);
const conflict=foods.some(f=>f.calories===0&&[f.carbohydrate,f.protein,f.fat].some(v=>typeof v==='number'&&v>0));
return {totals,meal_coverage:{version:'meal-coverage-v1',nutrients,missing_scoring_nutrients:missing},application_completeness_disclosure:{optional_nutrients_missing:missing},score_status:conflict?'insufficient_energy_basis':missing.length?'insufficient_coverage':'insufficient_food_characteristics'Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Comprendre ce repas
Module
À quoi ça sert dans Nutrikom
Met en perspective le repas avec des angles de lecture, la part des aliments dans les apports et des explications limitées à ce que les données permettent. Ces explications sont produites localement, sans recherche documentaire à la demande.
Limite essentielle
Le module décrit les données saisies ; il ne calcule pas une adéquation personnelle.
Liens avec d’autres éléments
- Comprendre ce repas utilise Part des aliments et ex æquo — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Comprendre ce repas utilise Sodium et tension — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Comprendre ce repas utilise Substitution des graisses — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Comprendre ce repas utilise Limite glycémique — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Comprendre ce repas utilise Limite des besoins personnels — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Détails techniques
Comprendre ce repas (local)
angle, contributions et claims bornés ; pas RAG
module-explore · r1 · product-v3
plugin/assets/js/product-v3/app.js · L155–168 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
function renderFocus
function renderFocus() {
if (!view) return;
const {foods,snapshot}=view, r=k=>snapshot.meal_coverage.nutrients[k];
// Catalogue food/serving references are not unique meal-line identities.
// Bind this reading only to the current editor entries, without changing API foods.
view.readingFoods=foods.map((food,index)=>({...food,id:entries[index].id,
reading_source:entries[index].provider ? {kind:'catalogue'} : {kind:'manual',grams:entries[index].grams}}));
view.reading=projectRelations(view.readingFoods,snapshot.meal_coverage.nutrients,focus);
const reading=relationReading(view.reading,view.readingFoods,lang),sentences=reading.map(row=>row.text);
$('#context-title').textContent=T('readingTitle');
$('#context-title').hidden=sentences.length===0;
$('#context-angle').textContent=T(focus);
$('#meal-fact').textContent=sentences.join(' ');
$('#meal-fact').hidden=sentences.length===0;Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Ce que décrit un repas saisi
Concept
À quoi ça sert dans Nutrikom
Décrit les aliments et les portions saisis. Cette saisie ne prouve pas ce qui a été consommé et ne représente ni la journée complète, ni les habitudes, ni les besoins personnels.
Limite essentielle
Un repas saisi ne décrit ni la journée complète, ni les habitudes, ni les besoins personnels.
Liens avec d’autres éléments
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
Détails techniques
Repas saisi et portée
Saisie ≠ journée, habitudes, consommation attestée ou besoin personnel
concept-single-meal · r1 · single_meal
plugin/assets/js/product-v3/claims.js · L1–2 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
"claim_id":"support"
"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}];
Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Nutrition et contextes de santé
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Sodium et tension est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Substitution des graisses est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Limite glycémique est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Limite des besoins personnels est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
- Angle de lecture est documenté par Rapport NHP01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
NHP01 Nutrikom health profiles and therapeutic nutrition contract
Nutrition et contextes de santé · PDF ↗
Version du document
NHP01 · v1.0 · 2026-10-12
SHA256: 042249d3b296ad2b0055e3a9992deca3e47452ec214760e84e055ab08be2080b
Index glycémique et repas composés
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Limite glycémique est documenté par Rapport GLY01 — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
GLY01 Nutrikom glycemic index load and diabetes contract
Index glycémique et repas composés · PDF ↗
Version du document
GLY01 · v1.0 · 2026-10-12
SHA256: 11b0e9437d1c81b5af48fc80107c81b88b9d3f84df365b78e93bbc8a8afb9ad7
Construire et valider un score de repas
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
NKS01 Nutrikom Meal Score construct and validation
Construire et valider un score de repas · PDF ↗
Version du document
NKS01 · v1.0 · 2026-10-11
SHA256: 84ca9c535a9a700e0e7925d18324da8e15add883a405d538a955d18014b54473
Les limites d’un index nutritionnel
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
IDX01 Nutrikom Index construct and validation contract
Les limites d’un index nutritionnel · PDF ↗
Version du document
IDX01 · v1.0 · 2026-10-11
SHA256: 5b32b0ddf303e4fbeebd93b845e08a13595456a3f630e64d607868700898863a
Comprendre les repères nutritionnels
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
REF01 nutrient references and Nutrikom interpretation contract
Comprendre les repères nutritionnels · PDF ↗
Version du document
REF01 · v1.0 · 2026-10-11
SHA256: e88830c5502aefd60e8cc9e198862da181facc6a0798100782c593122871171d
Un repas, une journée, des habitudes
Source documentaire
À quoi ça sert dans Nutrikom
Synthèse de recherche utilisée pour concevoir Nutrikom. Consultez le rapport complet pour les méthodes, résultats et limites.
Limite essentielle
Synthèse documentaire reçue, pas un article primaire indépendant ni une validation du produit.
Où cette source est-elle citée ?
- Aucun lien n’est représenté pour cet élément dans cette version de la carte. Cela ne signifie pas qu’il est inutilisé dans Nutrikom.
Les sources
DAY01 dietary observation evidence and Nutrikom contract
Un repas, une journée, des habitudes · PDF ↗
Version du document
DAY01 · v1.0 · 2026-10-11
SHA256: 2522de0b8e0bb451d8a3d7cc80b5f247401e8579f265160ce4518ce101f5d0a3
Règlement UE 1169/2011 (version 2018)
Source documentaire
À quoi ça sert dans Nutrikom
Document cité pour les repères d’étiquetage de l’annexe XIII, destinés à un adulte moyen. Ces repères ne représentent pas un besoin personnel.
Limite essentielle
Un document cité ne valide pas tous les objets qui le citent.
Où cette source est-elle citée ?
- Repères d’étiquetage UE est documenté par Règlement UE 1169/2011 (version 2018) — Relation structurelle ou documentaire ; ne signifie pas validation clinique.
Les sources
Regulation (EU) No 1169/2011, consolidated expression 2018-01-01, Annex XIII
Détails techniques
Règlement UE 1169/2011 (version 2018)
citation source codée ; annexeXIII, adulte moyen, pas besoin personnel
ref-eu-label · r1 · eli/reg/2011/1169/2018-01-01/eng
Regulation (EU) No 1169/2011, consolidated expression 2018-01-01, Annex XIII
plugin/src/WordPress/AI/MealReference.php · L9–23 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · e3c45f7cfbbbbbb09e686f9f978ee166b7f7fc8c
public const SOURCE
public const SOURCE = 'https://eur-lex.europa.eu/eli/reg/2011/1169/2018-01-01/eng';
// [display name, unit, reference amount, kind, conversion from FatSecret units]
private const REFERENCES = [
'calories' => ['Energy', 'kcal', 2000.0, 'context', 1.0],
'fat' => ['Total fat', 'g', 70.0, 'context', 1.0],
'saturated_fat' => ['Saturated fat', 'g', 20.0, 'limit', 1.0],
'carbohydrate' => ['Carbohydrate', 'g', 260.0, 'context', 1.0],
'sugar' => ['Total sugars', 'g', 90.0, 'context', 1.0],
'protein' => ['Protein', 'g', 50.0, 'context', 1.0],
'sodium' => ['Salt equivalent', 'g', 6.0, 'limit', 0.0025],
'potassium' => ['Potassium', 'mg', 2000.0, 'context', 1.0],
'calcium' => ['Calcium', 'mg', 800.0, 'context', 1.0],
'iron' => ['Iron', 'mg', 14.0, 'context', 1.0],
'vitamin_c' => ['Vitamin C', 'mg', 80.0, Historique / changements
Révision r1, mapping adopté. Aucun changement ultérieur enregistré.
Complete list without JavaScript
You can still read the items and sources if the map cannot load.
30 objects · 22 links · 7 types
Fibre
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Fibre
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-fiber · r1 · champ fiber / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L27–27 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['fiber','g','Fibre','Fibres']
['fiber','g','Fibre','Fibres']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'fiber'=>'g'
'fiber'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Saturated fat
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Saturated fat
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-saturated_fat · r1 · champ saturated_fat / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L27–27 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['saturated_fat','g','Saturated fat','Graisses saturées']
['saturated_fat','g','Saturated fat','Graisses saturées']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'saturated_fat'=>'g'
'saturated_fat'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Sodium
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in milligrams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Sodium
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-sodium · r1 · champ sodium / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L28–28 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['sodium','mg','Sodium','Sodium']
['sodium','mg','Sodium','Sodium']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'sodium'=>'mg'
'sodium'=>'mg'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Total sugars
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Total sugars
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-sugar · r1 · champ sugar / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L28–28 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['sugar','g','Total sugars','Sucres totaux']
['sugar','g','Total sugars','Sucres totaux']
plugin/src/WordPress/AI/MealCoverage.php · L10–10 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'sugar'=>'g'
'sugar'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Protein
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- 4/4/9 macro split uses Protein — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Protein
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-protein · r1 · champ protein / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L25–25 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['protein','g','Protein','Protéines']
['protein','g','Protein','Protéines']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'protein'=>'g'
'protein'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Reported carbohydrate
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
Reported carbohydrate, not automatically verified available carbohydrate or glucose prediction.
Connections with other items
- 4/4/9 macro split uses Reported carbohydrate — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Reported carbohydrate
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-carbohydrate · r1 · champ carbohydrate / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L26–26 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['carbohydrate','g','Carbohydrate','Glucides']
['carbohydrate','g','Carbohydrate','Glucides']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'carbohydrate'=>'g'
'carbohydrate'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Total fat
Nutrient
How Nutrikom uses this
Amount reported by the source for this portion, in grams. A value being present does not guarantee that its definition has been verified.
Essential limitation
A reported value is not a personal measurement. Missing does not mean zero.
Connections with other items
- 4/4/9 macro split uses Total fat — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Total fat
Source-reported nutrient values for the selected portion; unit and definition remain distinct.
nut-fat · r1 · champ fat / meal-coverage-v1
plugin/assets/js/product-v3/app.js · L26–26 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['fat','g','Total fat','Graisses totales']
['fat','g','Total fat','Graisses totales']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'fat'=>'g'
'fat'=>'g'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Reported energy
Reported measure
How Nutrikom uses this
Energy reported by the source for the portion. It is separate from the total calculated using the 4/4/9 convention.
Essential limitation
The portion and source basis define the calculation, not actual consumption.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Reported energy
Energy reported by the source, separate from the illustrative 4/4/9 macro total.
measure-energy · r1 · calories / kcal
plugin/assets/js/product-v3/app.js · L25–25 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
['calories','kcal','Energy','Énergie']
['calories','kcal','Energy','Énergie']
plugin/src/WordPress/AI/MealCoverage.php · L9–9 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
'calories'=>'kcal'
'calories'=>'kcal'
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Portion and basis
Reported measure
How Nutrikom uses this
The entered quantity multiplies a reference portion. A quantity in grams requires an explicitly reported mass.
Essential limitation
The portion and source basis define the calculation, not actual consumption.
Connections with other items
- Portion calculation uses Portion and basis — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Portion and basis
A multiplier of a defined portion. Grams require an explicit mass basis.
measure-portion · r1 · serving / quantity / grams
plugin/assets/js/product-alpha-v12/composer-state.js · L441–479 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function withCalculatedNutrients
function withCalculatedNutrients(entry) {
const factor = entry.quantity;
const nutrients = {};
for (const key of NUTRIENTS) {
const value = nullableFinite(entry.serving?.[key]);
nutrients[key] = value === null ? null : round1(value * factor);
}
return { ...entry, ...nutrients };
}
function finite(value) {
const number = Number(value);
return Number.isFinite(number) ? number : 0;
}
function nullableFinite(value) {
if (value === null || value === undefined || value === '') {
return null;
}
const number = Number(value);
return Number.isFinite(number) ? number : null;
}
function isFoodResult(item) {
return item !== null
&& typeof item === 'object'
&& foodResultId(item) !== ''
&& canonicalFoodNameForDedup(item.food_name) !== '';
}
function foodResultId(item) {
return String(item?.food_id ?? '').trim();
}
function foodResultKey(item) {
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Portion calculation
Calculation rule
How Nutrikom uses this
Multiplies the reference values by the entered quantity, keeping the rounding applied to each food.
Essential limitation
A descriptive or technical rule, not clinical validation.
Connections with other items
- Portion calculation uses Portion and basis — Structural or documentary relation; does not imply clinical validation.
- Nutrient totals uses Portion calculation — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Portion allocation
Scale source values by the entered portion; retain the native rounding per item.
rule-portion · r1 · withCalculatedNutrients
plugin/assets/js/product-alpha-v12/composer-state.js · L441–479 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function withCalculatedNutrients
function withCalculatedNutrients(entry) {
const factor = entry.quantity;
const nutrients = {};
for (const key of NUTRIENTS) {
const value = nullableFinite(entry.serving?.[key]);
nutrients[key] = value === null ? null : round1(value * factor);
}
return { ...entry, ...nutrients };
}
function finite(value) {
const number = Number(value);
return Number.isFinite(number) ? number : 0;
}
function nullableFinite(value) {
if (value === null || value === undefined || value === '') {
return null;
}
const number = Number(value);
return Number.isFinite(number) ? number : null;
}
function isFoodResult(item) {
return item !== null
&& typeof item === 'object'
&& foodResultId(item) !== ''
&& canonicalFoodNameForDedup(item.food_name) !== '';
}
function foodResultId(item) {
return String(item?.food_id ?? '').trim();
}
function foodResultKey(item) {
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Nutrient totals
Calculation rule
How Nutrikom uses this
Adds the reported nutrient values. If some are missing, the total remains partial: an unknown value does not become zero.
Essential limitation
A descriptive or technical rule, not clinical validation.
Connections with other items
- Nutrient totals uses Portion calculation — Structural or documentary relation; does not imply clinical validation.
- Meal composition uses Nutrient totals — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Nutrient sums
Add available nutrient values. A subtotal with missing values remains partial.
rule-aggregate · r1 · aggregateFoods / fromItems
plugin/assets/js/product-alpha-v12/composer-state.js · L207–247 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function aggregateFoods
function aggregateFoods(foods) {
const totals = {};
for (const key of NUTRIENTS) {
let sum = 0;
let present = false;
for (const food of foods) {
const value = nullableFinite(food[key]);
if (value !== null) {
sum += value;
present = true;
}
}
totals[key] = present ? round1(sum) : null;
}
return totals;
}
export function macroEnergySplit(foods) {
const selectedFoods = Array.isArray(foods) ? foods : [];
const unavailable = {
available: false,
neutral: false,
carbohydrate_g: null,
protein_g: null,
fat_g: null,
carbohydrate_kcal: null,
protein_kcal: null,
fat_kcal: null,
total_macro_kcal: null,
carbohydrate_percent: null,
protein_percent: null,
fat_percent: null,
};
if (selectedFoods.length === 0) {
return unavailable;
}
let carbohydrate = 0;
let protein = 0;
leHistory / changes
Revision r1, adopted mapping. No subsequent change recorded.
Complete or missing data
Calculation rule
How Nutrikom uses this
Shows whether the data for each nutrient are complete, partial or missing, and which results can be displayed.
Essential limitation
A descriptive or technical rule, not clinical validation.
Connections with other items
- Food contributions and ties is bounded by Complete or missing data — Structural or documentary relation; does not imply clinical validation.
- EU label references is bounded by Complete or missing data — Structural or documentary relation; does not imply clinical validation.
- Meal composition uses Complete or missing data — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Coverage and unknowns
Identify complete, partial or unavailable fields; keep coverage separate from a result.
rule-coverage · r1 · meal-coverage-v1
plugin/src/WordPress/AI/MealCoverage.php · L19–35 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 7fae982e6415a829204836698cd02ec831256b57
public static function fromItems
public static function fromItems(array $items): array
{
$rows = []; $total = count($items);
foreach (self::UNITS as $key => $unit) {
$sum = 0.0; $known = 0;
foreach ($items as $item) {
$value = $item['nutrients'][$key] ?? null;
if ($value === null) continue;
$sum += (float) $value; $known++;
}
$status = $known === 0 ? 'unavailable' : ($known === $total ? 'complete' : 'partial');
$rows[$key] = ['key'=>$key, 'value'=>$known ? round($sum, 1) : null,
'unit'=>$unit, 'status'=>$status, 'known_foods'=>$known, 'total_foods'=>$total,
'source'=>'client_submitted_food_entry', 'serving_basis'=>'selected_portions',
'reference_eligible'=>$status === 'complete' && in_array($key, self::REFERENCES, true)];
}
$missinHistory / changes
Revision r1, adopted mapping. No subsequent change recorded.
4/4/9 macro split
Calculation rule
How Nutrikom uses this
Shows an illustrative energy split between carbohydrate, protein and fat using the 4/4/9 convention. It is separate from the energy reported by the source.
Essential limitation
A descriptive or technical rule, not clinical validation.
Connections with other items
- 4/4/9 macro split uses Reported carbohydrate — Structural or documentary relation; does not imply clinical validation.
- 4/4/9 macro split uses Protein — Structural or documentary relation; does not imply clinical validation.
- 4/4/9 macro split uses Total fat — Structural or documentary relation; does not imply clinical validation.
- Meal composition uses 4/4/9 macro split — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
4/4/9 macro split
An illustrative macro split based on 4/4/9, distinct from reported energy.
rule-macro · r1 · macroEnergySplit
plugin/assets/js/product-alpha-v12/composer-state.js · L225–259 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 784ea350a1e6c0422509255cc10b7f21bbea32c3
function macroEnergySplit
function macroEnergySplit(foods) {
const selectedFoods = Array.isArray(foods) ? foods : [];
const unavailable = {
available: false,
neutral: false,
carbohydrate_g: null,
protein_g: null,
fat_g: null,
carbohydrate_kcal: null,
protein_kcal: null,
fat_kcal: null,
total_macro_kcal: null,
carbohydrate_percent: null,
protein_percent: null,
fat_percent: null,
};
if (selectedFoods.length === 0) {
return unavailable;
}
let carbohydrate = 0;
let protein = 0;
let fat = 0;
for (const food of selectedFoods) {
const values = [food?.carbohydrate, food?.protein, food?.fat].map(nullableFinite);
if (values.some((value) => value === null)) {
return unavailable;
}
carbohydrate += values[0];
protein += values[1];
fat += values[2];
}
const carbohydrateKcal = carbohydrate * 4;
const proteinKcal = proteinHistory / changes
Revision r1, adopted mapping. No subsequent change recorded.
Food contributions and ties
Calculation rule
How Nutrikom uses this
Describes how foods contribute to nutrient amounts and identifies ties when the required data are complete and the foods are identified. Rounding and calculation details remain traceable.
Essential limitation
A descriptive or technical rule, not clinical validation.
Connections with other items
- Food contributions and ties is bounded by Complete or missing data — Structural or documentary relation; does not imply clinical validation.
- Understand this meal uses Food contributions and ties — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Contributions and ties
Describe contributions and ties only with the required complete data and identities.
rule-contribution · r1 · meal-reading-relations-v1
plugin/assets/js/product-v3/meal-relations.js · L13–24 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · d498f3819a2ddf87783584839c52c60de4f53703
export function projectRelations
export function projectRelations(foods, nutrients, angle = 'general') {
const identitiesValid = foods.every(food => (typeof food.id === 'string' && food.id.trim()) || Number.isInteger(food.id))
&& new Set(foods.map(food => String(food.id))).size === foods.length;
const states = {};
for (const [key,row] of Object.entries(nutrients)) {
const missing = identitiesValid ? foods.filter(food => !known(food[key])).map(food => String(food.id)) : [];
const zero = row.status === 'complete' && row.value === 0;
// Source zero is only asserted when the original serving values establish it.
const sourceZero = zero && foods.every(food => known(food.serving?.[key]) && food.serving[key] === 0);
states[key] = {status: row.status, value: row.value, unit: row.unit,
known_foods: row.known_foods, total_foods: row.total_foods, missing_ids: missing,
zero: zero ? sourceZeHistory / changes
Revision r1, adopted mapping. No subsequent change recorded.
EU label references
Calculation rule
How Nutrikom uses this
Compares nutrient amounts with EU label references for an average adult when the data are complete. For salt, converts sodium in mg to salt equivalent in g using the factor 0.0025.
Essential limitation
General adult label reference, not a personal need or remaining allowance.
Connections with other items
- EU label references is bounded by Complete or missing data — Structural or documentary relation; does not imply clinical validation.
- EU label references is documented by EU1169/2011 (2018 version) — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
EU label references
General adult EU label references when complete, including the sodium-to-salt-equivalent convention.
rule-label · r1 · eu-1169-annex-xiii-2018-v1
plugin/src/WordPress/AI/MealReference.php · L28–44 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · e3c45f7cfbbbbbb09e686f9f978ee166b7f7fc8c
public static function fromItems
public static function fromItems(array $items): array
{
$rows = [];
foreach (self::REFERENCES as $key => [$label, $unit, $reference, $kind, $factor]) {
$known = 0; $sum = 0.0;
foreach ($items as $item) {
$value = $item['nutrients'][$key] ?? null;
if ($value === null) continue;
$known++; $sum += (float) $value;
}
$count = count($items);
$status = $known === 0 ? 'unavailable' : ($known === $count ? 'complete' : 'partial');
$amount = $known ? $sum * $factor : null;
$rows[] = ['key' => $key, 'label' => $label, 'unit' => $unit,
'amount' => $amount === null ? null : round($amount, 6),
'status' => $status, 'known_foods' => $known, 'total_foods' => $count,
'reference' => $reference, 'percent' => $stHistory / changes
Revision r1, adopted mapping. No subsequent change recorded.
Reading focus
Explanation
How Nutrikom uses this
Reading focus changes the emphasis, not the meal’s composition.
Essential limitation
General explanation, without personal prediction or treatment advice.
Connections with other items
- Reading focus is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Reading focus
Reading focus changes the emphasis, not the meal’s composition.
claim-general · r1 · general (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"general","fr":"L’angle de lecture change la mise en avant, pas la composition du repas.","en":"Reading focus changes the emphasis, not the meal’s composition.","source_report":"NHP01","source_pages_or_reference_id":"p. 24, approach A; Super Lead 6113633832 §1–3","allowed_scope":"Design behaviour of this local prototype only.","prohibited_inference":["Clinical validation","Personal score","Treatment benefit"],"required_data":[],"fallback_when_missing":"Keep the common composition and its unknown values."}
{"claim_id":"general","fr":"L’angle de lecture change la mise en avant, pas la composition du repas.","en":"Reading focus changes the emphasis, not the meal’s composition.","source_report":"NHP01","source_pages_or_reference_id":"p. 24, approach A; Super Lead 6113633832 §1–3","allowed_scope":"Design behaviour of this local prototype only.","prohibited_inference":["Clinical validation","Personal score","Treatment benefit"],"required_data":[],"fallback_when_missing":"Keep the common composition and its unknown values."}History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Sodium and blood pressure
Explanation
How Nutrikom uses this
Reducing sodium over time can help manage blood pressure.
Essential limitation
General explanation, without personal prediction or treatment advice.
Connections with other items
- Understand this meal uses Sodium and blood pressure — Structural or documentary relation; does not imply clinical validation.
- Sodium and blood pressure is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Sodium and blood pressure
Reducing sodium over time can help manage blood pressure.
claim-sodium · r1 · sodium (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"sodium","fr":"Réduire le sodium au fil du temps peut aider à contrôler la tension.","en":"Reducing sodium over time can help manage blood pressure.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 sodium wording; p. 4; references [4] AHA/ACC 2025 and [34] DASH-Sodium","allowed_scope":"General pattern-level explanation; no inference about this meal’s physiological effect.","prohibited_inference":["Predicted blood-pressure change","Meal ceiling or remaining daily allowance","Potassium salt advice","Heart-failure or kidney treatment target"],"required_data":["snapshot.meal_coverage.nutrients.sodium.status == complete"],"fallback_when_missing":"Omit this general sentence; show the known subtotal/unknown and missing foods, without ranking."}
{"claim_id":"sodium","fr":"Réduire le sodium au fil du temps peut aider à contrôler la tension.","en":"Reducing sodium over time can help manage blood pressure.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 sodium wording; p. 4; references [4] AHA/ACC 2025 and [34] DASH-Sodium","allowed_scope":"General pattern-level explanation; no inference about this meal’s physiological effect.","prohibited_inference":["Predicted blood-pressure change","Meal ceiling or remaining daily allowance","Potassium salt advice","Heart-failure or kidney treatment target"],"required_data":["snapshot.meal_coverage.nutrients.sodium.status == complete"],"fallback_when_missing":"Omit this general sentence; show the known subtotal/unknown and missing foods, without ranking."}History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Fat substitution
Explanation
How Nutrikom uses this
Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.
Essential limitation
General explanation, without personal prediction or treatment advice.
Connections with other items
- Understand this meal uses Fat substitution — Structural or documentary relation; does not imply clinical validation.
- Fat substitution is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Fat substitution
Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.
claim-fat · r1 · fat (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"fat","fr":"Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.","en":"Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 fat substitution wording; p. 4; reference [5] AHA/ACC 2023 chronic coronary disease guideline","allowed_scope":"General replacement concept over the diet; no food substitution prescribed for this meal.","prohibited_inference":["All fat is harmful","Meal-level myocardial infarction risk","Numerical LDL change","Fabricated savings","Personal treatment recommendation"],"required_data":["snapshot.meal_coverage.nutrients.saturated_fat.status == complete"],"fallback_when_missing":"Omit the general sentence; retain total fat and the known saturated-fat subtotal, without full-meal ranking."}
{"claim_id":"fat","fr":"Remplacer certaines sources de graisses saturées par des aliments riches en graisses insaturées peut aider à contrôler le LDL-cholestérol.","en":"Replacing some saturated-fat sources with unsaturated-fat foods can support LDL cholesterol management.","source_report":"NHP01","source_pages_or_reference_id":"p. 27 fat substitution wording; p. 4; reference [5] AHA/ACC 2023 chronic coronary disease guideline","allowed_scope":"General replacement concept over the diet; no food substitution prescribed for this meal.","prohibited_inference":["All fat is harmful","Meal-level myocardial infarction risk","Numerical LDL change","Fabricated savings","Personal treatment recommendation"],"required_data":["snapshot.meal_coverage.nutrients.saturated_fat.status == complete"],"fallback_when_missing":"Omit the general sentence; retain total fat and the known saturated-fat subtotal, without full-meal ranking."}History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Glycemic limitation
Explanation
How Nutrikom uses this
This meal’s composition does not predict an individual blood glucose response.
Essential limitation
General explanation, without personal prediction or treatment advice.
Connections with other items
- Understand this meal uses Glycemic limitation — Structural or documentary relation; does not imply clinical validation.
- Glycemic limitation is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
- Glycemic limitation is documented by Report GLY01 — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Glycemic limitation
This meal’s composition does not predict an individual blood glucose response.
claim-carb · r1 · carb (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"carb","fr":"La composition de ce repas ne prédit pas la réponse glycémique personnelle.","en":"This meal’s composition does not predict an individual blood glucose response.","source_report":"NHP01; GLY01","source_pages_or_reference_id":"NHP01 pp. 18, 23, 27–28; GLY01 research specification: prediction exclusions and carbohydrate-definition admission","allowed_scope":"Limitation of composition-only information; carbohydrate here is reported carbohydrate, not verified available carbohydrate.","prohibited_inference":["Measured or estimated GI/GL result","Glucose spike or curve","Insulin dose","Treatment change","Safe for diabetes","Fibre subtraction with unverified carbohydrate definition"],"required_data":[],"fallback_when_missing":"Retain this limitation when carbohydrate is partial or unavailable; name the missing data in the factual sentence."}
{"claim_id":"carb","fr":"La composition de ce repas ne prédit pas la réponse glycémique personnelle.","en":"This meal’s composition does not predict an individual blood glucose response.","source_report":"NHP01; GLY01","source_pages_or_reference_id":"NHP01 pp. 18, 23, 27–28; GLY01 research specification: prediction exclusions and carbohydrate-definition admission","allowed_scope":"Limitation of composition-only information; carbohydrate here is reported carbohydrate, not verified available carbohydrate.","prohibited_inference":["Measured or estimated GI/GL result","Glucose spike or curve","Insulin dose","Treatment change","Safe for diabetes","Fibre subtraction with unverified carbohydrate definition"],"required_data":[],"fallback_when_missing":"Retain this limitation when carbohydrate is partial or unavailable; name the missing data in the factual sentence."}History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Personal adequacy limitation
Explanation
How Nutrikom uses this
This meal alone cannot establish whether personal energy and protein needs are met.
Essential limitation
General explanation, without personal prediction or treatment advice.
Connections with other items
- Understand this meal uses Personal adequacy limitation — Structural or documentary relation; does not imply clinical validation.
- Personal adequacy limitation is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Personal adequacy limitation
This meal alone cannot establish whether personal energy and protein needs are met.
claim-support · r1 · support (CLAIMS)
plugin/assets/js/product-v3/claims.js · L1–1 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
{"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}
{"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Meal composition
Module
How Nutrikom uses this
Displays the meal’s composition from 15 nutrient fields: energy, nutrients, macronutrient split and data availability. No overall score is produced.
Essential limitation
The module describes entered data, not personal adequacy.
Connections with other items
- Meal composition uses Nutrient totals — Structural or documentary relation; does not imply clinical validation.
- Meal composition uses Complete or missing data — Structural or documentary relation; does not imply clinical validation.
- Meal composition uses 4/4/9 macro split — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
V3 descriptive composition
The current descriptive composition interface: nutrients, macros and coverage, without a new global score.
module-compose · r1 · 3.6.0
plugin/assets/js/product-v3/app.js · L54–57 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
function makeSnapshot
function makeSnapshot(foods){const totals=NativeComposer.aggregateFoods(foods),nutrients={};for(const [key,unit] of fields){const knownFoods=foods.filter(f=>typeof f[key]==='number'&&Number.isFinite(f[key])).length;nutrients[key]={key,unit,value:totals[key],status:knownFoods===0?'unavailable':knownFoods===foods.length?'complete':'partial',known_foods:knownFoods,total_foods:foods.length};}
const missing=fields.filter(([key])=>nutrients[key].status!=='complete').map(([key])=>key);
const conflict=foods.some(f=>f.calories===0&&[f.carbohydrate,f.protein,f.fat].some(v=>typeof v==='number'&&v>0));
return {totals,meal_coverage:{version:'meal-coverage-v1',nutrients,missing_scoring_nutrients:missing},application_completeness_disclosure:{optional_nutrients_missing:missing},score_status:conflict?'insufficient_energy_basis':missing.length?'insufficient_coverage':'insufficient_food_characteristics'History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Understand this meal
Module
How Nutrikom uses this
Puts the meal in context through reading angles, food contributions and explanations limited to what the data support. These explanations are produced locally, without on-demand document retrieval.
Essential limitation
The module describes entered data, not personal adequacy.
Connections with other items
- Understand this meal uses Food contributions and ties — Structural or documentary relation; does not imply clinical validation.
- Understand this meal uses Sodium and blood pressure — Structural or documentary relation; does not imply clinical validation.
- Understand this meal uses Fat substitution — Structural or documentary relation; does not imply clinical validation.
- Understand this meal uses Glycemic limitation — Structural or documentary relation; does not imply clinical validation.
- Understand this meal uses Personal adequacy limitation — Structural or documentary relation; does not imply clinical validation.
The sources
Technical details
Understand this meal (local)
Local reading angles, contributions and bounded explanations; no RAG.
module-explore · r1 · product-v3
plugin/assets/js/product-v3/app.js · L155–168 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · 8a386ac783cd97c46c7b6ddc08b4e834f60d3397
function renderFocus
function renderFocus() {
if (!view) return;
const {foods,snapshot}=view, r=k=>snapshot.meal_coverage.nutrients[k];
// Catalogue food/serving references are not unique meal-line identities.
// Bind this reading only to the current editor entries, without changing API foods.
view.readingFoods=foods.map((food,index)=>({...food,id:entries[index].id,
reading_source:entries[index].provider ? {kind:'catalogue'} : {kind:'manual',grams:entries[index].grams}}));
view.reading=projectRelations(view.readingFoods,snapshot.meal_coverage.nutrients,focus);
const reading=relationReading(view.reading,view.readingFoods,lang),sentences=reading.map(row=>row.text);
$('#context-title').textContent=T('readingTitle');
$('#context-title').hidden=sentences.length===0;
$('#context-angle').textContent=T(focus);
$('#meal-fact').textContent=sentences.join(' ');
$('#meal-fact').hidden=sentences.length===0;History / changes
Revision r1, adopted mapping. No subsequent change recorded.
What an entered meal describes
Concept
How Nutrikom uses this
Describes the entered foods and portions. This entry does not prove what was consumed and does not represent a full day, eating habits or personal requirements.
Essential limitation
One entered meal cannot establish daily intake, habits or personal requirements.
Connections with other items
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
Technical details
Entered meal and scope
The entered foods and portions define the scope of every explanation.
concept-single-meal · r1 · single_meal
plugin/assets/js/product-v3/claims.js · L1–2 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · cd2db21caf40684f2d109d738e0d1d88aab9b28f
"claim_id":"support"
"claim_id":"support","fr":"Ce repas seul ne permet pas de savoir si les besoins personnels en énergie et en protéines sont couverts.","en":"This meal alone cannot establish whether personal energy and protein needs are met.","source_report":"NHP01","source_pages_or_reference_id":"pp. 20 and 27 nutrition support; p. 26 competing priorities","allowed_scope":"Composition cannot establish personal adequacy; no target has been collected.","prohibited_inference":["Undernutrition diagnosis","Personal requirement or coverage percentage","Less energy/protein is always better","Calorie deficit instruction","Renal protein target"],"required_data":[],"fallback_when_missing":"Keep the limitation; show independently known values and flag the affected unknown/conflict."}];
History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Nutrition and health contexts
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- Sodium and blood pressure is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
- Fat substitution is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
- Glycemic limitation is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
- Personal adequacy limitation is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
- Reading focus is documented by Report NHP01 — Structural or documentary relation; does not imply clinical validation.
The sources
NHP01 Nutrikom health profiles and therapeutic nutrition contract
Nutrition and health contexts · PDF ↗
Document version
NHP01 · v1.0 · 2026-10-12
SHA256: 042249d3b296ad2b0055e3a9992deca3e47452ec214760e84e055ab08be2080b
Glycemic index and mixed meals
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- Glycemic limitation is documented by Report GLY01 — Structural or documentary relation; does not imply clinical validation.
The sources
GLY01 Nutrikom glycemic index load and diabetes contract
Glycemic index and mixed meals · PDF ↗
Document version
GLY01 · v1.0 · 2026-10-12
SHA256: 11b0e9437d1c81b5af48fc80107c81b88b9d3f84df365b78e93bbc8a8afb9ad7
Constructing and validating a meal score
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
NKS01 Nutrikom Meal Score construct and validation
Constructing and validating a meal score · PDF ↗
Document version
NKS01 · v1.0 · 2026-10-11
SHA256: 84ca9c535a9a700e0e7925d18324da8e15add883a405d538a955d18014b54473
Limits of a nutrition index
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
IDX01 Nutrikom Index construct and validation contract
Limits of a nutrition index · PDF ↗
Document version
IDX01 · v1.0 · 2026-10-11
SHA256: 5b32b0ddf303e4fbeebd93b845e08a13595456a3f630e64d607868700898863a
Understanding nutrient references
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
REF01 nutrient references and Nutrikom interpretation contract
Understanding nutrient references · PDF ↗
Document version
REF01 · v1.0 · 2026-10-11
SHA256: e88830c5502aefd60e8cc9e198862da181facc6a0798100782c593122871171d
One meal, one day, dietary habits
Documentary source
How Nutrikom uses this
Research synthesis used to design Nutrikom. Read the full report for its methods, findings and limitations.
Essential limitation
Received project synthesis, not an independent primary paper or product validation.
Where is this source cited?
- No connection is shown for this item in this version of the map. This does not mean it is unused in Nutrikom.
The sources
DAY01 dietary observation evidence and Nutrikom contract
One meal, one day, dietary habits · PDF ↗
Document version
DAY01 · v1.0 · 2026-10-11
SHA256: 2522de0b8e0bb451d8a3d7cc80b5f247401e8579f265160ce4518ce101f5d0a3
EU1169/2011 (2018 version)
Documentary source
How Nutrikom uses this
Document cited for the Annex XIII label references for an average adult. These references do not represent a personal requirement.
Essential limitation
A cited document does not validate every object citing it.
Where is this source cited?
- EU label references is documented by EU1169/2011 (2018 version) — Structural or documentary relation; does not imply clinical validation.
The sources
Regulation (EU) No 1169/2011, consolidated expression 2018-01-01, Annex XIII
Technical details
EU1169/2011 (2018 version)
The dated regulatory expression coded for general adult EU label references, not a personal target.
ref-eu-label · r1 · eli/reg/2011/1169/2018-01-01/eng
Regulation (EU) No 1169/2011, consolidated expression 2018-01-01, Annex XIII
plugin/src/WordPress/AI/MealReference.php · L9–23 · d286b9b88d950533b1e3c5a8ba2d6d965f94c237 · e3c45f7cfbbbbbb09e686f9f978ee166b7f7fc8c
public const SOURCE
public const SOURCE = 'https://eur-lex.europa.eu/eli/reg/2011/1169/2018-01-01/eng';
// [display name, unit, reference amount, kind, conversion from FatSecret units]
private const REFERENCES = [
'calories' => ['Energy', 'kcal', 2000.0, 'context', 1.0],
'fat' => ['Total fat', 'g', 70.0, 'context', 1.0],
'saturated_fat' => ['Saturated fat', 'g', 20.0, 'limit', 1.0],
'carbohydrate' => ['Carbohydrate', 'g', 260.0, 'context', 1.0],
'sugar' => ['Total sugars', 'g', 90.0, 'context', 1.0],
'protein' => ['Protein', 'g', 50.0, 'context', 1.0],
'sodium' => ['Salt equivalent', 'g', 6.0, 'limit', 0.0025],
'potassium' => ['Potassium', 'mg', 2000.0, 'context', 1.0],
'calcium' => ['Calcium', 'mg', 800.0, 'context', 1.0],
'iron' => ['Iron', 'mg', 14.0, 'context', 1.0],
'vitamin_c' => ['Vitamin C', 'mg', 80.0, History / changes
Revision r1, adopted mapping. No subsequent change recorded.
Les rapports de recherche Nutrikom
Synthèse française · dossier scientifique en anglais · édition publique du 14 octobre 2026.
Un repas, une journée, des habitudes
DAY01 · v1.0 · 2026-10-11
Lire le rapport · PDFRecueillir les repas et les quantités
REC01 · v1.0 · 2026-10-11
Lire le rapport · PDFComprendre les repères nutritionnels
REF01 · v1.0 · 2026-10-11
Lire le rapport · PDFCe qu’un repas permet d’expliquer
MEAL01 · v1.0 · 2026-10-11
Lire le rapport · PDFLes limites d’un index nutritionnel
IDX01 · v1.0 · 2026-10-11
Lire le rapport · PDFComprendre les résultats d’un repas
UX01 · v1.0 · 2026-10-11
Lire le rapport · PDFConstruire et valider un score de repas
NKS01 · v1.0 · 2026-10-11
Lire le rapport · PDFIndex glycémique et repas composés
GLY01 · v1.0 · 2026-10-12
Lire le rapport · PDFNutrition et contextes de santé
NHP01 · v1.0 · 2026-10-12
Lire le rapport · PDFLe règlement lié dans la carte est la consolidation du 1er janvier 2018. Le rapport REF01 cite la consolidation du 1er avril 2025 dans son dossier historique.
Nutrikom research reports
French summary · scientific dossier in English · public edition dated 14 October 2026.
One meal, one day, dietary habits
DAY01 · v1.0 · 2026-10-11
Read report · PDFRecording meals and amounts
REC01 · v1.0 · 2026-10-11
Read report · PDFUnderstanding nutrient references
REF01 · v1.0 · 2026-10-11
Read report · PDFWhat one meal can explain
MEAL01 · v1.0 · 2026-10-11
Read report · PDFLimits of a nutrition index
IDX01 · v1.0 · 2026-10-11
Read report · PDFUnderstanding single-meal feedback
UX01 · v1.0 · 2026-10-11
Read report · PDFConstructing and validating a meal score
NKS01 · v1.0 · 2026-10-11
Read report · PDFGlycemic index and mixed meals
GLY01 · v1.0 · 2026-10-12
Read report · PDFNutrition and health contexts
NHP01 · v1.0 · 2026-10-12
Read report · PDFThe regulation linked in the map is the consolidation of 1 January 2018. REF01 cites the consolidation of 1 April 2025 in its historical dossier.