@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,193 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'widmark-blood-alcohol-simulator';
5
+ const title = '위드마크 혈중 알코올 농도 시뮬레이터';
6
+ const description = '위드마크 공식을 사용하여 인체의 알코올 흡수, 분포, 배설 과정을 시뮬레이션합니다.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '신체 파라미터 설정',
11
+ text: '체중, 생물학적 성별, 수분 섭취 상태를 입력합니다. 이 생물학적 특성은 체내 에탄올의 분포 용적을 나타내는 위드마크 인자(r)를 산출하는 데 활용됩니다.',
12
+ },
13
+ {
14
+ name: '위장의 음식 상태 설정',
15
+ text: '공복, 가벼운 식사, 또는 든든한 식사를 선택합니다. 이 설정은 흡수 속도 상수(ka)를 조정하여 음식물이 알코올 농도 곡선에 미치는 완화 및 지연 효과를 보여줍니다.',
16
+ },
17
+ {
18
+ name: '타임라인에 음주 정보 추가',
19
+ text: '음료의 용량(ml), 알코올 도수(ABV) 및 시뮬레이션 시작 기준 마신 시간을 지정하여 개별 음주 기록을 추가합니다.',
20
+ },
21
+ {
22
+ name: '혈중 알코올 농도 곡선 분석',
23
+ text: '12시간 동안의 혈중 알코올 농도(BAC) 변화 그래프를 확인합니다. 최고치, 최고점 도달 시간, 그리고 완전히 깨는 데 걸리는 시간을 비교해 봅니다.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: '위드마크 공식이란 무엇이며 법의학에서 어떻게 사용되나요?',
31
+ answer: '위드마크 공식은 1932년 에릭 M. P. 위드마크가 개발한 수학적 모델입니다. 섭취한 순수 알코올 질량, 체중, 성별 분포 인자(r) 및 선형 제거 속도를 바탕으로 혈중 알코올 농도를 추정합니다. 법독물학자들은 사고 당시의 BAC를 추정하기 위해 이 공식을 사용한 역추적 계산을 수행합니다.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: '위장의 음식물은 혈중 알코올 농도 곡선 모양에 어떤 영향을 미치나요?',
36
+ answer: '위장 속 음식물은 위 배출 속도를 늦추어 알코올이 대부분 흡수되는 소장으로 넘어가는 과정을 지연시킵니다. 시뮬레이션에서는 이를 흡수 속도 상수(ka)의 감소로 모델링하며, 결과적으로 최고 농도 도달 시간을 지연시키고 최고 수치를 크게 낮춥니다.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: '알코올 분해가 1차 속도론이 아닌 영차 속도론을 따르는 이유는 무엇인가요?',
41
+ answer: '대부분의 약물은 농도에 비례해 분해되는 1차 속도론을 따릅니다. 반면 알코올 분해는 알코올 탈수소효소(ADH)가 매우 낮은 농도(약 0.02 g/L)에서 이미 완전히 포화되기 때문에 영차 속도론을 따릅니다. 따라서 간은 혈중 농도와 무관하게 매시간 일정한 최대 속도로 알코올을 분해합니다.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: '위드마크 r 인자의 개인별 편차를 만드는 생물학적 요인은 무엇인가요?',
46
+ answer: '위드마크 r 인자는 총 체수분량 대비 체중의 비율입니다. 에탄올은 극도로 친수성이고 친지성이 낮으므로 오직 체수분에만 분포합니다. 근육 조직은 수분 함량(약 75%)이 높은 반면 지방 조직은 거의 없습니다. 따라서 체지방률이 높거나 탈수 상태인 사람은 분포 용적이 작아져 동일 용량 섭취 시 BAC가 더 높게 나타납니다.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: '이 시뮬레이터 수치를 운전이 가능한 법적 증거로 제출할 수 있나요?',
51
+ answer: '절대 불가합니다. 본 시뮬레이터는 순수 교육용 도구입니다. 실제 상황에서는 개인의 효소 활성도, 간 건강 상태, 약물 복용, 피로도 및 위장 음식 상태 등이 큰 변수를 유발합니다. 수학적 시뮬레이션 결과에만 의존하여 운전 여부를 결정해서는 안 됩니다.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: '사용자 프로필',
61
+ weight: '체중 (kg)',
62
+ sex: '생물학적 성별',
63
+ male: '남성',
64
+ female: '여성',
65
+ hydration: '수분 섭취 상태',
66
+ hydrationLow: '낮음',
67
+ hydrationNormal: '보통',
68
+ hydrationHigh: '높음',
69
+ stomachState: '위장 상태',
70
+ stomachEmpty: '공복 (빠름)',
71
+ stomachLight: '가벼운 식사 (보통)',
72
+ stomachFull: '과식/포식 (느림)',
73
+ drinksTimeline: '음주 타임라인',
74
+ addDrink: '음료 추가',
75
+ drinkVolume: '용량 (ml)',
76
+ drinkAbv: '알코올 도수 (% vol)',
77
+ drinkTime: '시간 (시간)',
78
+ drinksList: '마신 음료 목록',
79
+ remove: '삭제',
80
+ beer: '맥주 (330ml, 5%)',
81
+ wine: '와인 (150ml, 12%)',
82
+ spirits: '양주 (40ml, 40%)',
83
+ peakBac: '최고 BAC',
84
+ timeToSober: '술 깨는 시간',
85
+ sober: '술 깸',
86
+ currentBac: '현재 BAC',
87
+ drivingLimitAlert: '운전 가능 상태',
88
+ safeLimit: '기준치 미만',
89
+ warningLimit: '주의 수치 초과',
90
+ dangerLimit: '운전 금지 수치 초과',
91
+ graphTitle: '12시간 혈중 알코올 농도 변화',
92
+ timeAxisLabel: '시간 (시간)',
93
+ bacAxisLabel: '농도 (g/L)',
94
+ legalLimitText: '표준 단속 기준치',
95
+ noDrinksText: '음주 정보를 추가해 시뮬레이션을 진행하세요.',
96
+ hours: '시간',
97
+ soberStatus: '{time} 시간 후 깨어남',
98
+ neverSober: '12시간 초과',
99
+ noteDisclaimer: '교육용 시뮬레이터입니다. 음주 후 절대 운전하지 마세요.',
100
+ noteWidmark: '위드마크 방정식과 영차 소실 모델에 기초합니다.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: '법독물학 및 에탄올의 약물동태학',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: '에탄올의 <strong>흡수, 분포, 배설</strong>에 관한 생리학적 과정을 이해하는 것은 법의학 및 교통사고 분석의 기초 요건입니다. 섭취된 알코올은 식도를 거쳐 위장으로 이동하며, 여기서 매우 일부만 혈류로 직접 흡수됩니다. 대다수의 에탄올 흡수는 거대한 표면적을 가진 십이지장과 소장 상부에서 급격하게 발생합니다. 위장에서 소장으로 넘어가는 배출 속도가 전체 알코올 흡수의 주된 한계 단계이므로, 위장 내 음식물의 유무가 혈중 농도 상승 곡선을 조절하는 데 핵심적인 역할을 합니다.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: '이 인터랙티브 시뮬레이터는 에릭 M. P. 위드마크의 고전 방정식을 채택하고 12시간 연속 모델을 통해 농도 변화를 예측합니다. 개인 신체 파라미터를 조절하고 마신 음료를 추가해 알코올의 수학적 누적과 간 분해 대사의 선형 감소를 한눈에 모니터링할 수 있습니다.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: '위드마크 방정식의 수학적 유도',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: '기본 위드마크 방정식은 체내 수분 전체에 알코올이 즉각 분산된다고 가정한 이론적 최대 혈중 농도를 계산합니다: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. 여기서 <em>A</em>는 섭취한 순수 에탄올의 질량(g), <em>W</em>는 피실험자의 체중(kg), <em>r</em>은 위드마크 분포 계수입니다. <em>&beta;</em>는 시간당 농도 소실 속도를 나타내며, <em>t</em>는 흡수 시작 시점부터 경과한 시간입니다.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: '음료의 용량(ml)을 순수 알코올 질량(g)으로 환산하려면, 부피에 알코올 도수(ABV)와 에탄올의 밀도(약 0.8 g/ml)를 곱합니다. 가령 5% ABV의 330 ml 맥주는 13.2 g의 순수 에탄올을 함유하고 있습니다. 이 질량은 신체의 총 수분량에 희석됩니다. 시뮬레이터는 성별(남성 0.68, 여성 0.55) 및 탈수 수준에 따라 r 계수를 동적으로 조절합니다.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: '물리적 요인이 분포 용적과 위 배출 속도에 미치는 영향',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: '에탄올의 분포 용적은 체성분에 의해 직접적으로 결정됩니다. 알코올은 극도로 수용성이며 지용성이 낮습니다. 근육 조직은 약 75%의 수분을 포함하는 반면 지방 조직은 거의 함유하지 않습니다. 따라서 동일한 체중이라도 근육질의 개인이 더 큰 희석 인자 r을 가지므로 peak BAC가 체지방률이 높은 사람에 비해 현저히 낮습니다. 또한 탈수 상태는 총 수분량을 줄여 농도 최고점을 상승시킵니다.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['생리학적 변수', '생화학적 메커니즘', '약물동태학적 영향', '법의학적 의의'],
141
+ rows: [
142
+ ['체중', '체내 총 수분 풀의 용량을 결정한다.', 'BAC 최고 농도 수치와 반비례한다.', '소급 계산에서 희석 기준 용적을 제공한다.'],
143
+ ['생물학적 성별', '근육과 지방의 전형적인 비율 차이를 결정한다.', '여성의 r 계수(0.55)는 남성(0.68)보다 낮아 peak BAC가 높다.', '동일 섭취량 대비 여성의 신체적 취약성을 설명한다.'],
144
+ ['수분 상태', '조직 내 자유 수분 용량을 변화시킨다.', '탈수는 r을 0.05 가량 감소시켜 곡선을 상승시킨다.', '고온 노동이나 운동 후 알코올 잔류량 계산을 보정한다.'],
145
+ ['위장 상태', '음식물이 위장의 배출 속도를 늦춘다.', '흡수 상수 ka를 낮추어 농도 곡선 최고점을 완만하게 만든다.', '식후 음주시 알코올 농도가 상대적으로 낮게 측정되는 현상을 설명한다.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: '대사 제거 속도론: 일정한 속도의 영차 간 제거율',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: '체내 분산된 알코올은 주로 간의 ADH 효소에 의해 아세트알데히드로 분해됩니다. 이 효소는 극히 낮은 BAC(0.02 g/L) 수준에서 이미 완벽히 포화되므로, 단위 시간당 일정 질량의 알코올만 제거하는 영차 속도론을 나타냅니다. 법의학적으로 널리 쓰이는 평균 제거율(&beta;<sub>60</sub>)은 시간당 0.15 g/L이며, 이는 소실 과정에서 그래프 상의 일직선 하강 곡선을 생성합니다.',
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 = 'widmark-promillage-calculator';
5
+ const title = 'Widmark Promillage Simulator';
6
+ const description = 'Simuleer de absorptie, distributie en eliminatie van alcohol in het menselijk lichaam met de formule van Widmark.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Stel het subject profiel in',
11
+ text: 'Voer het gewicht, biologisch geslacht en hydratatieniveau in. Deze biologische kenmerken bepalen de Widmark factor (r) die het verdelingsvolume van ethanol in het lichaam dicteert.',
12
+ },
13
+ {
14
+ name: 'Kies de maaginhoud',
15
+ text: 'Selecteer lege maag, lichte maaltijd of volle maaltijd. Dit past de absorptiesnelheidsconstante (ka) aan om het vertragende effect van voedsel op de bloedalcoholcurve te tonen.',
16
+ },
17
+ {
18
+ name: 'Voeg drankjes toe aan de tijdlijn',
19
+ text: 'Voeg individuele drankjes toe door het volume in milliliters, het alcoholpercentage (ABV) en de tijd van consumptie in te voeren.',
20
+ },
21
+ {
22
+ name: 'Analyseer de bloedalcoholcurve',
23
+ text: 'Bekijk de resulterende grafiek over 12 uur. Vergelijk de piekwaarde, de tijd om de piek te bereiken en de totale nuchterheidstijd met de wettelijke limieten.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Wat is de formule van Widmark en hoe wordt deze gebruikt in forensisch onderzoek?',
31
+ answer: 'De formule van Widmark is een wiskundig model ontwikkeld door Erik M. P. Widmark in 1932. Het schat de bloedalcoholconcentratie op basis van de geconsumeerde alcoholmassa, het lichaamsgewicht, een verdelingsfactor (r) en een lineaire eliminatiesnelheid. Forensisch toxicologen gebruiken deze formule voor terugrekeningen naar het tijdstip van een ongeval.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'Hoe beïnvloedt voedsel in de maag de bloedalcoholcurve?',
36
+ answer: 'Voedsel in de maag vertraagt de maaglediging, waardoor alcohol minder snel in de dunne darm (de belangrijkste opnameplaats) terechtkomt. In onze simulatie modelleren we dit door de absorptiesnelheidsconstante (ka) te verlagen, wat de piek verschuift naar een later tijdstip en de maximale piekwaarde aanzienlijk verlaagt.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Waarom verloopt de eliminatie van alcohol via nulde-orde kinetiek?',
41
+ answer: 'De meeste medicijnen worden geklaard via eerste-orde kinetiek (snelheid is evenredig met concentratie). Alcoholklaring volgt nulde-orde kinetiek omdat het belangrijkste leverenzym, alcoholdehydrogenase (ADH), al bij zeer lage concentraties (ongeveer 0,02 g/L) volledig verzadigd raakt. De lever breekt alcohol dus af met een constante maximale snelheid.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Welke biologische factoren veroorzaken variaties in de Widmark-factor r?',
46
+ answer: 'De Widmark-factor r vertegenwoordigt de verhouding tussen lichaamswater en het totale gewicht. Omdat ethanol hydrofiel en lipofoob is, verdeelt het zich uitsluitend in water. Spierweefsel bevat veel water, vetweefsel vrijwel niets. Mensen met een hoger vetpercentage of dehydrogenering hebben een kleiner verdelingsvolume, wat leidt tot een hogere BAC.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Kan ik deze simulator gebruiken om aan te tonen dat ik mag autorijden?',
51
+ answer: 'Absoluut niet. Deze simulator is een educatief hulpmiddel. In de praktijk zorgen enzymatische genetica, levergezondheid, medicijngebruik en maaginhoud voor grote individuele afwijkingen. Vertrouw nooit op een wiskundige berekening om te bepalen of u mag rijden.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: 'Profiel',
61
+ weight: 'Gewicht (kg)',
62
+ sex: 'Biologisch geslacht',
63
+ male: 'Man',
64
+ female: 'Vrouw',
65
+ hydration: 'Hydratatie',
66
+ hydrationLow: 'Laag',
67
+ hydrationNormal: 'Normaal',
68
+ hydrationHigh: 'Hoog',
69
+ stomachState: 'Maaginhoud',
70
+ stomachEmpty: 'Leeg (Snel)',
71
+ stomachLight: 'Lichte maaltijd (Medium)',
72
+ stomachFull: 'Volle maaltijd (Langzaam)',
73
+ drinksTimeline: 'Consumptieverloop',
74
+ addDrink: 'Drankje toevoegen',
75
+ drinkVolume: 'Volume (ml)',
76
+ drinkAbv: 'Alcoholpercentage (% vol)',
77
+ drinkTime: 'Tijd (Uur)',
78
+ drinksList: 'Geconsumeerde drankjes',
79
+ remove: 'Verwijderen',
80
+ beer: 'Bier (330ml, 5%)',
81
+ wine: 'Wijn (150ml, 12%)',
82
+ spirits: 'Sterke drank (40ml, 40%)',
83
+ peakBac: 'Piek BAC',
84
+ timeToSober: 'Tijd tot nuchter',
85
+ sober: 'Nuchter',
86
+ currentBac: 'Actuele BAC',
87
+ drivingLimitAlert: 'Rijstatus',
88
+ safeLimit: 'Onder limiet',
89
+ warningLimit: 'Waarschuwingslimiet overschreden',
90
+ dangerLimit: 'Gevaargrens overschreden',
91
+ graphTitle: 'Bloedalcoholgehalte over 12 uur',
92
+ timeAxisLabel: 'Tijd (Uur)',
93
+ bacAxisLabel: 'Promillage (g/L)',
94
+ legalLimitText: 'Wettelijke limiet',
95
+ noDrinksText: 'Voeg drankjes toe om de curve te simulieren.',
96
+ hours: 'uur',
97
+ soberStatus: 'Nuchter in {time} uur',
98
+ neverSober: 'Langer dan 12u',
99
+ noteDisclaimer: 'Uitsluitend voor educatieve doeleinden. Rijd niet na alcoholgebruik.',
100
+ noteWidmark: 'Gebaseerd op de Widmark-formule en lineaire klaring.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Forensische Toxicologie en Farmacokinetiek van Ethanol',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'De absorptie, distributie en eliminatie van ethanol in het menselijk lichaam zijn cruciale concepten binnen de forensische wetenschap en verkeersongevallenreconstructie. Na consumptie wordt alcohol deels via de maag en hoofdzakelijk via de dunne darm opgenomen. Voedsel in de maag vertraagt de maaglediging en verlaagt daardoor de piekwaarde van de alcoholconcentratie in het bloed aanzienlijk.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Dit model maakt gebruik van de formule van Widmark gecombineerd met een continu compartimentenmodel over 12 uur. Door fysiologische variabelen aan te passen, kan de gebruiker het wiskundige verloop en de daaropvolgende lineaire afname van de bloedalcoholconcentratie visualiseren.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: 'Wiskundige afleiding van de Widmark-formule',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'De formule van Widmark schat de bloedalcoholconcentratie onder aanname van directe opname: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. Waarbij <em>A</em> staat voor de massa pure ethanol in grammen, <em>W</em> het lichaamsgewicht van het subject in kg, en <em>r</em> de Widmark-factor (het verdelingsvolume). De parameter <em>&beta;</em> stelt de stündliche eliminatiesnelheid voor en <em>t</em> is de verstreken tijd.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Om drankvolume om te rekenen naar grammen pure ethanol, vermenigvuldigen we het volume (ml) met het alcoholpercentage (ABV) en de dichtheid van ethanol (0,8 g/ml). Een 330 ml bier op 5% bevat 13,2 gram pure ethanol. Dit wordt verdund op basis van het totale lichaamswater. De simulator past factor r aan op basis van biologisch geslacht (mannen 0,68 en vrouwen 0,55) en de hydratatiestatus.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Fysiologische variabelen en het verdelingsvolume',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'Het verdelingsvolume van ethanol hangt direct samen met de lichaamssamenstelling. Ethanol is hydrofiel en lipofoob, waardoor het zich enkel in water verdeelt. Spieren bevatten circa 75% water, vetweefsel bijna niets. Mensen met een hogere spiermassa hebben een grotere Widmark-factor r en tonen een lagere piekwaarde bij gelijke inname. Dehydratatie verlaagt het totale lichaamswater en verhoogt zo de piekconcentratie.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Fysiologische variabele', 'Biologisch mechanisme', 'Farmacokinetisch effect', 'Forensisch belang'],
141
+ rows: [
142
+ ['Lichaamsgewicht', 'Bepaalt het totale volume van het lichaamswater.', 'Omgekeerd evenredig met de maximale BAC-piek.', 'Vormt de basis voor forensische terugrekeningen.'],
143
+ ['Biologisch geslacht', 'Beïnvloedt de typische verhouding tussen spieren en vet.', 'Factor r is lager bij vrouwen (0,55) dan mannen (0,68).', 'Verklaart de hogere gevoeligheid bij vrouwen bij gelijke doses.'],
144
+ ['Hydratatiestatus', 'Wijzigt de hoeveelheid vrij water in het lichaam.', 'Dehydratatie verlaagt r met 0,05, waardoor de curve stijgt.', 'Ajusteert berekeningen bij zware fysieke inspanning.'],
145
+ ['Maaginhoud', 'Voedsel vertraagt de maaglediging.', 'Verlaagt de absorptieconstante ka en vlakt de curve af.', 'Verklaart lage meetwaarden na een zware maaltijd.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Eliminatiekinetik: Nulde-orde klaring in de lever',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Na opname in het bloed wordt alcohol hoofdzakelijk in de lever afgebroken door het enzym alcoholdehydrogenase (ADH). Dit enzym raakt al bij zeer lage concentraties (0,02 g/L) volledig verzadigd, wat leidt tot een nulde-orde kinetiek. Dit betekent dat de lever een constante hoeveelheid alcohol per uur verwerkt. Het gemiddelde forensische afbraaktempo (&beta;<sub>60</sub>) is vastgesteld op 0,15 g/L per uur. Dit lineaire verloop zorgt voor de rechte dalende lijn op het diagram.',
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 = 'kalkulator-alkoholu-widmarka';
5
+ const title = 'Symulator Stężenia Alkoholu Widmarka';
6
+ const description = 'Symuluj wchłanianie, dystrybucję i eliminację alkoholu w organizmie człowieka przy użyciu wzoru Widmarka.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Skonfiguruj profil fizyczny',
11
+ text: 'Wprowadź wagę ciała, płeć biologiczną oraz stopień nawodnienia. Te parametry biologiczne bezpośrednio obliczają współczynnik Widmarka (r), który określa objętość dystrybucji etanolu w organizmie.',
12
+ },
13
+ {
14
+ name: 'Wybierz zawartość żołądka',
15
+ text: 'Wybierz pusty żołądek, lekki posiłek lub pełny posiłek. Dostosowuje to dynamicznie stałą szybkości wchłaniania (ka), aby pokazać opóźniający wpływ żywności na krzywą stężenia alkoholu.',
16
+ },
17
+ {
18
+ name: 'Dodaj napoje do linii czasu',
19
+ text: 'Dodaj poszczególne napoje, określając objętość w mililitrach, procentową zawartość alkoholu (ABV) oraz godzinę spożycia względem początku symulacji.',
20
+ },
21
+ {
22
+ name: 'Analizuj wykres stężenia alkoholu',
23
+ text: 'Zweryfikuj zmiany stężenia alkoholu we krwi (BAC) w ciągu 12 godzin. Porównaj stężenie szczytowe, czas do jego osiągnięcia oraz prognozowany czas trzeźwienia.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ key: 'faq-1',
30
+ question: 'Czym jest wzór Widmarka i jak jest stosowany w toksykologii sądowej?',
31
+ answer: 'Wzór Widmarka to model matematyczny opracowany przez Erika M. P. Widmarka w 1932 roku. Szacuje on stężenie alkoholu we krwi na podstawie spożytej masy alkoholu, masy ciała, współczynnika dystrybucji (r) oraz liniowego tempa eliminacji. Toksykolodzy sądowi używają go do obliczeń retrospektywnych w celu określenia stanu trzeźwości w momencie wypadku.',
32
+ },
33
+ {
34
+ key: 'faq-2',
35
+ question: 'Jak jedzenie w żołądku wpływa na kształt krzywej stężenia alkoholu?',
36
+ answer: 'Jedzenie w żołądku opóźnia opróżnianie żołądkowe, spowalniając przechodzenie alkoholu do jelita cienkiego, gdzie zachodzi główne wchłanianie. W symulacji zmniejsza to stałą szybkości wchłaniania (ka), co przesuwa szczyt stężenia w czasie i znacznie obniża jego maksymalną wartość.',
37
+ },
38
+ {
39
+ key: 'faq-3',
40
+ question: 'Dlaczego eliminacja alkoholu przebiega według kinetyki rzędu zerowego?',
41
+ answer: 'Większość substancji leczniczych jest eliminowana według kinetyki pierwszego rzędu. Eliminacja alkoholu przebiega według kinetyki rzędu zerowego, ponieważ główny enzym wątrobowy odpowiedzialny za jego rozkład (dehydrogenaza alkoholowa - ADH) ulega nasyceniu przy bardzo niskich stężeniach (około 0,02 g/l). Wątroba przetwarza alkohol ze stałą maksymalną prędkością.',
42
+ },
43
+ {
44
+ key: 'faq-4',
45
+ question: 'Jakie czynniki biologiczne wpływają na współczynnik dystrybucji Widmarka r?',
46
+ answer: 'Współczynnik r reprezentuje stosunek wody w organizmie do masy ciała. Ponieważ etanol rozpuszcza się tylko w wodzie, tkanka mięśniowa (bogata w wodę) zwiększa ten współczynnik, a tkanka tłuszczowa (uboga w wodę) go zmniejsza. Osoby z wyższą zawartością tłuszczu lub odwodnione osiągają wyższe BAC.',
47
+ },
48
+ {
49
+ key: 'faq-5',
50
+ question: 'Czy ten symulator może być prawnym dowodem zdolności do prowadzenia pojazdów?',
51
+ answer: 'Absolutnie nie. Jest to wyłącznie narzędzie edukacyjne. Rzeczywisty metabolizm zależy od genetyki, stanu wątroby, leków i dokładnego składu posiłków. Nigdy nie należy polegać na obliczeniach matematycznych przed decyzją o prowadzeniu pojazdu.',
52
+ },
53
+ ];
54
+
55
+ export const content: ToolLocaleContent = {
56
+ slug,
57
+ title,
58
+ description,
59
+ ui: {
60
+ subjectProfile: 'Profil',
61
+ weight: 'Waga (kg)',
62
+ sex: 'Płeć biologiczna',
63
+ male: 'Mężczyzna',
64
+ female: 'Kobieta',
65
+ hydration: 'Nawodnienie',
66
+ hydrationLow: 'Niskie',
67
+ hydrationNormal: 'Normalne',
68
+ hydrationHigh: 'Wysokie',
69
+ stomachState: 'Zawartość żołądka',
70
+ stomachEmpty: 'Pusty (Szybko)',
71
+ stomachLight: 'Lekki posiłek (Średnio)',
72
+ stomachFull: 'Pełny posiłek (Powoli)',
73
+ drinksTimeline: 'Oś czasu spożycia',
74
+ addDrink: 'Dodaj napój',
75
+ drinkVolume: 'Objętość (ml)',
76
+ drinkAbv: 'Zawartość alkoholu (% vol)',
77
+ drinkTime: 'Czas (Godzina)',
78
+ drinksList: 'Spożyte napoje',
79
+ remove: 'Usuń',
80
+ beer: 'Piwo (330ml, 5%)',
81
+ wine: 'Wino (150ml, 12%)',
82
+ spirits: 'Wódka (40ml, 40%)',
83
+ peakBac: 'Szczyt BAC',
84
+ timeToSober: 'Czas do trzeźwości',
85
+ sober: 'Trzeźwy',
86
+ currentBac: 'Aktualne BAC',
87
+ drivingLimitAlert: 'Status kierowcy',
88
+ safeLimit: 'Poniżej limitu',
89
+ warningLimit: 'Przekroczono próg ostrzegawczy',
90
+ dangerLimit: 'Przekroczono próg niebezpieczny',
91
+ graphTitle: 'Stężenie alkoholu we krwi w ciągu 12 godzin',
92
+ timeAxisLabel: 'Czas (Godziny)',
93
+ bacAxisLabel: 'Promile (g/L)',
94
+ legalLimitText: 'Standardowy limit prawny',
95
+ noDrinksText: 'Dodaj napoje, aby rozpocząć symulację.',
96
+ hours: 'godzin',
97
+ soberStatus: 'Trzeźwy za {time} godz.',
98
+ neverSober: 'Przekracza 12h',
99
+ noteDisclaimer: 'Wyłącznie do celów edukacyjnych. Nigdy nie jedź po alkoholu.',
100
+ noteWidmark: 'Oparte na równaniu Widmarka i liniowej eliminacji.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Toksykologia Sądowa i Farmakokinetyka Etanolu',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'paragraph',
110
+ html: 'Zrozumienie procesów <strong>wchłaniania, dystrybucji i eliminacji etanolu</strong> stanowi kluczowy wymóg w toksykologii sądowej oraz przy rekonstrukcji wypadków drogowych. Po spożyciu alkohol trafia do żołądka, skąd wchłania się jedynie niewielka część. Ponad 80% dawki wchłania się w dwunastnicy i jelicie cienkim ze względu na ich ogromną powierzchnię. Szybkość opróżniania żołądka jest głównym czynnikiem limitującym, co tłumaczy, dlaczego posiłek spłaszcza i opóźnia szczyt krzywej alcoholemia.',
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Prezentowany interaktywny symulator implementuje klasyczne równania Erika Widmarka w połączeniu z ciągłym modelem przedziałowym w oknie 12 godzin. Dopasowanie parametrów fizycznych pozwala zaobserwować akumulację oraz liniowy spadek stężenia we krwi.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ text: 'Matematyczne wyprowadzenie wzoru Widmarka',
119
+ level: 3,
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Podstawowe równanie Widmarka oblicza teoretyczne stężenie alkoholu we krwi przy założeniu natychmiastowego wchłaniania: <strong>BAC = (A / (W * r)) - (&beta; * t)</strong>. W tym równaniu <em>A</em> oznacza masę czystego etanolu w gramach, <em>W</em> wagę ciała w kilogramach, a <em>r</em> współczynnik dystrybucji. Stała <em>&beta;</em> reprezentuje stężeniowy ubytek na godzinę, a <em>t</em> czas od rozpoczęcia eliminacji.',
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Objętość napoju przelicza się na masę czystego etanolu poprzez pomnożenie objętości (ml) przez stężenie (ABV) oraz gęstość etanolu (około 0,8 g/ml). Na przykład 330 ml piwa o mocy 5% zawiera 13,2 g czystego etanolu. Masa ta ulega rozcieńczeniu w całkowitej wodzie organizmu. Symulator dostosowuje współczynnik r do płci (0,68 dla mężczyzn i 0,55 dla kobiet) oraz stopnia nawodnienia.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Zmienne fizjologiczne i objętość dystrybucji',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'Objętość dystrybucji etanolu zależy bezpośrednio od składu ciała. Etanol rozpuszcza się w wodzie, a nie w tłuszczu. Mięśnie zawierają około 75% wody, podczas gdy tkanka tłuszczowa prawie wcale jej nie posiada. Osoba umięśniona ma wyższy współczynnik r i osiąga niższe stężenie szczytowe niż osoba o tej samej wadze z większym poziomem tłuszczu. Odwodnienie zmniejsza ilość wody w organizmie, podnosząc szczyt BAC.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Zmienna fizjologiczna', 'Mechanizm biologiczny', 'Efekt farmakokinetyczny', 'Znaczenie sądowe'],
141
+ rows: [
142
+ ['Masa ciała', 'Określa całkowitą objętość wody w organizmie.', 'Odwrotnie proporcjonalna do maksymalnego BAC.', 'Stanowi punkt wyjścia dla retrospektywnych obliczeń sądowych.'],
143
+ ['Płeć biologiczna', 'Wpływa na typowy stosunek masy mięśniowej do tłuszczowej.', 'Współczynnik r jest niższy u kobiet (0,55), co podnosi szczyt.', 'Wyjaśnia różnice w podatności biologicznej na tę samą dawkę.'],
144
+ ['Stan nawodnienia', 'Zmienia wolną objętość wody w organizmie.', 'Odwodnienie obniża r o 0,05, podnosząc krzywą.', 'Pozwala skorygować obliczenia po dużym wysiłku.'],
145
+ ['Zawartość żołądka', 'Jedzenie spowalnia opróżnianie żołądkowe.', 'Zmniejsza stałą ka, spłaszczając szczyt krzywej.', 'Tłumaczy niskie stężenia przy dużym spożyciu po posiłku.'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Kinetyka eliminacji: Clearance rzędu zerowego w wątrobie',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'Po wniknięciu do krwi alkohol jest metabolizowany w wątrobie przez dehydrogenazę alkoholową (ADH). Enzym ten ulega całkowitemu nasyceniu przy bardzo niskich stężeniach (0,02 g/L), co wymusza kinetykę eliminacji rzędu zerowego. Wątroba rozkłada stałą ilość alkoholu na jednostkę czasu. Średnie tempo eliminacji (&beta;<sub>60</sub>) wynosi w sądownictwie 0,15 g/L na godzinę, co powoduje stały, liniowy spadek stężenia na wykresie.',
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
+ };