@jjlmoya/utils-health 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +60 -0
  3. package/src/category/i18n/es.ts +60 -0
  4. package/src/category/i18n/fr.ts +60 -0
  5. package/src/category/index.ts +22 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +28 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +36 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/locale_completeness.test.ts +42 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +48 -0
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +22 -0
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tests/tool_validation.test.ts +17 -0
  24. package/src/tool/binauralTuner/bibliography.astro +14 -0
  25. package/src/tool/binauralTuner/component.astro +687 -0
  26. package/src/tool/binauralTuner/i18n/en.ts +187 -0
  27. package/src/tool/binauralTuner/i18n/es.ts +187 -0
  28. package/src/tool/binauralTuner/i18n/fr.ts +187 -0
  29. package/src/tool/binauralTuner/index.ts +27 -0
  30. package/src/tool/binauralTuner/seo.astro +14 -0
  31. package/src/tool/binauralTuner/ui.ts +18 -0
  32. package/src/tool/bloodUnitConverter/bibliography.astro +14 -0
  33. package/src/tool/bloodUnitConverter/component.astro +915 -0
  34. package/src/tool/bloodUnitConverter/i18n/en.ts +227 -0
  35. package/src/tool/bloodUnitConverter/i18n/es.ts +250 -0
  36. package/src/tool/bloodUnitConverter/i18n/fr.ts +218 -0
  37. package/src/tool/bloodUnitConverter/index.ts +27 -0
  38. package/src/tool/bloodUnitConverter/seo.astro +14 -0
  39. package/src/tool/bloodUnitConverter/ui.ts +38 -0
  40. package/src/tool/bmiCalculator/bibliography.astro +14 -0
  41. package/src/tool/bmiCalculator/component.astro +415 -0
  42. package/src/tool/bmiCalculator/i18n/en.ts +217 -0
  43. package/src/tool/bmiCalculator/i18n/es.ts +221 -0
  44. package/src/tool/bmiCalculator/i18n/fr.ts +217 -0
  45. package/src/tool/bmiCalculator/index.ts +27 -0
  46. package/src/tool/bmiCalculator/seo.astro +14 -0
  47. package/src/tool/bmiCalculator/ui.ts +21 -0
  48. package/src/tool/breathingVisualizer/bibliography.astro +14 -0
  49. package/src/tool/breathingVisualizer/component.astro +636 -0
  50. package/src/tool/breathingVisualizer/i18n/en.ts +206 -0
  51. package/src/tool/breathingVisualizer/i18n/es.ts +206 -0
  52. package/src/tool/breathingVisualizer/i18n/fr.ts +206 -0
  53. package/src/tool/breathingVisualizer/index.ts +27 -0
  54. package/src/tool/breathingVisualizer/seo.astro +14 -0
  55. package/src/tool/breathingVisualizer/ui.ts +31 -0
  56. package/src/tool/caffeineTracker/bibliography.astro +14 -0
  57. package/src/tool/caffeineTracker/component.astro +1210 -0
  58. package/src/tool/caffeineTracker/i18n/en.ts +198 -0
  59. package/src/tool/caffeineTracker/i18n/es.ts +198 -0
  60. package/src/tool/caffeineTracker/i18n/fr.ts +198 -0
  61. package/src/tool/caffeineTracker/index.ts +27 -0
  62. package/src/tool/caffeineTracker/logic.ts +31 -0
  63. package/src/tool/caffeineTracker/seo.astro +14 -0
  64. package/src/tool/caffeineTracker/ui.ts +36 -0
  65. package/src/tool/daltonismSimulator/bibliography.astro +14 -0
  66. package/src/tool/daltonismSimulator/component.astro +383 -0
  67. package/src/tool/daltonismSimulator/i18n/en.ts +188 -0
  68. package/src/tool/daltonismSimulator/i18n/es.ts +218 -0
  69. package/src/tool/daltonismSimulator/i18n/fr.ts +168 -0
  70. package/src/tool/daltonismSimulator/index.ts +27 -0
  71. package/src/tool/daltonismSimulator/seo.astro +14 -0
  72. package/src/tool/daltonismSimulator/ui.ts +20 -0
  73. package/src/tool/digestionStopwatch/bibliography.astro +14 -0
  74. package/src/tool/digestionStopwatch/component.astro +627 -0
  75. package/src/tool/digestionStopwatch/i18n/en.ts +173 -0
  76. package/src/tool/digestionStopwatch/i18n/es.ts +173 -0
  77. package/src/tool/digestionStopwatch/i18n/fr.ts +173 -0
  78. package/src/tool/digestionStopwatch/index.ts +27 -0
  79. package/src/tool/digestionStopwatch/logic.ts +63 -0
  80. package/src/tool/digestionStopwatch/seo.astro +14 -0
  81. package/src/tool/digestionStopwatch/ui.ts +20 -0
  82. package/src/tool/epworthSleepinessScale/bibliography.astro +14 -0
  83. package/src/tool/epworthSleepinessScale/component.astro +528 -0
  84. package/src/tool/epworthSleepinessScale/i18n/en.ts +217 -0
  85. package/src/tool/epworthSleepinessScale/i18n/es.ts +217 -0
  86. package/src/tool/epworthSleepinessScale/i18n/fr.ts +217 -0
  87. package/src/tool/epworthSleepinessScale/index.ts +27 -0
  88. package/src/tool/epworthSleepinessScale/seo.astro +14 -0
  89. package/src/tool/epworthSleepinessScale/ui.ts +27 -0
  90. package/src/tool/hydrationCalculator/bibliography.astro +14 -0
  91. package/src/tool/hydrationCalculator/component.astro +694 -0
  92. package/src/tool/hydrationCalculator/i18n/en.ts +217 -0
  93. package/src/tool/hydrationCalculator/i18n/es.ts +222 -0
  94. package/src/tool/hydrationCalculator/i18n/fr.ts +199 -0
  95. package/src/tool/hydrationCalculator/index.ts +27 -0
  96. package/src/tool/hydrationCalculator/seo.astro +14 -0
  97. package/src/tool/hydrationCalculator/ui.ts +28 -0
  98. package/src/tool/pelliRobsonTest/bibliography.astro +14 -0
  99. package/src/tool/pelliRobsonTest/component.astro +653 -0
  100. package/src/tool/pelliRobsonTest/i18n/en.ts +205 -0
  101. package/src/tool/pelliRobsonTest/i18n/es.ts +205 -0
  102. package/src/tool/pelliRobsonTest/i18n/fr.ts +205 -0
  103. package/src/tool/pelliRobsonTest/index.ts +27 -0
  104. package/src/tool/pelliRobsonTest/seo.astro +14 -0
  105. package/src/tool/pelliRobsonTest/ui.ts +21 -0
  106. package/src/tool/peripheralVisionTrainer/bibliography.astro +14 -0
  107. package/src/tool/peripheralVisionTrainer/component.astro +678 -0
  108. package/src/tool/peripheralVisionTrainer/i18n/en.ts +224 -0
  109. package/src/tool/peripheralVisionTrainer/i18n/es.ts +224 -0
  110. package/src/tool/peripheralVisionTrainer/i18n/fr.ts +211 -0
  111. package/src/tool/peripheralVisionTrainer/index.ts +27 -0
  112. package/src/tool/peripheralVisionTrainer/seo.astro +14 -0
  113. package/src/tool/peripheralVisionTrainer/ui.ts +26 -0
  114. package/src/tool/readingDistanceCalculator/bibliography.astro +14 -0
  115. package/src/tool/readingDistanceCalculator/component.astro +588 -0
  116. package/src/tool/readingDistanceCalculator/i18n/en.ts +202 -0
  117. package/src/tool/readingDistanceCalculator/i18n/es.ts +215 -0
  118. package/src/tool/readingDistanceCalculator/i18n/fr.ts +193 -0
  119. package/src/tool/readingDistanceCalculator/index.ts +31 -0
  120. package/src/tool/readingDistanceCalculator/seo.astro +14 -0
  121. package/src/tool/readingDistanceCalculator/ui.ts +18 -0
  122. package/src/tool/screenDecompressionTime/bibliography.astro +14 -0
  123. package/src/tool/screenDecompressionTime/component.astro +671 -0
  124. package/src/tool/screenDecompressionTime/i18n/en.ts +225 -0
  125. package/src/tool/screenDecompressionTime/i18n/es.ts +247 -0
  126. package/src/tool/screenDecompressionTime/i18n/fr.ts +225 -0
  127. package/src/tool/screenDecompressionTime/index.ts +27 -0
  128. package/src/tool/screenDecompressionTime/seo.astro +14 -0
  129. package/src/tool/screenDecompressionTime/ui.ts +32 -0
  130. package/src/tool/tinnitusReliever/bibliography.astro +14 -0
  131. package/src/tool/tinnitusReliever/component.astro +581 -0
  132. package/src/tool/tinnitusReliever/i18n/en.ts +161 -0
  133. package/src/tool/tinnitusReliever/i18n/es.ts +161 -0
  134. package/src/tool/tinnitusReliever/i18n/fr.ts +161 -0
  135. package/src/tool/tinnitusReliever/index.ts +27 -0
  136. package/src/tool/tinnitusReliever/seo.astro +14 -0
  137. package/src/tool/tinnitusReliever/ui.ts +9 -0
  138. package/src/tool/ubeCalculator/bibliography.astro +14 -0
  139. package/src/tool/ubeCalculator/component.astro +683 -0
  140. package/src/tool/ubeCalculator/i18n/en.ts +200 -0
  141. package/src/tool/ubeCalculator/i18n/es.ts +200 -0
  142. package/src/tool/ubeCalculator/i18n/fr.ts +196 -0
  143. package/src/tool/ubeCalculator/index.ts +27 -0
  144. package/src/tool/ubeCalculator/seo.astro +14 -0
  145. package/src/tool/ubeCalculator/ui.ts +26 -0
  146. package/src/tool/waterPurifier/bibliography.astro +14 -0
  147. package/src/tool/waterPurifier/component.astro +628 -0
  148. package/src/tool/waterPurifier/i18n/en.ts +167 -0
  149. package/src/tool/waterPurifier/i18n/es.ts +167 -0
  150. package/src/tool/waterPurifier/i18n/fr.ts +167 -0
  151. package/src/tool/waterPurifier/index.ts +27 -0
  152. package/src/tool/waterPurifier/seo.astro +14 -0
  153. package/src/tool/waterPurifier/ui.ts +18 -0
  154. package/src/tools.ts +19 -0
  155. package/src/types.ts +72 -0
@@ -0,0 +1,227 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { BloodUnitConverterUI } from '../ui';
4
+
5
+ const slug = 'blood-test-unit-converter';
6
+ const title = 'Blood Test Unit Converter';
7
+ const description =
8
+ 'Medical calculator to convert blood test results between mg/dL and mmol/L. Compatible with glucose, total cholesterol, HDL, LDL, triglycerides, creatinine and urea.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'What does mg/dL mean?',
13
+ answer:
14
+ 'Milligrams per decilitre. A unit of mass concentration that indicates how many milligrams of a substance are present in 100 millilitres of blood. It is the standard in Spain, the United States and Latin America.',
15
+ },
16
+ {
17
+ question: 'What does mmol/L mean?',
18
+ answer:
19
+ 'Millimoles per litre. The International System unit for measuring substance concentration based on the number of molecules (moles) per volume. It is the standard preferred by the international scientific community and countries such as the UK or Canada.',
20
+ },
21
+ {
22
+ question: 'Why is the conversion factor different for each substance?',
23
+ answer:
24
+ 'Because the factor depends on the molecular weight of the molecule. A heavier molecule like cholesterol (MW ≈ 387 g/mol) requires a larger divisor than glucose (MW ≈ 180 g/mol). The formula is: mmol/L = mg/dL ÷ molecular weight × 10.',
25
+ },
26
+ {
27
+ question: 'How do I manually convert from mmol/L to mg/dL?',
28
+ answer:
29
+ 'Multiply the mmol/L value by the substance-specific conversion factor. For example, for glucose multiply by 18.016. For cholesterol, by 38.67. The calculator performs this calculation automatically and instantly.',
30
+ },
31
+ {
32
+ question: 'Is this calculator reliable for medical diagnoses?',
33
+ answer:
34
+ 'This tool is purely informational and uses conversion factors per IFCC guidelines. It does not replace professional diagnosis. The reference ranges shown are indicative and may vary between laboratories, ages and individual clinical circumstances. Always consult your doctor.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Select the analyte',
41
+ text: 'Click the icon corresponding to the substance you want to convert: Glucose, Total Cholesterol, HDL, LDL, Triglycerides, Creatinine or Urea.',
42
+ },
43
+ {
44
+ name: 'Enter the value',
45
+ text: 'Type the number in the mg/dL or mmol/L field. Use the swap button to reverse the direction of conversion. The result appears instantly.',
46
+ },
47
+ {
48
+ name: 'Read the visual traffic light',
49
+ text: 'The status indicator shows whether the level is in the low, normal, borderline or high range according to the clinical reference guidelines for that substance.',
50
+ },
51
+ {
52
+ name: 'Save your results',
53
+ text: 'Click "Add to Table" to record the value in the history and compare multiple readings in the same session.',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowToThing> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step, i) => ({
73
+ '@type': 'HowToStep',
74
+ position: i + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ '@context': 'https://schema.org',
82
+ '@type': 'SoftwareApplication',
83
+ name: title,
84
+ description,
85
+ applicationCategory: 'HealthApplication',
86
+ operatingSystem: 'Web',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<BloodUnitConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Frequently asked questions about blood test unit conversion',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Scientific references',
97
+ bibliography: [
98
+ {
99
+ name: 'IFCC Scientific Division — Biochemical conversion factors',
100
+ url: 'https://www.ifcc.org/',
101
+ },
102
+ {
103
+ name: 'Mayo Clinic — Blood test interpretation',
104
+ url: 'https://www.mayoclinic.org/',
105
+ },
106
+ {
107
+ name: 'World Health Organization — Diabetes diagnostic criteria',
108
+ url: 'https://www.who.int/',
109
+ },
110
+ ],
111
+ howTo: howToData,
112
+ schemas: [faqSchema, howToSchema, appSchema],
113
+ ui: {
114
+ appTitle: 'Analytics Suite',
115
+ appSubtitle: 'Professional clinical unit converter',
116
+ sectionAnalyte: 'Select Analyte',
117
+ sectionHistory: 'My History',
118
+ labelMg: 'Mass (mg/dL)',
119
+ labelMmol: 'Molar (mmol/L)',
120
+ swapAriaLabel: 'Swap conversion direction',
121
+ statusIdle: 'Enter a value to analyse',
122
+ analyteGlucosa: 'Glucose',
123
+ analyteColesterolTotal: 'Total Cholesterol',
124
+ analyteHdl: 'HDL Cholesterol',
125
+ analyteLdl: 'LDL Cholesterol',
126
+ analyteTriglic: 'Triglycerides',
127
+ analyteCreatinina: 'Creatinine',
128
+ analyteUrea: 'Urea',
129
+ rangeBajo: 'Low',
130
+ rangeNormal: 'Normal',
131
+ rangeAlto: 'High',
132
+ rangeMuyAlto: 'Very High',
133
+ rangeLimite: 'Borderline',
134
+ rangeElevado: 'Elevated',
135
+ rangePrediabetes: 'Prediabetes',
136
+ rangeDiabetes: 'Diabetes',
137
+ rangeDeseable: 'Desirable',
138
+ rangeRiesgo: 'At Risk',
139
+ rangeAceptable: 'Acceptable',
140
+ rangeExcelente: 'Excellent',
141
+ rangeOptimo: 'Optimal',
142
+ rangeCasiOptimo: 'Near Optimal',
143
+ historyAdd: 'Add to Table',
144
+ historyAnalyte: 'Analyte',
145
+ historyMg: 'mg/dL',
146
+ historyMmol: 'mmol/L',
147
+ historyStatus: 'Status',
148
+ historyEmpty: 'No records saved',
149
+ disclaimerText:
150
+ 'Medical Notice: This tool is informational and uses conversion factors per IFCC guidelines. It does not replace professional diagnosis. Always consult your doctor.',
151
+ },
152
+ seo: [
153
+ {
154
+ type: 'summary',
155
+ title: 'Blood Test Unit Converter',
156
+ items: [
157
+ '<strong>7 analytes</strong>: glucose, total cholesterol, HDL, LDL, triglycerides, creatinine and urea.',
158
+ '<strong>Bidirectional</strong>: converts from mg/dL to mmol/L and back with one click.',
159
+ '<strong>Clinical traffic light</strong>: visual indicator of low, normal, borderline and high ranges.',
160
+ '<strong>Session history</strong>: save and compare multiple values in a table.',
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: 'Complete Guide to Blood Test Unit Conversion',
166
+ level: 2,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'Blood test results can be confusing when presented in different unit systems. Medical laboratories mainly use two types: mass concentration (<strong>mg/dL</strong>) and molar concentration (<strong>mmol/L</strong>). Understanding how to convert between them is crucial for patients consulting international scientific literature or living in countries with different standards, such as the United States (mg/dL) versus most of Europe (mmol/L).',
171
+ },
172
+ {
173
+ type: 'title',
174
+ text: 'Biochemical Conversion Factor Table',
175
+ level: 2,
176
+ },
177
+ {
178
+ type: 'table',
179
+ headers: ['Analyte', 'Mass unit', 'Molar unit', 'Conversion factor'],
180
+ rows: [
181
+ ['<strong>Glucose</strong>', 'mg/dL', 'mmol/L', '18.016 (divide mg/dL)'],
182
+ ['<strong>Total Cholesterol</strong>', 'mg/dL', 'mmol/L', '38.67 (divide mg/dL)'],
183
+ ['<strong>Triglycerides</strong>', 'mg/dL', 'mmol/L', '88.57 (divide mg/dL)'],
184
+ ['<strong>Urea</strong>', 'mg/dL', 'mmol/L', '6.006 (divide mg/dL)'],
185
+ ['<strong>Creatinine</strong>', 'mg/dL', 'mmol/L', '11.312 (divide mg/dL)'],
186
+ ],
187
+ },
188
+ {
189
+ type: 'title',
190
+ text: 'Glucose: The Body\'s Fuel',
191
+ level: 2,
192
+ },
193
+ {
194
+ type: 'paragraph',
195
+ html: 'Glucose is the primary energy source for cells. Its measurement is fundamental for diabetes management and metabolic health. A fasting level below <strong>100 mg/dL (5.55 mmol/L)</strong> is considered normal. Values between 100 and 125 mg/dL may indicate prediabetes, and levels above <strong>126 mg/dL (7.0 mmol/L)</strong> on two separate tests are usually indicative of type 2 diabetes mellitus.',
196
+ },
197
+ {
198
+ type: 'title',
199
+ text: 'Cholesterol and the Lipid Profile',
200
+ level: 2,
201
+ },
202
+ {
203
+ type: 'paragraph',
204
+ html: 'Cholesterol is a waxy substance necessary for building cells and hormones, but elevated levels increase the risk of cardiovascular disease. A desirable total cholesterol level is below <strong>200 mg/dL (5.17 mmol/L)</strong>. HDL "good" cholesterol above 60 mg/dL and LDL "bad" cholesterol below 100 mg/dL are the usual targets for healthy adults.',
205
+ },
206
+ {
207
+ type: 'tip',
208
+ title: 'Privacy first',
209
+ html: 'Your medical data is private. This tool processes all calculations <strong>locally in your browser</strong>. No sensitive information is sent to or stored on any server.',
210
+ },
211
+ {
212
+ type: 'title',
213
+ text: 'How to Interpret Results Safely',
214
+ level: 2,
215
+ },
216
+ {
217
+ type: 'list',
218
+ items: [
219
+ 'Fasting glucose <strong>repeatedly above 100 mg/dL</strong>.',
220
+ 'Total cholesterol <strong>above 240 mg/dL</strong> or LDL above 160 mg/dL.',
221
+ 'Triglycerides <strong>above 200 mg/dL</strong> on a sustained basis.',
222
+ 'Creatinine elevated or suddenly decreased, indicating altered kidney function.',
223
+ 'Any out-of-range value confirmed in <strong>two consecutive measurements</strong>.',
224
+ ],
225
+ },
226
+ ],
227
+ };
@@ -0,0 +1,250 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { BloodUnitConverterUI } from '../ui';
4
+
5
+ const slug = 'conversor-unidades-analitica-sangre';
6
+ const title = 'Conversor de Unidades de Analítica de Sangre';
7
+ const description =
8
+ 'Calculadora médica para convertir resultados de análisis de sangre entre mg/dL y mmol/L. Compatible con glucosa, colesterol total, HDL, LDL, triglicéridos, creatinina y urea.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Qué significa mg/dL?',
13
+ answer:
14
+ 'Miligramos por decilitro. Es una unidad de concentración de masa que indica cuántos miligramos de una sustancia hay en 100 mililitros de sangre. Es el estándar habitual en España, Estados Unidos y Latinoamérica.',
15
+ },
16
+ {
17
+ question: '¿Qué significa mmol/L?',
18
+ answer:
19
+ 'Milimoles por litro. Es la unidad del Sistema Internacional para medir la concentración de sustancias basándose en la cantidad de moléculas (moles) por volumen. Es el estándar preferido por la comunidad científica y países como Reino Unido o Canadá.',
20
+ },
21
+ {
22
+ question: '¿Por qué el factor de conversión es diferente para cada sustancia?',
23
+ answer:
24
+ 'Porque el factor depende del peso molecular de la molécula. Una molécula más pesada como el colesterol (PM ≈ 387 g/mol) requiere un divisor mayor que la glucosa (PM ≈ 180 g/mol). La fórmula es: mmol/L = mg/dL ÷ peso molecular × 10.',
25
+ },
26
+ {
27
+ question: '¿Cómo paso manualmente de mmol/L a mg/dL?',
28
+ answer:
29
+ 'Multiplica el valor en mmol/L por el factor de conversión de la sustancia. Por ejemplo, para glucosa multiplica por 18.016. Para colesterol, por 38.67. La calculadora hace este cálculo de forma automática e instantánea.',
30
+ },
31
+ {
32
+ question: '¿Es fiable esta calculadora para diagnósticos médicos?',
33
+ answer:
34
+ 'Esta herramienta es puramente informativa y utiliza factores de conversión según la IFCC. No sustituye un diagnóstico profesional. Los rangos de referencia mostrados son orientativos y pueden variar entre laboratorios, edades y circunstancias clínicas individuales. Consulte siempre con su médico.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Selecciona la sustancia analítica',
41
+ text: 'Haz clic en el icono correspondiente a la sustancia que deseas convertir: Glucosa, Colesterol Total, HDL, LDL, Triglicéridos, Creatinina o Urea.',
42
+ },
43
+ {
44
+ name: 'Introduce el valor',
45
+ text: 'Escribe el número en el campo mg/dL o mmol/L. Usa el botón de intercambio para cambiar la dirección de la conversión. El resultado aparece al instante.',
46
+ },
47
+ {
48
+ name: 'Interpreta el semáforo visual',
49
+ text: 'El indicador de estado muestra si el nivel se encuentra en rango bajo, normal, límite o alto según las guías clínicas de referencia para esa sustancia.',
50
+ },
51
+ {
52
+ name: 'Guarda tus resultados',
53
+ text: 'Pulsa "Añadir a Tabla" para registrar el valor en el historial y poder comparar varias analíticas en la misma sesión.',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowToThing> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step, i) => ({
73
+ '@type': 'HowToStep',
74
+ position: i + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ '@context': 'https://schema.org',
82
+ '@type': 'SoftwareApplication',
83
+ name: title,
84
+ description,
85
+ applicationCategory: 'HealthApplication',
86
+ operatingSystem: 'Web',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<BloodUnitConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Preguntas frecuentes sobre la conversión de unidades analíticas',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Referencias científicas',
97
+ bibliography: [
98
+ {
99
+ name: 'IFCC Scientific Division — Factores de conversión bioquímica',
100
+ url: 'https://www.ifcc.org/',
101
+ },
102
+ {
103
+ name: 'Mayo Clinic — Interpretación de análisis de sangre',
104
+ url: 'https://www.mayoclinic.org/',
105
+ },
106
+ {
107
+ name: 'Organización Mundial de la Salud — Criterios diagnósticos de diabetes',
108
+ url: 'https://www.who.int/',
109
+ },
110
+ ],
111
+ howTo: howToData,
112
+ schemas: [faqSchema, howToSchema, appSchema],
113
+ ui: {
114
+ appTitle: 'Analítica Suite',
115
+ appSubtitle: 'Conversor de unidades clínicas profesional',
116
+ sectionAnalyte: 'Seleccionar Analito',
117
+ sectionHistory: 'Mi Historial',
118
+ labelMg: 'Masa (mg/dL)',
119
+ labelMmol: 'Molar (mmol/L)',
120
+ swapAriaLabel: 'Cambiar dirección de conversión',
121
+ statusIdle: 'Analice un valor',
122
+ analyteGlucosa: 'Glucosa',
123
+ analyteColesterolTotal: 'Colesterol Total',
124
+ analyteHdl: 'Colesterol HDL',
125
+ analyteLdl: 'Colesterol LDL',
126
+ analyteTriglic: 'Triglicéridos',
127
+ analyteCreatinina: 'Creatinina',
128
+ analyteUrea: 'Urea',
129
+ rangeBajo: 'Bajo',
130
+ rangeNormal: 'Normal',
131
+ rangeAlto: 'Alto',
132
+ rangeMuyAlto: 'Muy Alto',
133
+ rangeLimite: 'Límite',
134
+ rangeElevado: 'Elevado',
135
+ rangePrediabetes: 'Prediabetes',
136
+ rangeDiabetes: 'Diabetes',
137
+ rangeDeseable: 'Deseable',
138
+ rangeRiesgo: 'Riesgo',
139
+ rangeAceptable: 'Aceptable',
140
+ rangeExcelente: 'Excelente',
141
+ rangeOptimo: 'Óptimo',
142
+ rangeCasiOptimo: 'Casi Óptimo',
143
+ historyAdd: 'Añadir a Tabla',
144
+ historyAnalyte: 'Analito',
145
+ historyMg: 'mg/dL',
146
+ historyMmol: 'mmol/L',
147
+ historyStatus: 'Estado',
148
+ historyEmpty: 'No hay registros guardados',
149
+ disclaimerText:
150
+ 'Aviso Médico: Esta herramienta es informativa y utiliza factores de conversión según la IFCC. No sustituye un diagnóstico profesional. Consulte siempre con su médico.',
151
+ },
152
+ seo: [
153
+ {
154
+ type: 'summary',
155
+ title: 'Conversor de Unidades de Analítica de Sangre',
156
+ items: [
157
+ '<strong>7 analitos</strong>: glucosa, colesterol total, HDL, LDL, triglicéridos, creatinina y urea.',
158
+ '<strong>Bidireccional</strong>: convierte de mg/dL a mmol/L y viceversa con un solo clic.',
159
+ '<strong>Semáforo clínico</strong>: indicador visual de rangos bajo, normal, límite y alto.',
160
+ '<strong>Historial de sesión</strong>: guarda y compara múltiples valores en tabla.',
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: 'Guía Completa sobre la Conversión de Unidades en Analíticas de Sangre',
166
+ level: 2,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: 'La interpretación de los resultados de una analítica de sangre puede resultar confusa cuando nos encontramos con diferentes sistemas de unidades. Los laboratorios médicos utilizan principalmente dos tipos: la concentración de masa (<strong>mg/dL</strong>) y la concentración molar (<strong>mmol/L</strong>). Entender cómo pasar de mg/dL a mmol/L es crucial para pacientes que consultan literatura científica internacional o que viven en países con distintos estándares, como Estados Unidos (mg/dL) frente a la mayor parte de Europa (mmol/L).',
171
+ },
172
+ {
173
+ type: 'title',
174
+ text: 'Tabla de Factores de Conversión Bioquímica',
175
+ level: 2,
176
+ },
177
+ {
178
+ type: 'table',
179
+ headers: ['Analito', 'Unidad masa', 'Unidad molar', 'Factor de conversión'],
180
+ rows: [
181
+ ['<strong>Glucosa</strong>', 'mg/dL', 'mmol/L', '18.016 (dividir mg/dL)'],
182
+ ['<strong>Colesterol Total</strong>', 'mg/dL', 'mmol/L', '38.67 (dividir mg/dL)'],
183
+ ['<strong>Triglicéridos</strong>', 'mg/dL', 'mmol/L', '88.57 (dividir mg/dL)'],
184
+ ['<strong>Urea</strong>', 'mg/dL', 'mmol/L', '6.006 (dividir mg/dL)'],
185
+ ['<strong>Creatinina</strong>', 'mg/dL', 'mmol/L', '11.312 (dividir mg/dL)'],
186
+ ],
187
+ },
188
+ {
189
+ type: 'title',
190
+ text: 'Diferencias entre los Sistemas de Medición',
191
+ level: 2,
192
+ },
193
+ {
194
+ type: 'list',
195
+ items: [
196
+ '<strong>Concentración de masa (mg/dL):</strong> indica cuántos miligramos de la sustancia hay en 100 ml de sangre. Estándar en España, EE.UU. y Latinoamérica.',
197
+ '<strong>Concentración molar (mmol/L):</strong> se basa en la cantidad de moléculas (moles) por litro. Preferida por la comunidad científica internacional y países como Reino Unido o Canadá.',
198
+ '<strong>Precisión bioquímica:</strong> el sistema molar permite comparar la cantidad real de moléculas que interactúan en los procesos biológicos, independientemente de su peso individual.',
199
+ '<strong>Interoperabilidad:</strong> esta calculadora permite que pacientes y profesionales hablen el mismo idioma médico sin importar su ubicación geográfica.',
200
+ ],
201
+ },
202
+ {
203
+ type: 'title',
204
+ text: 'Glucosa: El Combustible del Organismo',
205
+ level: 2,
206
+ },
207
+ {
208
+ type: 'paragraph',
209
+ html: 'La glucosa es la principal fuente de energía para las células. Su medición es fundamental para el control de la diabetes y la salud metabólica. Un nivel en ayunas inferior a <strong>100 mg/dL (5.55 mmol/L)</strong> se considera normal. Valores entre 100 y 125 mg/dL pueden indicar prediabetes, y niveles superiores a <strong>126 mg/dL (7.0 mmol/L)</strong> en varias determinaciones suelen ser indicativos de diabetes mellitus tipo 2.',
210
+ },
211
+ {
212
+ type: 'title',
213
+ text: 'Colesterol y el Perfil Lipídico',
214
+ level: 2,
215
+ },
216
+ {
217
+ type: 'paragraph',
218
+ html: 'El colesterol es una sustancia cerosa necesaria para construir células y hormonas, pero niveles elevados aumentan el riesgo de enfermedades cardiovasculares. Un nivel deseable de colesterol total es inferior a <strong>200 mg/dL (5.17 mmol/L)</strong>. El HDL "bueno" por encima de 60 mg/dL y el LDL "malo" por debajo de 100 mg/dL son los objetivos habituales para adultos sanos.',
219
+ },
220
+ {
221
+ type: 'tip',
222
+ title: 'Privacidad ante todo',
223
+ html: 'Tus datos médicos son privados. Esta herramienta procesa todos los cálculos <strong>localmente en tu navegador</strong>. Ninguna información sensible se envía ni se almacena en ningún servidor.',
224
+ },
225
+ {
226
+ type: 'title',
227
+ text: 'Cómo Interpretar los Resultados de Forma Segura',
228
+ level: 2,
229
+ },
230
+ {
231
+ type: 'paragraph',
232
+ html: 'Es vital recordar que los rangos de normalidad pueden variar entre laboratorios, según las técnicas de análisis empleadas. Además, factores como la <strong>edad, el sexo, la dieta y la medicación</strong> influyen en lo que se considera normal para cada individuo. Los valores de referencia mostrados en esta calculadora son orientativos y basados en las guías de la OMS y las principales sociedades clínicas.',
233
+ },
234
+ {
235
+ type: 'title',
236
+ text: 'Cuándo Consultar con tu Médico',
237
+ level: 2,
238
+ },
239
+ {
240
+ type: 'list',
241
+ items: [
242
+ 'Valores de glucosa en ayunas <strong>repetidamente superiores a 100 mg/dL</strong>.',
243
+ 'Colesterol total <strong>superior a 240 mg/dL</strong> o LDL por encima de 160 mg/dL.',
244
+ 'Triglicéridos <strong>superiores a 200 mg/dL</strong> de forma mantenida.',
245
+ 'Creatinina elevada o descendente de forma brusca, indicadora de función renal alterada.',
246
+ 'Cualquier valor fuera de rango confirmado en <strong>dos determinaciones consecutivas</strong>.',
247
+ ],
248
+ },
249
+ ],
250
+ };