@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.
- package/package.json +69 -0
- package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
- package/scripts/postinstall.mjs +27 -0
- package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
- package/src/category/i18n/de.ts +55 -0
- package/src/category/i18n/en.ts +55 -0
- package/src/category/i18n/es.ts +55 -0
- package/src/category/i18n/fr.ts +55 -0
- package/src/category/i18n/id.ts +55 -0
- package/src/category/i18n/it.ts +55 -0
- package/src/category/i18n/ja.ts +56 -0
- package/src/category/i18n/ko.ts +56 -0
- package/src/category/i18n/nl.ts +55 -0
- package/src/category/i18n/pl.ts +55 -0
- package/src/category/i18n/pt.ts +55 -0
- package/src/category/i18n/ru.ts +55 -0
- package/src/category/i18n/sv.ts +55 -0
- package/src/category/i18n/tr.ts +55 -0
- package/src/category/i18n/zh.ts +56 -0
- package/src/category/index.ts +48 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +10 -0
- package/src/entries.ts +48 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +29 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +162 -0
- package/src/pages/[locale].astro +261 -0
- package/src/pages/index.astro +3 -0
- package/src/tests/diacritics_density.test.ts +140 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/locale_completeness.test.ts +24 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tests/seo_length.test.ts +46 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +16 -0
- package/src/tests/widmark.test.ts +28 -0
- package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
- package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
- package/src/tool/forensic-age-estimator/component.astro +321 -0
- package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
- package/src/tool/forensic-age-estimator/entry.ts +32 -0
- package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
- package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
- package/src/tool/forensic-age-estimator/index.ts +11 -0
- package/src/tool/forensic-age-estimator/logic.ts +81 -0
- package/src/tool/forensic-age-estimator/seo.astro +15 -0
- package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
- package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
- package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
- package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
- package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
- package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
- package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
- package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
- package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
- package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
- package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
- package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
- package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
- package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
- package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
- package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
- package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
- package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
- package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
- package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
- package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
- package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
- package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
- package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
- package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
- package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
- package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
- package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
- package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
- package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
- package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
- package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
- package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
- package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
- package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
- package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
- package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
- package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
- package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
- package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
- package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
- package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
- package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
- package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
- package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
- package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
- package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
- package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
- package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
- package/src/tool/forensic-sex-determinator/component.astro +463 -0
- package/src/tool/forensic-sex-determinator/entry.ts +32 -0
- package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
- package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
- package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
- package/src/tool/forensic-sex-determinator/index.ts +11 -0
- package/src/tool/forensic-sex-determinator/logic.ts +89 -0
- package/src/tool/forensic-sex-determinator/seo.astro +15 -0
- package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
- package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
- package/src/tool/forensic-stature-estimator/component.astro +49 -0
- package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
- package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
- package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
- package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
- package/src/tool/forensic-stature-estimator/entry.ts +32 -0
- package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
- package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
- package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
- package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
- package/src/tool/forensic-stature-estimator/index.ts +11 -0
- package/src/tool/forensic-stature-estimator/logic.ts +119 -0
- package/src/tool/forensic-stature-estimator/script.ts +288 -0
- package/src/tool/forensic-stature-estimator/seo.astro +15 -0
- package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
- package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
- package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
- package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
- package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
- package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
- package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
- package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
- package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
- package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
- package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
- package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
- package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
- package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
- package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
- package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
- package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
- package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
- package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
- package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
- package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
- package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
- package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
- package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
- package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
- package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
- package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
- package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
- package/src/tools.ts +27 -0
- 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 = 'simulador-alcoolemia-widmark';
|
|
5
|
+
const title = 'Simulador de Concentração de Álcool Widmark';
|
|
6
|
+
const description = 'Calcule e simule a absorção, distribuição e eliminação de etanol no corpo humano com a fórmula de Widmark.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Configurar perfil físico do sujeito',
|
|
11
|
+
text: 'Insira o peso corporal, sexo biológico e nível de hidratação. Estas variáveis biológicas calculam o fator Widmark (r), que dita o volume de distribuição do etanol no corpo.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Definir estado do estômago',
|
|
15
|
+
text: 'Escolha entre estômago vazio, refeição leve ou refeição completa. Isto ajusta a constante de velocidade de absorção (ka) para mostrar o efeito de atraso do alimento na curva de alcoolemia.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Adicionar bebidas à linha do tempo',
|
|
19
|
+
text: 'Insira bebidas individuais especificando o volume em mililitros, teor alcoólico (ABV) e a hora do consumo em relação ao início da simulação.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Analisar a curva de alcoolemia',
|
|
23
|
+
text: 'Inspecione o gráfico de concentração de álcool no sangue (BAC) ao longo de 12 horas. Compare o pico máximo, tempo de absorção e tempo para a sobriedade.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'O que é a fórmula de Widmark e como é usada na toxicologia forense?',
|
|
31
|
+
answer: 'A fórmula de Widmark é um modelo matemático desenvolvido por Erik M. P. Widmark em 1932. Ela estima a concentração de álcool no sangue com base na massa de álcool consumida, peso corporal, um fator de distribuição (r) e uma taxa de eliminação linear. Peritos forenses usam esta fórmula para realizar cálculos retrospectivos em acidentes.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Como a comida no estômago afeta a curva de alcoolemia?',
|
|
36
|
+
answer: 'A comida no estômago retarda o esvaziamento gástrico, atrasando a entrada do álcool no intestino delgado (principal local de absorção). Na simulação, isso é modelado reduzindo a constante de velocidade de absorção (ka), deslocando o pico alcoólico para mais tarde e reduzindo a concentração máxima.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Por que a eliminação do álcool segue uma cinética de ordem zero?',
|
|
41
|
+
answer: 'A maioria dos medicamentos é eliminada por cinética de primeira ordem. O álcool segue uma cinética de ordem zero porque a principal enzima hepática encarregada de seu metabolismo, a álcool desidrogenase (ADH), satura-se com níveis muito baixos (cerca de 0,02 g/L). Assim, o fígado limpa o álcool a uma taxa máxima constante.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Quais fatores biológicos causam variações no fator de Widmark r?',
|
|
46
|
+
answer: 'O fator r representa a proporção de água corporal em relação ao peso total. Como o etanol é hidrofílico e lipofóbico, ele se dissolve apenas na água. O tecido muscular contém muita água e o tecido adiposo (gordura) quase nada. Indivíduos com mais gordura ou desidratados têm menor volume de distribuição e maior BAC.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'Posso usar este simulador para provar legalmente minha capacidade de dirigir?',
|
|
51
|
+
answer: 'De forma alguma. Este simulador é uma ferramenta estritamente educativa. Na realidade física de cada indivíduo, fatores como genética enzimática, saúde hepática, medicamentos e refeições introduzem enorme variabilidade. Nunca confie em equações matemáticas para decidir se está apto a dirigir.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
subjectProfile: 'Perfil',
|
|
61
|
+
weight: 'Peso (kg)',
|
|
62
|
+
sex: 'Sexo biológico',
|
|
63
|
+
male: 'Masculino',
|
|
64
|
+
female: 'Feminino',
|
|
65
|
+
hydration: 'Nível de hidratação',
|
|
66
|
+
hydrationLow: 'Baixo',
|
|
67
|
+
hydrationNormal: 'Normal',
|
|
68
|
+
hydrationHigh: 'Alto',
|
|
69
|
+
stomachState: 'Conteúdo estomacal',
|
|
70
|
+
stomachEmpty: 'Vazio (Rápido)',
|
|
71
|
+
stomachLight: 'Refeição leve (Médio)',
|
|
72
|
+
stomachFull: 'Refeição completa (Lento)',
|
|
73
|
+
drinksTimeline: 'Cronologia de consumo',
|
|
74
|
+
addDrink: 'Adicionar bebida',
|
|
75
|
+
drinkVolume: 'Volume (ml)',
|
|
76
|
+
drinkAbv: 'Teor alcoólico (% vol)',
|
|
77
|
+
drinkTime: 'Tempo (Hora)',
|
|
78
|
+
drinksList: 'Bebidas consumidas',
|
|
79
|
+
remove: 'Remover',
|
|
80
|
+
beer: 'Cerveja (330ml, 5%)',
|
|
81
|
+
wine: 'Vinho (150ml, 12%)',
|
|
82
|
+
spirits: 'Destilados (40ml, 40%)',
|
|
83
|
+
peakBac: 'Pico de BAC',
|
|
84
|
+
timeToSober: 'Tempo para sobriedade',
|
|
85
|
+
sober: 'Sóbrio',
|
|
86
|
+
currentBac: 'BAC atual',
|
|
87
|
+
drivingLimitAlert: 'Status de condução',
|
|
88
|
+
safeLimit: 'Abaixo do limite',
|
|
89
|
+
warningLimit: 'Limite de alerta excedido',
|
|
90
|
+
dangerLimit: 'Limite de perigo excedido',
|
|
91
|
+
graphTitle: 'Concentração de álcool no sangue em 12 horas',
|
|
92
|
+
timeAxisLabel: 'Tempo (Horas)',
|
|
93
|
+
bacAxisLabel: 'Tasso (g/L)',
|
|
94
|
+
legalLimitText: 'Limite legal padrão',
|
|
95
|
+
noDrinksText: 'Adicione bebidas para simular.',
|
|
96
|
+
hours: 'horas',
|
|
97
|
+
soberStatus: 'Sóbrio em {time} horas',
|
|
98
|
+
neverSober: 'Excede 12h',
|
|
99
|
+
noteDisclaimer: 'Apenas para fins educativos. Não dirija após beber.',
|
|
100
|
+
noteWidmark: 'Baseado na fórmula de Widmark e metabolismo linear do fígado.',
|
|
101
|
+
},
|
|
102
|
+
seo: [
|
|
103
|
+
{
|
|
104
|
+
type: 'title',
|
|
105
|
+
text: 'Toxicologia Forense e Farmacocinética do Etanol',
|
|
106
|
+
level: 2,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'A compreensão da <strong>absorção, distribuição e eliminação do etanol</strong> é essencial na ciência forense e reconstrução de acidentes de trânsito. Após a ingestão, o álcool desloca-se pelo esôfago até o estômago, onde ocorre uma pequena absorção direta. A maior parte do etanol é absorvida no duodeno devido à sua grande área de superfície. A taxa com que o estômago esvazia o seu conteúdo é o principal fator limitador da absorção de álcool, o que justifica a grande influência da comida no pico de alcoolemia.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: 'Este simulador dinâmico implementa as equações de Erik Widmark para modelar a concentração de álcool no sangue durante 12 horas. Estudantes e profissionais forenses podem testar o impacto de diferentes perfis de hidratação, massa corporal e estômago cheio na taxa de declínio metabólico.',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'title',
|
|
118
|
+
text: 'A Equação de Widmark e Cinética Hepática',
|
|
119
|
+
level: 3,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: 'A equação clássica de Widmark calcula o BAC teórico: <strong>BAC = (A / (W * r)) - (β * t)</strong>. Onde A representa os gramas de álcool puro, W o peso corporal em kg, r o fator de distribuição biológico (0,68 para homens e 0,55 para mulheres) e β a taxa de eliminação por hora.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'O metabolismo do álcool pelo fígado ocorre por meio de cinética de ordem zero devido à saturação rápida da enzima álcool desidrogenase (ADH). Isto significa que o fígado limpa o álcool a uma taxa linear e constante, tipicamente 0,15 g/L por hora, produzindo uma descida em linha reta na representação gráfica do simulador.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'title',
|
|
131
|
+
text: 'Variáveis Fisiológicas e o Volume de Distribuição',
|
|
132
|
+
level: 3,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: 'O volume de distribuição do etanol depende da quantidade de água no organismo. Como o álcool é solúvel em água mas insolúvel em gordura, indivíduos com maior massa muscular apresentam maior volume de distribuição (maior fator r) e menores picos alcoólicos. A desidratação reduz a água livre corporal total, elevando o pico de concentração.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'table',
|
|
140
|
+
headers: ['Variável Fisiológica', 'Mecanismo Biológico', 'Efeito Farmacocinético', 'Importância Forense'],
|
|
141
|
+
rows: [
|
|
142
|
+
['Peso Corporal', 'Determina a escala do pool total de água no corpo.', 'Inversamente proporcional à concentração de pico de BAC.', 'Base de cálculo para reconstruções retrospectivas forenses.'],
|
|
143
|
+
['Sexo Biológico', 'Influencia a proporção típica de massa muscular e gordura.', 'O fator r é menor nas mulheres (0,55) que nos homens (0,68).', 'Explica a susceptibilidade biológica aumentada nas mulheres.'],
|
|
144
|
+
['Estado de Hidratação', 'Altera o volume de água livre nos tecidos.', 'A desidratação reduz r em 0,05, elevando o pico da curva.', 'Ajusta o cálculo matemático sob esforço ou desidratação.'],
|
|
145
|
+
['Lado Gástrico', 'Alimentos retardam o esvaziamento do estômago.', 'Diminui a constante de velocidade ka, achatando o pico.', 'Explica alcoolemias baixas mesmo após ingestão moderada.'],
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'title',
|
|
150
|
+
text: 'Cinética de Eliminação de Ordem Zero',
|
|
151
|
+
level: 3,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'paragraph',
|
|
155
|
+
html: 'O fígado processa a maior parte do álcool no sangue. Devido à rápida saturação da ADH, a taxa de eliminação independe da concentração no sangue. A média forense aceita internacionalmente (β<sub>60</sub>) é de 0,15 g/L por hora. Esta eliminação constante produz a descida linear e reta característica da curva até a sobriedade.',
|
|
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 = 'kalkulyator-alkogolya-vidmarka';
|
|
5
|
+
const title = 'Симулятор Концентрации Алкоголя по Видмарку';
|
|
6
|
+
const description = 'Симуляция абсорбции, распределения и выведения алкоголя в организме человека по формуле Видмарка.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Настройте физические параметры субъекта',
|
|
11
|
+
text: 'Введите вес тела, биологический пол и уровень гидратации. Эти параметры определяют фактор Видмарка (r), отражающий объем распределения этанола в организме.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Задайте состояние наполненности желудка',
|
|
15
|
+
text: 'Выберите пустой желудок, легкий или плотный прием пищи. Это динамически изменит константу скорости всасывания (ka), демонстрируя влияние еды на форму кривой BAC.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Добавьте напитки на временную шкалу',
|
|
19
|
+
text: 'Введите объем в миллилитрах, процент крепости (ABV) и время употребления напитка относительно начала симуляции.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Анализируйте кривую концентрации алкоголя',
|
|
23
|
+
text: 'Изучите график концентрации алкоголя в крови (BAC) на протяжении 12 часов. Сравните пиковый уровень, время его достижения и общее время выведения.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Что такое формула Видмарка и как она используется в судебной медицине?',
|
|
31
|
+
answer: 'Формула Видмарка представляет собой математическую модель, созданную Эриком Видмарком в 1932 году. Она оценивает концентрацию алкоголя в крови на основе массы чистого алкоголя, массы тела, фактора распределения (r) и скорости элиминации. Токсикологи используют ее для ретроспективных расчетов уровня алкоголя на момент происшествия.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Как пища в желудке влияет на форму кривой концентрации алкоголя?',
|
|
36
|
+
answer: 'Пища задерживает эвакуацию содержимого желудка в тонкий кишечник (основное место всасывания). В нашей симуляции это выражается в снижении константы скорости абсорбции (ka), что смещает пик концентрации во времени на более поздний срок и существенно снижает его максимальное значение.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Почему выведение алкоголя идет по кинетике нулевого, а не первого порядка?',
|
|
41
|
+
answer: 'Большинство лекарств выводится по первому порядку (скорость пропорциональна концентрации). Спирт выводится по нулевому порядку, так как ключевой фермент печени (алкогольдегидрогеназа - АДГ) полностью насыщается при крайне низких концентрациях (около 0,02 г/л). В результате печень окисляет алкоголь с постоянной максимальной скоростью.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Какие биологические факторы вызывают индивидуальные различия фактора Видмарка r?',
|
|
46
|
+
answer: 'Фактор r выражает долю общей воды тела в массе субъекта. Поскольку этанол гидрофилен и липофобен, он растворяется только в воде. Мышцы содержат около 75% воды, а жир практически не содержит. У людей с избыточным весом или при дегидратации фактор r ниже, а пиковый уровень алкоголя выше.',
|
|
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: 'Вес (кг)',
|
|
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: 'Объем (мл)',
|
|
76
|
+
drinkAbv: 'Крепость (% об.)',
|
|
77
|
+
drinkTime: 'Время (Час)',
|
|
78
|
+
drinksList: 'Употребленные напитки',
|
|
79
|
+
remove: 'Удалить',
|
|
80
|
+
beer: 'Пиво (330мл, 5%)',
|
|
81
|
+
wine: 'Вино (150ml, 12%)',
|
|
82
|
+
spirits: 'Крепкий алкоголь (40мл, 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: 'Промилле (г/л)',
|
|
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> является фундаментальным требованием в судебной медицине и при реконструкции дорожно-транспортных происшествий. После употребления спирт проходит по пищеводу в желудок, где всасывается лишь незначительная часть. Основная часть всасывается в двенадцатиперстной кишке и тонком кишечнике из-за их колоссальной площади поверхности. Скорость эвакуации содержимого желудка выступает ключевым лимитирующим фактором, объясняя, почему пища в желудке сглаживает кривую BAC.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: 'Интерактивный симулятор реализует уравнения Эрика Видмарка в сочетании с непрерывной многокамерной моделью на 12-часовом интервале. Изменяя физические параметры субъекта, пользователи могут наглядно проследить накопление и линейное выведение этанола.',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'title',
|
|
118
|
+
text: 'Математический вывод формулы Видмарка',
|
|
119
|
+
level: 3,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: 'Базовое уравнение Видмарка рассчитывает теоретическую концентрацию алкоголя при мгновенном всасывании: <strong>BAC = (A / (W * r)) - (β * t)</strong>. Здесь <em>A</em> - масса чистого этанола в граммах, <em>W</em> - вес субъекта в килограммах, а <em>r</em> - фактор Видмарка (объем распределения). Коэффициент <em>β</em> выражает скорость элиминации в час, а <em>t</em> - время с момента начала абсорбции.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Перевод объема напитка в граммы чистого спирта рассчитывается умножением объема (мл) на крепость (ABV) и плотность этанола (около 0,8 г/мл). Например, 330 мл пива крепостью 5% содержат 13,2 г чистого этанола. Эта масса распределяется по объему общей воды тела. Симулятор динамически подстраивает фактор r под биологический пол (0,68 для мужчин и 0,55 для женщин) и гидратацию.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'title',
|
|
131
|
+
text: 'Физиологические факторы распределения и элиминации',
|
|
132
|
+
level: 3,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: 'Объем распределения этанола зависит от композиции тела. Этанол гидрофилен и липофобен, поэтому распределяется только в водной среде. Мышечная ткань состоит из воды примерно на 75%, тогда как жир почти не содержит воды. Мышечный человек имеет больший фактор r и более низкий пик BAC, чем человек с высоким процентом жира при равном весе. Обезвоживание снижает количество свободной воды, уменьшая объем разбавления этанола и повышая его пиковую концентрацию.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'table',
|
|
140
|
+
headers: ['Параметр', 'Биологический механизм', 'Фармакокинетический эффект', 'Судебное значение'],
|
|
141
|
+
rows: [
|
|
142
|
+
['Масса тела', 'Определяет объем пула общей воды организма.', 'Обратно пропорционален пиковой концентрации алкоголя.', 'Служит отправной точкой для ретроспективных расчетов.'],
|
|
143
|
+
['Биологический пол', 'Определяет соотношение мышечной и жировой ткани.', 'Фактор r ниже у женщин (0,55), увеличивая пик.', 'Объясняет более высокую чувствительность женщин к этанолу.'],
|
|
144
|
+
['Гидратация', 'Изменяет объем свободной воды в компартментах.', 'Обезвоживание снижает r на 0,05, поднимая кривую.', 'Корректирует расчеты при физических нагрузках или жаре.'],
|
|
145
|
+
['Наполнение желудка', 'Пища тормозит продвижение этанола из желудка.', 'Снижает скорость всасывания ka, сглаживая пик.', 'Объясняет низкую концентрацию алкоголя после плотного приема пищи.'],
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'title',
|
|
150
|
+
text: 'Кинетика выведения: Элиминация печенью нулевого порядка',
|
|
151
|
+
level: 3,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'paragraph',
|
|
155
|
+
html: 'После попадания в кровь спирт окисляется в печени с помощью алкогольдегидрогеназы (АДГ). Данный фермент насыщается при крайне низких уровнях (0,02 г/л), переводя процесс в рамки кинетики нулевого порядка. Это означает постоянство массы расщепляемого алкоголя в единицу времени. Стандартная скорость выведения (β<sub>60</sub>) установлена на уровне 0,15 г/л в час, что и обуславливает прямолинейный нисходящий тренд на графике.',
|
|
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 = 'kalkylator-alkoholkoncentration-widmark';
|
|
5
|
+
const title = 'Widmarks Promille Simulator';
|
|
6
|
+
const description = 'Simulera kroppens upptag, distribution och förbränning av alkohol med Widmarks formel.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Ställ in fysiska parametrar',
|
|
11
|
+
text: 'Ange vikt, biologiskt kön samt vätskenivå. Dessa parametrar beräknar Widmark-faktorn (r) som anger fördelningsvolymen för alkohol i kroppen.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Välj magsäckens innehåll',
|
|
15
|
+
text: 'Välj tom mage, lätt måltid eller full måltid. Detta justerar absorptionshastigheten (ka) för att simulera matens dämpande effekt på alkoholkurvan.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Lägg till drycker i tidslinjen',
|
|
19
|
+
text: 'Lägg till drycker genom att specificera volym i milliliter, alkoholhalt (ABV) samt tidpunkten för konsumtionen relativt starttiden.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Analysera kurvan för promillehalt',
|
|
23
|
+
text: 'Följ promillehalt (BAC) över 12 timmar. Jämför högsta värde, tid till maxpromille och tid till nykterhet mot körkortsgränser.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Vad är Widmarks formel och hur används den inom rättsmedicin?',
|
|
31
|
+
answer: 'Widmarks formel är en matematisk modell framtagen av Erik M. P. Widmark år 1932. Den uppskattar blodalkoholkoncentrationen baserat på mängd ren alkohol, kroppsvikt, en fördelningsfaktor (r) samt linjär förbränning. Rättstoxikologer använder den för retroaktiva beräkningar efter olyckor.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Hur påverkar mat i magen formen på alkoholkurvan?',
|
|
36
|
+
answer: 'Mat i magen fördröjer magsäckstömningen till tunntarmen där det huvudsakliga alkoholupptaget sker. I simulationen minskas absorptionshastigheten (ka), vilket flyttar kurvans topp senare i tiden samt sänker det maximala promillevärdet markant.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Varför sker alkoholens nedbrytning via nollte ordningens kinetik?',
|
|
41
|
+
answer: 'De flesta substanser bryts ned via första ordningens kinetik. Alkohol följer nollte ordningens kinetik eftersom enzymet alkoholdehydrogenas (ADH) i levern mättas vid mycket låga promillenivåer (ca 0,02 g/L). Levern förbränner därför alkohol med en konstant maxhastighet.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Vilka biologiska faktorer skapar variation i Widmarks r-faktor?',
|
|
46
|
+
answer: 'R-faktorn motsvarar andelen kroppsvatten i förhållande till totalvikt. Eftersom alkohol är hydrofilt fördelar det sig bara i kroppsvatten. Muskler innehåller mycket vatten medan fettvävnad knappt har något. Dehydrering eller hög fettprocent ger lägre r-faktor och högre BAC.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'Kan jag använda denna simulator för att bevisa att jag är körklar?',
|
|
51
|
+
answer: 'Absolut inte. Simulatorn är endast avsedd för utbildning. Individuell enzymgenetik, leverhälsa, mediciner och matintag ger stora variationer i praktiken. Förlita dig aldrig på en matematisk formel för att bedöma din körförmåga.',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
subjectProfile: 'Profil',
|
|
61
|
+
weight: 'Vikt (kg)',
|
|
62
|
+
sex: 'Biologiskt kön',
|
|
63
|
+
male: 'Man',
|
|
64
|
+
female: 'Kvinna',
|
|
65
|
+
hydration: 'Vätskenivå',
|
|
66
|
+
hydrationLow: 'Låg',
|
|
67
|
+
hydrationNormal: 'Normal',
|
|
68
|
+
hydrationHigh: 'Hög',
|
|
69
|
+
stomachState: 'Magsäckens innehåll',
|
|
70
|
+
stomachEmpty: 'Tom (Snabb)',
|
|
71
|
+
stomachLight: 'Lätt måltid (Medel)',
|
|
72
|
+
stomachFull: 'Full måltid (Långsam)',
|
|
73
|
+
drinksTimeline: 'Konsumtionsförlopp',
|
|
74
|
+
addDrink: 'Lägg till dryck',
|
|
75
|
+
drinkVolume: 'Volym (ml)',
|
|
76
|
+
drinkAbv: 'Alkoholhalt (% vol)',
|
|
77
|
+
drinkTime: 'Tid (Timme)',
|
|
78
|
+
drinksList: 'Konsumerade drycker',
|
|
79
|
+
remove: 'Ta bort',
|
|
80
|
+
beer: 'Öl (330ml, 5%)',
|
|
81
|
+
wine: 'Vin (150ml, 12%)',
|
|
82
|
+
spirits: 'Sprit (40ml, 40%)',
|
|
83
|
+
peakBac: 'Högsta BAC',
|
|
84
|
+
timeToSober: 'Tid till nykter',
|
|
85
|
+
sober: 'Nykter',
|
|
86
|
+
currentBac: 'Aktuell BAC',
|
|
87
|
+
drivingLimitAlert: 'Körstatus',
|
|
88
|
+
safeLimit: 'Under gränsen',
|
|
89
|
+
warningLimit: 'Varningsgräns överskriden',
|
|
90
|
+
dangerLimit: 'Farogräns överskriden',
|
|
91
|
+
graphTitle: 'Blodalkoholkoncentration under 12 timmar',
|
|
92
|
+
timeAxisLabel: 'Tid (Timmar)',
|
|
93
|
+
bacAxisLabel: 'Promille (g/L)',
|
|
94
|
+
legalLimitText: 'Lagstadgad gräns',
|
|
95
|
+
noDrinksText: 'Lägg till drycker för att simulera.',
|
|
96
|
+
hours: 'timmar',
|
|
97
|
+
soberStatus: 'Nykter om {time} tim.',
|
|
98
|
+
neverSober: 'Överstiger 12t',
|
|
99
|
+
noteDisclaimer: 'Endast för utbildningsändamål. Kör aldrig alkoholpåverkad.',
|
|
100
|
+
noteWidmark: 'Baserad på Widmarks ekvation och linjär leverförbränning.',
|
|
101
|
+
},
|
|
102
|
+
seo: [
|
|
103
|
+
{
|
|
104
|
+
type: 'title',
|
|
105
|
+
text: 'Rättstoxikologi och Etylalkoholens Farmakokinetik',
|
|
106
|
+
level: 2,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'Förståelse för <strong>upptag, fördelning och förbränning av etanol</strong> är ett grundkrav inom rättsmedicin och trafikolycksrekonstruktion. Efter konsumtion förs alkohol via matstrupen till magsäcken där en liten andel tas upp direkt. Huvuddelen av upptaget sker dock i tunntarmen på grund av dess mycket stora yta. Magsäckstömningens hastighet är den begränsande faktorn vilket förklarar varför mat i magen dämpar promillekurvan avsevärt.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: 'Denna interaktiva simulator implementerar Erik M. P. Widmarks klassiska formler kombinerat med en kontinuerlig kompartmentmodell över 12 timmar. Genom att ställa in profilparametrar kan användaren följa ackumulation och linjär förbränning.',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'title',
|
|
118
|
+
text: 'Matematisk härledning av Widmarks formel',
|
|
119
|
+
level: 3,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'paragraph',
|
|
123
|
+
html: 'Widmarks ekvation beräknar den teoretiska promillehalten vid direkt upptag: <strong>BAC = (A / (W * r)) - (β * t)</strong>. Här är <em>A</em> alkoholmängd i gram, <em>W</em> kroppsvikt i kg och <em>r</em> Widmarks fördelningsfaktor. Parametern <em>β</em> anger förbränningstakten per timme och <em>t</em> är tiden sedan upptaget startade.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
html: 'Dryckesvolym omvandlas till ren alkohol i gram genom att multiplicera volym (ml) med alkoholhalt (ABV) samt etanolens densitet (0,8 g/ml). En 330 ml öl på 5% innehåller 13,2 g alkohol. Detta fördelas i kroppsvattnet. Simulatorn justerar r-faktorn baserat på biologiskt kön (0,68 för män, 0,55 för kvinnor) samt hydratation.',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'title',
|
|
131
|
+
text: 'Fysiologiska variabler och fördelningsvolym',
|
|
132
|
+
level: 3,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'paragraph',
|
|
136
|
+
html: 'Etanolens fördelningsvolym styrs av kroppssammansättningen. Alkohol är hydrofilt och fördelar sig enbart i kroppsvatten. Muskler består till ca 75% av vatten medan fettvävnad saknar vatten. En muskulös person har en högre r-faktor och får därmed lägre maxpromille än en person med mer fettvävnad vid samma vikt. Dehydrering minskar kroppsvattnet och höjer maxpromillen.',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'table',
|
|
140
|
+
headers: ['Fysiologisk variabel', 'Biologisk mekanism', 'Farmakokinetisk effekt', 'Rättsmedicinsk betydelse'],
|
|
141
|
+
rows: [
|
|
142
|
+
['Kroppsvikt', 'Bestämmer totala volymen kroppsvatten.', 'Omvänt proportionell mot högsta promille BAC.', 'Utgör basen för rättsmedicinska efterkalkyler.'],
|
|
143
|
+
['Biologiskt kön', 'Styr den normala fördelningen av muskler och fett.', 'Faktorn r är lägre hos kvinnor (0,55) än män (0,68).', 'Förklarar biologiskt högre känslighet hos kvinnor.'],
|
|
144
|
+
['Vätskenivå', 'Ändrar tillgängligt fritt vatten i vävnaderna.', 'Dehydrering sänker r med 0,05 vilket höjer kurvan.', 'Används för att korrigera beräkning vid ansträngning.'],
|
|
145
|
+
['Magsäckens status', 'Mat fördröjer tömning till tunntarmen.', 'Minskar absorptionskonstanten ka och plattar till toppen.', 'Förklarar låg promille trots hög konsumtion efter mat.'],
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'title',
|
|
150
|
+
text: 'Nedbrytningstakt: Nollte ordningens kinetik i levern',
|
|
151
|
+
level: 3,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'paragraph',
|
|
155
|
+
html: 'Efter att alkoholen nått blodet bryts den ner i levern av enzymet alkoholdehydrogenase (ADH). Detta enzym mättas vid mycket låga nivåer (0,02 g/L) vilket ger nollte ordningens kinetik. Det innebär att levern förbränner en fast mängd alkohol per timme oavsett berusningsgrad. Det standardiserade medelvärdet (β<sub>60</sub>) är 0,15 g/L per timme vilket ger den linjära minskningen på grafen.',
|
|
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
|
+
};
|