@jjlmoya/utils-forensic-science 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 (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,206 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'widmark-blood-alcohol-simulator';
5
+ const title = 'Widmark Blood Alcohol Concentration Simulator';
6
+ const description = 'Calculate and simulate the absorption, distribution, and elimination of ethanol in the human body using the Widmark formula and a zero-order metabolism kinetics engine.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Configure subject physical parameters',
11
+ text: 'Enter the body weight, biological sex, and hydration level. These biological characteristics directly calculate the Widmark factor (r) which dictates the volume of distribution for ethanol in the body.',
12
+ },
13
+ {
14
+ name: 'Define stomach fullness state',
15
+ text: 'Select empty stomach, light meal, or full meal. This dynamically adjusts the absorption rate constant (ka) to show the dampening and delay effect of food on the BAC curve.',
16
+ },
17
+ {
18
+ name: 'Add drinks to the timeline',
19
+ text: 'Add individual drinks by specifying the volume in milliliters, alcohol by volume percentage (ABV), and the hour at which the drink was consumed relative to the start of the simulation.',
20
+ },
21
+ {
22
+ name: 'Analyze the resulting BAC curve',
23
+ text: 'Inspect the resulting blood alcohol concentration chart over 12 hours. Compare the peak level, time to reach the peak, and total duration to sobriety against standard driving limits.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'What is the Widmark formula and how is it used in forensics?',
31
+ answer: 'The Widmark formula is a mathematical model developed by Erik M. P. Widmark in 1932. It estimates blood alcohol concentration based on the mass of alcohol consumed, body weight, a distribution factor (r), and a linear elimination rate over time. Forensic toxicologists use this formula to perform retrospective calculations to estimate a suspect\'s BAC at the time of an accident or offense.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'How does food in the stomach affect the shape of the BAC curve?',
36
+ answer: 'Food in the stomach delays gastric emptying, which prevents alcohol from entering the small intestine quickly. Because the small intestine has a massive surface area, it absorbs alcohol much faster than the stomach. In our simulation, this delay is modeled by decreasing the absorption rate constant (ka), which shifts the peak BAC later in time and significantly lowers the maximum peak concentration.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Why does alcohol clearance follow zero-order kinetics instead of first-order?',
41
+ answer: 'Most medications are cleared via first-order kinetics, meaning the rate of elimination is proportional to concentration. Alcohol clearance follows zero-order kinetics because the primary liver enzyme responsible for its metabolism, alcohol dehydrogenase (ADH), becomes completely saturated at very low BAC levels (around 0.02 g/L). Consequently, the liver metabolizes alcohol at a constant, maximum speed regardless of how much alcohol is in the blood.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'What biological factors cause individual variations in the Widmark factor?',
46
+ answer: 'The Widmark factor (r) represents the ratio of water in the body to total body weight. Since ethanol is highly hydrophilic (water-soluble) and hydrophobic (lipophobic), it distributes only into body water. Muscle tissue contains a high percentage of water, while adipose (fat) tissue contains very little. Therefore, individuals with higher body fat percentages or lower hydration states have a smaller volume of distribution, yielding a higher BAC for the same amount of alcohol.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Can I use this simulator to legally prove I was sober enough to drive?',
51
+ answer: 'Absolutely not. This simulator is an educational tool designed to demonstrate general pharmacokinetic concepts. In real life, factors such as liver health, enzyme genetics, medication interactions, sleep deprivation, stress, and exact gastric conditions introduce significant variations. You must never rely on a mathematical simulation to determine your fitness to operate a motor vehicle.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: 'Subject profile',
61
+ weight: 'Weight (kg)',
62
+ sex: 'Biological sex',
63
+ male: 'Male',
64
+ female: 'Female',
65
+ hydration: 'Hydration level',
66
+ hydrationLow: 'Low',
67
+ hydrationNormal: 'Normal',
68
+ hydrationHigh: 'High',
69
+ stomachState: 'Stomach contents',
70
+ stomachEmpty: 'Empty (Fast absorption)',
71
+ stomachLight: 'Light meal (Medium absorption)',
72
+ stomachFull: 'Full meal (Slow absorption)',
73
+ drinksTimeline: 'Consumption timeline',
74
+ addDrink: 'Add drink',
75
+ drinkVolume: 'Volume (ml)',
76
+ drinkAbv: 'ABV (%)',
77
+ drinkTime: 'Time (Hour)',
78
+ drinksList: 'Drinks consumed',
79
+ remove: 'Remove',
80
+ beer: 'Beer (330ml, 5%)',
81
+ wine: 'Wine (150ml, 12%)',
82
+ spirits: 'Spirits (40ml, 40%)',
83
+ peakBac: 'Peak BAC',
84
+ timeToSober: 'Time to sober',
85
+ sober: 'Sober',
86
+ currentBac: 'Current BAC',
87
+ drivingLimitAlert: 'Driving limit status',
88
+ safeLimit: 'Below limit',
89
+ warningLimit: 'Warning limit exceeded',
90
+ dangerLimit: 'Danger level exceeded',
91
+ graphTitle: 'Blood alcohol concentration over 12 hours',
92
+ timeAxisLabel: 'Time (Hours)',
93
+ bacAxisLabel: 'BAC (g/L)',
94
+ legalLimitText: 'Standard driving limit',
95
+ noDrinksText: 'Add drinks to simulate the BAC curve.',
96
+ hours: 'hours',
97
+ soberStatus: 'Sober in {time} hours',
98
+ neverSober: 'Exceeds 12h window',
99
+ noteDisclaimer: 'Educational simulation only. Actual absorption and clearance vary. Do not drive after drinking.',
100
+ noteWidmark: 'Based on Widmark equation and zero-order hepatic elimination rate.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Forensic Toxicology and Pharmacokinetics of Ethanol',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'Understanding the <strong>absorption, distribution, and elimination of ethanol</strong> is a core requirement in forensic science and traffic accident reconstruction. When a person consumes alcohol, it travels down the esophagus into the stomach, where a small amount is absorbed directly into the bloodstream. However, the vast majority of ethanol absorption takes place in the duodenum and small intestine due to its large surface area. The rate at which the stomach empties its contents into the small intestine is the major limiting step of alcohol absorption, which explains why the presence of food plays such a dramatic role in the pharmacokinetic curve.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'This interactive simulator implements Erik M. P. Widmark\'s classic equations combined with a continuous compartmental simulation to model the entire process over a 12-hour period. By adjusting the physiological characteristics of the subject and adding multiple drinks at different time slots, students and forensic trainees can visualize the mathematical accumulation and subsequent linear decay of blood alcohol concentration.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: 'Mathematical Derivation of the Widmark Equation',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'The fundamental Widmark equation calculates the theoretical blood alcohol concentration assuming instantaneous absorption and distribution throughout the body water compartment. The equation is represented as: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. In this equation, <em>A</em> represents the mass of pure ethanol consumed in grams, <em>W</em> is the total body weight of the subject in kilograms, and <em>r</em> is the Widmark factor, also known as the distribution ratio. The distribution ratio represents the fraction of the body weight that consists of water and is capable of dissolving ethanol. Finally, <em>&beta;</em> (beta) is the rate of elimination per hour, and <em>t</em> is the elapsed time since the beginning of absorption.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'To convert liquid beverage volumes into grams of pure ethanol, we multiply the volume in milliliters by the alcohol by volume percentage (ABV) and then by the density of ethanol, which is approximately 0.8 grams per milliliter. For example, a 330 ml beer at 5% ABV contains: 330 * 0.05 * 0.8 = 13.2 grams of pure ethanol. This mass of alcohol is then diluted by the subject\'s total body water, which depends heavily on body weight and body composition. The simulator dynamically adjusts the r-factor based on biological sex (standard male baseline is 0.68, while the female baseline is 0.55 due to typical body fat ratio differences) and hydration levels, providing a highly customizable educational tool.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Physiological Factors Affecting Distribution and Gastric Clearance',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'The volume of distribution (V<sub>d</sub>) of ethanol is determined entirely by body composition because ethanol is hydrophilic and lipophobic. Adipose tissue (body fat) contains very little water, whereas muscle tissue contains approximately 75% water. Consequently, a muscular individual will have a larger volume of distribution (a higher Widmark factor r) and will experience a lower peak BAC than an individual of the same weight with a higher body fat percentage. Dehydration also reduces the total volume of body water, shrinking the dilution pool and raising the peak BAC for any given quantity of alcohol consumed.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Physiological Variable', 'Biological Mechanism', 'Effect on Pharmacokinetics', 'Forensic Implications'],
141
+ rows: [
142
+ ['Total Body Weight', 'Determines the total mass and scale of the body water pool.', 'Inversely proportional to the maximum peak BAC.', 'Establishes the initial dilution baseline for retrospective calculations.'],
143
+ ['Biological Sex', 'Influences the typical muscle-to-fat ratio and body composition.', 'r is lower in females (0.55) than males (0.68), raising peak BAC.', 'Explains why women generally experience higher intoxication levels.'],
144
+ ['Hydration State', 'Alters the total volume of free water in extracellular spaces.', 'Dehydration lowers r by 0.05, raising the peak curve height.', 'Accounts for changes in susceptibility due to sweating or sickness.'],
145
+ ['Gastric Fullness', 'Food slows gastric emptying and traps ethanol in the stomach.', 'Lowers the absorption rate constant (ka), flattening the peak.', 'Explains why drinking on an empty stomach leads to sudden intoxication.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Elimination Kinetics: Zero-Order Hepatic Clearance',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Once ethanol enters the bloodstream, it is distributed to all tissues and organs. The elimination of alcohol is primarily performed by the liver, where the enzyme alcohol dehydrogenase (ADH) converts ethanol into acetaldehyde, which is then converted to acetate by aldehyde dehydrogenase (ALDH). A minor portion of alcohol (around 5-10%) is excreted unchanged in breath, sweat, and urine. Because the ADH enzyme system is highly efficient, it becomes completely saturated at very low BAC concentrations. This results in zero-order kinetics, where a constant amount of alcohol is eliminated per unit of time, regardless of the blood concentration.',
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'In forensic toxicology, the average elimination rate (&beta;<sub>60</sub>) is widely accepted as 0.15 grams per liter per hour (g/L/h), which is equivalent to approximately 10 grams of pure alcohol cleared from the body every hour. In this simulation, the rate of clearance is computed in grams per hour as <strong>&beta; * Weight * r</strong>, ensuring that the linear decline matches the physiological scale of the individual. Under extreme conditions or chronic consumption, the elimination rate can increase up to 0.25 g/L/h, while individuals with liver damage or specific genetic variations may experience rates as low as 0.10 g/L/h. This linear decay produces the characteristic straight-line descent on the BAC chart until the concentration reaches zero.',
160
+ },
161
+ {
162
+ type: 'title',
163
+ text: 'Forensic Case Analysis: Retrospective Calculations',
164
+ level: 3,
165
+ },
166
+ {
167
+ type: 'paragraph',
168
+ html: 'Forensic investigators frequently use retrospective calculations (also known as back-calculations) to estimate a driver\'s BAC at the time of a traffic stop or collision based on a blood test taken hours later. For example, if a blood sample taken at 3:00 AM shows a BAC of 0.20 g/L, and the incident occurred at 12:00 AM, the investigator must add back the eliminated alcohol. Using the standard rate of 0.15 g/L/h over the 3-hour delay, the estimated BAC at the time of the crash would be: 0.20 + (0.15 * 3) = 0.65 g/L. This calculation is only valid if the individual was in the post-absorptive phase (completely finished absorbing all alcohol) during the entire interval, illustrating why understanding stomach contents and absorption timelines is critical in legal proceedings.',
169
+ },
170
+ ],
171
+ faq,
172
+ bibliography,
173
+ howTo,
174
+ schemas: [
175
+ {
176
+ '@context': 'https://schema.org',
177
+ '@type': 'SoftwareApplication',
178
+ name: title,
179
+ description,
180
+ applicationCategory: 'ForensicApplication',
181
+ operatingSystem: 'Any',
182
+ },
183
+ {
184
+ '@context': 'https://schema.org',
185
+ '@type': 'FAQPage',
186
+ mainEntity: faq.map((item) => ({
187
+ '@type': 'Question',
188
+ name: item.question,
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: item.answer,
192
+ },
193
+ })),
194
+ },
195
+ {
196
+ '@context': 'https://schema.org',
197
+ '@type': 'HowTo',
198
+ name: title,
199
+ step: howTo.map((step) => ({
200
+ '@type': 'HowToStep',
201
+ name: step.name,
202
+ text: step.text,
203
+ })),
204
+ },
205
+ ],
206
+ };
@@ -0,0 +1,193 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'calculador-alcoholemia-widmark-espanol';
5
+ const title = 'Simulador de Concentración de Alcoholemia de Widmark';
6
+ const description = 'Calcula y simula la absorción, distribución y eliminación de etanol en el cuerpo humano utilizando la fórmula de Widmark y un motor de cinética de metabolismo de orden cero.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Configurar parámetros físicos del sujeto',
11
+ text: 'Introduce el peso corporal, el sexo biológico y el nivel de hidratación. Estas características fisiológicas calculan directamente el factor de Widmark (r), que dicta el volumen de distribución del etanol en el cuerpo.',
12
+ },
13
+ {
14
+ name: 'Definir el estado de llenado del estómago',
15
+ text: 'Selecciona entre estómago vacío, comida ligera o comida completa. Esto ajusta dinámicamente la constante de velocidad de absorción (ka) para mostrar el efecto de amortiguación de los alimentos.',
16
+ },
17
+ {
18
+ name: 'Añadir bebidas a la línea de tiempo',
19
+ text: 'Añade bebidas individuales especificando el volumen en mililitros, el porcentaje de alcohol por volumen (graduación) e introduce la hora de consumo relativa al inicio de la simulación.',
20
+ },
21
+ {
22
+ name: 'Analizar la curva de alcoholemia resultante',
23
+ text: 'Inspecciona el gráfico de evolución temporal de la tasa de alcohol en sangre durante 12 horas. Compara el pico máximo y el tiempo de recuperación frente a los límites legales.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: '¿Qué es la fórmula de Widmark y cómo se utiliza en toxicología forense?',
31
+ answer: 'La fórmula de Widmark es un modelo matemático desarrollado por el químico sueco Erik M. P. Widmark en 1932. Estima la concentración de alcohol en sangre (BAC) basándose en la masa de alcohol puro ingerido, el peso corporal, un factor de distribución biológica (r) y una tasa de eliminación lineal. Los toxicólogos forenses la utilizan para realizar cálculos retrospectivos o "cálculos hacia atrás", estimando la alcoholemia de un conductor en el momento exacto de un accidente a partir de una muestra de sangre tomada horas después.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: '¿Cómo afecta la comida en el estómago a la forma de la curva de alcoholemia?',
36
+ answer: 'La presencia de comida en el estómago retrasa el vaciado gástrico, lo que a su vez retrasa la llegada del etanol al duodeno e intestino delgado, que es donde se absorbe de forma masiva y rápida. En la simulación, esta ralentización se modela reduciendo la constante de velocidad de absorción (ka). El resultado visual en la gráfica es un pico de alcoholemia retrasado en el tiempo y con una altura máxima significativamente menor que en ayunas.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: '¿Por qué la eliminación de alcohol sigue una cinética de orden cero en lugar de orden uno?',
41
+ answer: 'La mayoría de fármacos se eliminan por cinética de primer orden, donde la velocidad de aclaramiento es proporcional a la concentración. Sin embargo, el alcohol se metaboliza mediante cinética de orden cero porque la enzima hepática principal encargada de su oxidación, la alcohol deshidrogenasa (ADH), se satura con niveles muy bajos de alcoholemia (alrededor de 0.02 g/L). Por tanto, el hígado metaboliza el alcohol a una velocidad máxima constante, independientemente de cuánto se haya consumido.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: '¿Qué factores biológicos influyen en las variaciones del factor r de Widmark?',
46
+ answer: 'El factor de Widmark (r) representa la proporción de agua corporal respecto al peso total. Como el etanol es muy hidrófilo y prácticamente insoluble en grasa, se distribuye únicamente en el agua corporal. Dado que el tejido muscular contiene aproximadamente un 75% de agua y el tejido adiposo (grasa) apenas retiene agua, las personas con mayor porcentaje de grasa o estados de deshidratación severa tienen un volumen de distribución menor, lo que eleva la concentración de alcohol en sangre tras ingerir la misma dosis.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: '¿Puedo usar este simulador para demostrar legalmente que estaba sobrio para conducir?',
51
+ answer: 'Bajo ninguna circunstancia. Este simulador es una herramienta puramente educativa. En la realidad física de un individuo, variables como la salud del hígado, la genética enzimática, interacciones con fármacos, el cansancio, el estrés y las condiciones gastrointestinales exactas añaden una enorme variabilidad. Nunca confíes en un cálculo matemático para decidir si estás en condiciones de conducir.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: 'Perfil del sujeto',
61
+ weight: 'Peso (kg)',
62
+ sex: 'Sexo biológico',
63
+ male: 'Masculino',
64
+ female: 'Femenino',
65
+ hydration: 'Nivel de hidratación',
66
+ hydrationLow: 'Bajo',
67
+ hydrationNormal: 'Normal',
68
+ hydrationHigh: 'Alto',
69
+ stomachState: 'Contenido del estómago',
70
+ stomachEmpty: 'Vacío (Absorción rápida)',
71
+ stomachLight: 'Comida ligera (Absorción media)',
72
+ stomachFull: 'Comida completa (Absorción lenta)',
73
+ drinksTimeline: 'Línea de tempo de consumo',
74
+ addDrink: 'Añadir bebida',
75
+ drinkVolume: 'Volumen (ml)',
76
+ drinkAbv: 'Graduación (% vol)',
77
+ drinkTime: 'Tiempo (Hora)',
78
+ drinksList: 'Bebidas consumidas',
79
+ remove: 'Eliminar',
80
+ beer: 'Cerveza (330ml, 5%)',
81
+ wine: 'Vino (150ml, 12%)',
82
+ spirits: 'Destilados (40ml, 40%)',
83
+ peakBac: 'Pico de BAC',
84
+ timeToSober: 'Tiempo para sobriedad',
85
+ sober: 'Sobrio',
86
+ currentBac: 'BAC actual',
87
+ drivingLimitAlert: 'Límite de conducción',
88
+ safeLimit: 'Bajo el límite',
89
+ warningLimit: 'Límite de advertencia superado',
90
+ dangerLimit: 'Nivel de peligro superado',
91
+ graphTitle: 'Concentración de alcohol en sangre durante 12 horas',
92
+ timeAxisLabel: 'Tiempo (Horas)',
93
+ bacAxisLabel: 'Alcoholemia (g/L)',
94
+ legalLimitText: 'Límite legal estándar',
95
+ noDrinksText: 'Añade bebidas para simular la curva de alcoholemia.',
96
+ hours: 'horas',
97
+ soberStatus: 'Sobrio en {time} horas',
98
+ neverSober: 'Supera las 12 horas',
99
+ noteDisclaimer: 'Simulación educativa. La absorción y eliminación real varían. No conduzcas si has bebido.',
100
+ noteWidmark: 'Basado en la ecuación de Widmark y tasa de eliminación hepática de orden cero.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Fisiología, Farmacocinética y Metabolismo del Etanol en Casos Forenses',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'La determinación de la <strong>absorción, distribución y eliminación del etanol</strong> constituye uno de los pilares más importantes de la medicina legal y la toxicología forense. Tras su ingestión, el alcohol desciende hacia el estómago, donde comienza un proceso de absorción menor. No obstante, más del 80% de la dosis de etanol se absorbe en el duodeno y el yeyuno debido a su enorme superficie epitelial. La velocidad con la que el esfínter pilórico del estómago se abre y permite el paso de los líquidos al intestino es el factor limitante clave de la absorción. Esta es la base de por qué consumir bebidas alcohólicas con el estómago lleno aplana la curva farmacocinética.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Este simulador interactivo implementa las ecuaciones matemáticas de Erik Widmark para modelar la concentración de alcohol en sangre (BAC) de forma continua durante un período de 12 horas. Al configurar los parámetros físicos del sujeto e introducir consumos espaciados en el tiempo, el usuario puede observar cómo se superponen los picos de absorción gástrica y cómo la velocidad de aclaramiento hepático de orden cero reduce de forma lineal los niveles de etanol en la sangre.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: 'Derivación de la Ecuación Retrospectiva de Widmark',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'La ecuación básica formulada por Widmark asume que el alcohol ingerido se distribuye instantáneamente en todo el volumen de agua del cuerpo humano. Su expresión matemática fundamental es: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. Donde <em>A</em> es la masa de alcohol puro expresada en gramos, <em>W</em> representa el peso corporal del sujeto en kilogramos, y <em>r</em> es el factor de distribución o constante de dilución. Este factor representa la fração del peso corporal en la que el alcohol puede disolverse. Por último, <em>&beta;</em> (beta) representa la tasa metabólica de eliminación por hora y <em>t</em> es el tempo transcurrido en horas.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Para convertir el volumen líquido de una bebida en masa de etanol puro, se multiplica el volumen en mililitros por la concentración de alcohol por volumen (ABV) y por la densidad del etanol, estimada en 0.8 g/ml. Por ejemplo, una lata de cerveza de 330 ml al 5% aporta: 330 * 0.05 * 0.8 = 13.2 gramos de alcohol puro. Esta masa se diluye según el agua corporal total. El simulador adapta el factor r según el sexo (0.68 para hombres y 0.55 para mujeres, debido a la diferencia típica en tejido adiposo) y el nivel de hidratación, ofreciendo una representación precisa.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Factores que Modulan el Volumen de Distribución y la Eliminación de Orden Cero',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'El volumen aparente de distribución (V<sub>d</sub>) depende de la cantidad de agua celular y extracelular. El alcohol es soluble en agua pero apenas se disuelve en el tejido adiposo (grasa). Por esta razón, una persona con mayor masa muscular tendrá un factor r mayor y presentará un pico de alcoholemia menor en comparación con una persona del mismo peso pero mayor grasa corporal. Asimismo, la deshidratación aguda reduce la cantidad de agua libre en el organismo, disminuyendo el volumen de dilución y provocando un incremento notable en la concentración de alcohol sanguíneo ante la misma ingesta.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Variable Fisiológica', 'Mecanismo Biológico', 'Efecto Farmacocinético', 'Importancia Forense'],
141
+ rows: [
142
+ ['Peso Corporal', 'Escala el volumen total del pool de agua corporal.', 'Inversamente proporcional al pico máximo de alcoholemia.', 'Establece el volumen de dilución de partida para estimar dosis.'],
143
+ ['Sexo Biológico', 'Determina la relación muscular y de grasa típica.', 'r is menor en mujeres (0.55) que en hombres (0.68).', 'Explica la susceptibilidad física ante la misma dosis.'],
144
+ ['Estado de Hidratación', 'Altera el agua disponible en los compartimentos.', 'La deshidratación reduce r en 0.05, elevando la curva.', 'Ajusta la tolerancia matemática en climas extremos o esfuerzo.'],
145
+ ['Llenado Gástrico', 'La comida retrasa el vaciado y atrapa etanol en el estómago.', 'Reduce la constante ka, aplanando y retrasando el pico.', 'Explica alcoholemias bajas con consumos altos postprandiales.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Cinética Hepática y Reconstrucción en Accidentes de Tráfico',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Una vez en la circulación, el alcohol es metabolizado principalmente en el hígado por el sistema enzimático de la alcohol deshidrogenasa (ADH), que lo transforma en acetaldehído. Este proceso se satura a concentraciones muy bajas, lo que da lugar a una cinética de orden cero. Esto significa que el hígado metaboliza una cantidad fija de alcohol por hora, sin importar el nivel de intoxicación. En el ámbito forense, esta tasa constante de aclaramiento (&beta;<sub>60</sub>) se fija de media en 0.15 g/L por hora, equivalente a eliminar unos 10 gramos de alcohol puro cada hora. Esta eliminación de orden cero es la que genera la característica pendiente de descenso lineal en los gráficos de alcoholemia.',
156
+ },
157
+ ],
158
+ faq,
159
+ bibliography,
160
+ howTo,
161
+ schemas: [
162
+ {
163
+ '@context': 'https://schema.org',
164
+ '@type': 'SoftwareApplication',
165
+ name: title,
166
+ description,
167
+ applicationCategory: 'ForensicApplication',
168
+ operatingSystem: 'Any',
169
+ },
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'FAQPage',
173
+ mainEntity: faq.map((item) => ({
174
+ '@type': 'Question',
175
+ name: item.question,
176
+ acceptedAnswer: {
177
+ '@type': 'Answer',
178
+ text: item.answer,
179
+ },
180
+ })),
181
+ },
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'HowTo',
185
+ name: title,
186
+ step: howTo.map((step) => ({
187
+ '@type': 'HowToStep',
188
+ name: step.name,
189
+ text: step.text,
190
+ })),
191
+ },
192
+ ],
193
+ };
@@ -0,0 +1,193 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'simulateur-alcoholemie-widmark';
5
+ const title = 'Simulateur de Taux d\'Alcoolémie Widmark';
6
+ const description = 'Simulez l\'absorption, la distribution et l\'élimination de l\'alcool dans le corps humain à l\'aide de la formule de Widmark et de la cinétique du métabolisme d\'ordre zéro.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Configurer le profil physique du sujet',
11
+ text: 'Ajustez le poids corporel, le sexe biologique et le niveau d\'hydratation. Ces variables déterminent le facteur de Widmark (r) qui dicte le volume de distribution.',
12
+ },
13
+ {
14
+ name: 'Définir l\'état de réplétion de l\'estomac',
15
+ text: 'Choisissez entre estomac vide, repas léger ou repas complet. Cela influence la constante de vitesse d\'absorption (ka) et aplatit la courbe de concentration d\'alcool.',
16
+ },
17
+ {
18
+ name: 'Ajouter des boissons à la chronologie',
19
+ text: 'Entrez le volume individuel, le pourcentage d\'alcool par volume (degré) et l\'heure de consommation relative.',
20
+ },
21
+ {
22
+ name: 'Analyser la courbe d\'alcoolémie résultante',
23
+ text: 'Consultez le graphique pour voir la concentration d\'alcool dans le sang pendant 12 heures.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Qu\'est-ce que la formule de Widmark et comment est-elle utilisée en médecine légale ?',
31
+ answer: 'La formule de Widmark est un modèle mathématique développé par Erik M. P. Widmark en 1932. Elle estime la concentration d\'alcool dans le sang en fonction de la masse d\'alcool consommée, du poids corporel, d\'un facteur de distribution (r) et d\'une élimination linéaire au fil du temps. Les toxicologues légistes utilisent cette formule pour effectuer des calculs rétrogrades afin d\'estimer le taux d\'alcoolémie d\'un suspect au moment d\'un accident ou d\'une infraction.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'Comment la nourriture affecte-t-elle la courbe de taux d\'alcoolémie ?',
36
+ answer: 'La nourriture dans l\'estomac ralentit la vidange gastrique, ce qui empêche l\'alcool de passer rapidement dans l\'intestin grêle, le site principal d\'absorption. Dans notre simulation, ce retard est modélisé en réduisant la constante de vitesse d\'absorption (ka), ce qui décale le pic d\'alcoolémie et réduit considérablement sa valeur maximale.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Pourquoi l\'élimination de l\'alcool suit-elle une cinétique d\'ordre zéro ?',
41
+ answer: 'La plupart des médicaments sont éliminés selon une cinétique de premier ordre (proportionnelle à la concentration). L\'alcool suit une cinétique d\'ordre zéro car l\'enzyme principale responsable de son métabolisme, l\'alcool déshydrogénase (ADH), est saturée à des concentrations très basses (environ 0,02 g/L). Ainsi, le foie métabolise l\'alcool à une vitesse maximale constante.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Quels facteurs biologiques influencent le facteur de distribution r de Widmark ?',
46
+ answer: 'Le facteur r représente le rapport entre l\'eau corporelle et le poids total. L\'éthanol étant hydrophile et lipophobe, il se dissout uniquement dans l\'eau. Comme le tissu musculaire contient beaucoup d\'eau et le tissu adipeux très peu, les personnes ayant une masse grasse plus élevée ou un état de déshydratation présentent un volume de distribution plus petit, ce qui augmente le taux d\'alcoolémie.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Puis-je utiliser ce simulateur pour prouver légalement que je pouvais conduire ?',
51
+ answer: 'Non. Ce simulateur est un outil éducatif. Dans la réalité, la génétique enzymatique, l\'état de santé du foie, les médicaments, la fatigue et les repas réels créent des variations majeures. Vous ne devez jamais vous fier à un modèle mathématique pour évaluer votre aptitude à conduire.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: 'Profil du sujet',
61
+ weight: 'Poids (kg)',
62
+ sex: 'Sexe biologique',
63
+ male: 'Homme',
64
+ female: 'Femme',
65
+ hydration: 'Niveau d\'hydratation',
66
+ hydrationLow: 'Faible',
67
+ hydrationNormal: 'Normal',
68
+ hydrationHigh: 'Élevé',
69
+ stomachState: 'Contenu de l\'estomac',
70
+ stomachEmpty: 'Vide (Absorption rapide)',
71
+ stomachLight: 'Repas léger (Absorption moyenne)',
72
+ stomachFull: 'Repas complet (Absorption lente)',
73
+ drinksTimeline: 'Chronologie de consommation',
74
+ addDrink: 'Ajouter une boisson',
75
+ drinkVolume: 'Volume (ml)',
76
+ drinkAbv: 'Degré (% vol)',
77
+ drinkTime: 'Temps (Heure)',
78
+ drinksList: 'Boissons consommées',
79
+ remove: 'Supprimer',
80
+ beer: 'Bière (330ml, 5%)',
81
+ wine: 'Vin (150ml, 12%)',
82
+ spirits: 'Spiritueux (40ml, 40%)',
83
+ peakBac: 'Pic de BAC',
84
+ timeToSober: 'Temps de dégrisement',
85
+ sober: 'Sobre',
86
+ currentBac: 'BAC actuel',
87
+ drivingLimitAlert: 'Statut légal de conduite',
88
+ safeLimit: 'Sous la limite',
89
+ warningLimit: 'Avertissement dépassé',
90
+ dangerLimit: 'Danger dépassé',
91
+ graphTitle: 'Taux d\'alcoolémie sur 12 heures',
92
+ timeAxisLabel: 'Temps (Heures)',
93
+ bacAxisLabel: 'Alcoolémie (g/L)',
94
+ legalLimitText: 'Limite de conduite standard',
95
+ noDrinksText: 'Ajoutez des boissons pour simuler la courbe.',
96
+ hours: 'heures',
97
+ soberStatus: 'Sobre dans {time} heures',
98
+ neverSober: 'Dépasse 12 heures',
99
+ noteDisclaimer: 'Simulation éducative uniquement. Ne pas conduire après avoir consommé de l\'alcool.',
100
+ noteWidmark: 'Basé sur l\'équation de Widmark et une élimination hépatique d\'ordre zéro.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Toxicologie médico-légale et pharmacocinétique de l\'éthanol',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'La compréhension de l\'<strong>absorption, de la distribution et de l\'élimination de l\'éthanol</strong> est essentielle en médecine légale et pour la reconstruction des accidents de la route. Lorsque de l\'alcool est consommé, il descend par l\'œsophage jusqu\'à l\'estomac, où une faible fraction est absorbée. Cependant, la majeure partie de l\'absorption s\'effectue dans le duodénum et l\'intestin grêle en raison de leur grande surface. La vitesse de vidange gastrique est le facteur limitant principal, ce qui explique pourquoi la présence de nourriture réduit et retarde le pic de la courbe de taux d\'alcoolémie.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Ce simulateur interactif implémente les équations classiques d\'Erik M. P. Widmark avec un modèle compartimental continu sur 12 heures. En ajustant le poids, le sexe et l\'hydratation, les utilisateurs visualisent l\'accumulation et le déclin linéaire de la concentration d\'alcool.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: 'Dérivation mathématique de l\'équation de Widmark',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'L\'équation fondamentale de Widmark calcule la concentration d\'alcool dans le sang en supposant une absorption instantanée: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. Ici, <em>A</em> est la masse d\'éthanol pur en grammes, <em>W</em> est le poids corporel en kg, et <em>r</em> est le facteur de distribution (volume de distribution). La variable <em>&beta;</em> représente le taux d\'élimination par heure et <em>t</em> est le temps écoulé.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Pour convertir le volume de boisson en grammes d\'alcool pur, on multiplie le volume en millilitres par le degré d\'alcool (ABV) et par la densité de l\'éthanol (0,8 g/ml). Par exemple, 330 ml de bière à 5% contient 13,2 g d\'éthanol. Cette masse est diluée dans l\'eau corporelle totale du sujet. Le simulateur adapte le facteur r selon le sexe (0,68 pour les hommes et 0,55 pour les femmes) et le niveau d\'hydratation.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Facteurs physiologiques influençant le volume de distribution',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'Le volume de distribution de l\'éthanol dépend de la composition corporelle. L\'éthanol est hydrophile et se répartit dans l\'eau corporelle. Les muscles contiennent environ 75% d\'eau, tandis que le tissu adipeux en contient très peu. Ainsi, un sujet musclé aura un facteur r plus grand et un pic d\'alcoolémie plus faible qu\'un sujet de même poids ayant plus de masse grasse. La déshydratation diminue l\'eau corporelle totale, ce qui rétrécit le volume de distribution et augmente le pic de concentration pour une même dose.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Variable physiologique', 'Mécanisme biologique', 'Effet pharmacocinétique', 'Implications médico-légales'],
141
+ rows: [
142
+ ['Poids corporel', 'Détermine la masse totale du pool d\'eau corporelle.', 'Inversement proportionnel à la concentration maximale d\'alcool.', 'Établit la base de dilution pour les calculs rétrogrades.'],
143
+ ['Sexe biologique', 'Influence le ratio muscle/graisse typique.', 'Le facteur r est plus bas chez les femmes (0,55), augmentant le pic.', 'Explique la susceptibilité physique accrue chez les femmes.'],
144
+ ['Hydratation', 'Modifie le volume d\'eau libre dans le corps.', 'La déshydratation baisse r de 0,05, élevant la courbe.', 'Ajuste la tolérance mathématique selon l\'état physique.'],
145
+ ['Contenu gastrique', 'La nourriture ralentit la vidange de l\'estomac.', 'Diminue la vitesse d\'absorption ka, aplatissant le pic.', 'Explique les taux bas après des repas copieux.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Cinétique d\'élimination d\'ordre zéro',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Une fois dans le sang, l\'éthanol est métabolisé par le foie, principalement par l\'alcool déshydrogénase (ADH). Cette enzyme se sature à des taux très bas (0,02 g/L), ce qui produit une cinétique d\'élimination d\'ordre zéro: le foie élimine une quantité fixe d\'alcool par heure, quelle que soit la quantité ingérée. La vitesse d\'élimination moyenne acceptée est de 0,15 g/L par heure, ce qui engendre la décroissance linéaire caractéristique sur le graphique.',
156
+ },
157
+ ],
158
+ faq,
159
+ bibliography,
160
+ howTo,
161
+ schemas: [
162
+ {
163
+ '@context': 'https://schema.org',
164
+ '@type': 'SoftwareApplication',
165
+ name: title,
166
+ description,
167
+ applicationCategory: 'ForensicApplication',
168
+ operatingSystem: 'Any',
169
+ },
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'FAQPage',
173
+ mainEntity: faq.map((item) => ({
174
+ '@type': 'Question',
175
+ name: item.question,
176
+ acceptedAnswer: {
177
+ '@type': 'Answer',
178
+ text: item.answer,
179
+ },
180
+ })),
181
+ },
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'HowTo',
185
+ name: title,
186
+ step: howTo.map((step) => ({
187
+ '@type': 'HowToStep',
188
+ name: step.name,
189
+ text: step.text,
190
+ })),
191
+ },
192
+ ],
193
+ };