@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,185 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'forensischer-vortest-blut-simulator';
|
|
5
|
+
const title = 'Simulator für forensische Blut Vortests';
|
|
6
|
+
const description = 'Simulieren Sie forensische Blut-Vortests mit Kastle-Meyer- und Luminol-Reagenzien. Unterscheiden Sie echtes Blut von häufigen Fehlalarmen.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Probe auswählen',
|
|
11
|
+
text: 'Wählen Sie eine Testprobe aus der Gradilla, die entweder Blut oder ein mögliches Falsch-Positiv-Material darstellt.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Testmethode wählen',
|
|
15
|
+
text: 'Entscheiden Sie sich für den Kastle-Meyer-Farbtest oder den Luminol-Leuchttest.'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Reagenzien auftragen',
|
|
19
|
+
text: 'Geben Sie Tropfen des Kastle-Meyer-Reagenzes und danach Wasserstoffperoxid hinzu oder tragen Sie die Luminollösung direkt auf.'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Reaktion auswerten',
|
|
23
|
+
text: 'Beobachten Sie Farbänderungen oder blaues Leuchten im Dunkeln, um die Reaktion als richtig positiv, falsch positiv oder negativ einzustufen.'
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Warum heißt es Vortest?',
|
|
31
|
+
answer: 'Vortests sind vorläufige Tests, die die mögliche Präsenz von Blut anzeigen. Sie sind sehr empfindlich, aber nicht absolut spezifisch, weshalb sie durch Bestätigungstests im Labor überprüft werden müssen.'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'Was verursacht Fehlalarme beim Kastle-Meyer-Test?',
|
|
36
|
+
answer: 'Der Test nutzt die peroxidaseähnliche Aktivität des Häms. Andere Oxidationsmittel, Metallionen (wie Eisen im Rost) oder Pflanzenperoxidasen (in Kartoffeln) können die Reaktion ebenfalls katalysieren.'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'Wie funktioniert die Luminol-Reaktion?',
|
|
41
|
+
answer: 'Luminol reagiert mit Wasserstoffperoxid in Gegenwart eines Katalysators wie dem Eisen im Hämoglobin. Die Reaktion regt Luminol an, das beim Zurückfallen in den Grundzustand blaues Licht abgibt.'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Kann Haushaltsbleiche ein falsches Ergebnis liefern?',
|
|
46
|
+
answer: 'Ja, Natriumhypochlorit ist ein starkes Oxidationsmittel. Es oxidiert Phenolphthalin oder Luminol direkt ohne Katalysator, wobei die Reaktion schnell verblasst.'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'Was unterscheidet Vortests von Bestätigungstests?',
|
|
51
|
+
answer: 'Vortests sind schnell, günstig und hochsensibel, um Spuren am Tatort zu finden. Bestätigungstests sind hochspezifisch und beweisen die Präsenz von Humanblut zweifelsfrei.'
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
title: 'Bluttest Simulator',
|
|
61
|
+
desc: 'Führen Sie virtuelle Experimente mit Luminol- und Kastle-Meyer-Reagenzien durch, um Blut nachzuweisen und Fehlalarme zu analysieren.',
|
|
62
|
+
configTitle: 'Laborsteuerung',
|
|
63
|
+
sampleLabel: 'Probe auswählen',
|
|
64
|
+
reagentLabel: 'Reagenz auswählen',
|
|
65
|
+
lightsLabel: 'Beleuchtung',
|
|
66
|
+
btnLightsOff: 'Licht ausschalten',
|
|
67
|
+
btnLightsOn: 'Licht einschalten',
|
|
68
|
+
btnReset: 'Schale zurücksetzen',
|
|
69
|
+
resultsTitle: 'Testergebnisse',
|
|
70
|
+
sampleBlood: 'Blutprobe (Kontrolle)',
|
|
71
|
+
sampleRust: 'Rost (Eisenoxid)',
|
|
72
|
+
sampleBleach: 'Bleichmittel (Natriumhypochlorit)',
|
|
73
|
+
samplePotato: 'Kartoffel (Pflanzenperoxidase)',
|
|
74
|
+
sampleSaliva: 'Speichelprobe',
|
|
75
|
+
reagentKM: 'Kastle-Meyer-Reagenz',
|
|
76
|
+
reagentH2O2: 'Wasserstoffperoxid (H2O2)',
|
|
77
|
+
reagentLuminol: 'Luminollösung',
|
|
78
|
+
resultTruePositive: 'Richtig positiv (Blut nachgewiesen)',
|
|
79
|
+
resultFalsePositive: 'Falsch positiv (Fremdkatalysator)',
|
|
80
|
+
resultNegative: 'Negative Reaktion',
|
|
81
|
+
statusLabel: 'Reaktionsstatus',
|
|
82
|
+
reactionLabel: 'Reaktionserklärung',
|
|
83
|
+
dropReagentBtn: 'Tropfen auftragen',
|
|
84
|
+
activeCompounds: 'Aktive Verbindungen',
|
|
85
|
+
reactionSpeed: 'Reaktionsgeschwindigkeit',
|
|
86
|
+
reactionDuration: 'Reaktionsdauer',
|
|
87
|
+
specimenBase: 'Probenbasis',
|
|
88
|
+
kmPending: 'Kastle-Meyer-Reagenz aufgetragen. Wasserstoffperoxid (H2O2) hinzufügen, um den Farbumschlag zu katalysieren.',
|
|
89
|
+
h2o2Only: 'Wasserstoffperoxid aufgetragen. Keine sichtbare Reaktion ohne Kastle-Meyer-Indikator.',
|
|
90
|
+
noReaction: 'Keine Reaktion beobachtet. Die Probe bleibt klar.',
|
|
91
|
+
luminolBlood: 'Sofortiges intensives blaues Leuchten im Dunkeln beobachtet. Häm-Gruppen im Hämoglobin haben das Luminol katalytisch oxidiert. Richtig positiv.',
|
|
92
|
+
luminolBleach: 'Sofortiges, sehr intensives blaues Leuchten beobachtet, das extrem schnell (unter 2 Sekunden) verblasste. Bleichmittel oxidiert Luminol direkt. Falsch positiv.',
|
|
93
|
+
luminolRust: 'Schwaches, mattes blaues Leuchten beobachtet. Metallionen im Rost katalysieren die Oxidation schwach. Verblasst allmählich. Falsch positiv.',
|
|
94
|
+
luminolPotato: 'Keine Lumineszenz. Pflanzenperoxidasen katalysieren unter diesen Bedingungen die Luminol-Oxidation nicht. Negativ.',
|
|
95
|
+
luminolNegative: 'Keine Lumineszenz im Dunkeln beobachtet. Die Verbindung ist für die Luminol-Oxidation nicht katalytisch. Negativ.',
|
|
96
|
+
kmBlood: 'Sofortige rosa Färbung nach Zugabe von Wasserstoffperoxid. Häm im Blut katalysierte die Reduktion von Peroxid und oxidierte Phenolphthalin zu Phenolphthalein. Richtig positiv.',
|
|
97
|
+
kmBleach: 'Sofortiger starker rosa Farbumschlag. Natriumhypochlorit oxidiert Phenolphthalin direkt ohne Peroxid-Katalysator. Falsch positiv.',
|
|
98
|
+
kmRust: 'Langsame, schwache bräunlich-rosa Färbung nach einigen Sekunden. Eisenoxide katalysieren die Reaktion viel langsamer. Falsch positiv.',
|
|
99
|
+
kmPotato: 'Langsame, schwache rosa Färbung nach einer Verzögerung. Pflanzenperoxidasen katalysieren die Reaktion schwach. Falsch positiv.',
|
|
100
|
+
kmNegative: 'Kein Farbumschlag beobachtet. Die Lösung bleibt farblos. Negativ.'
|
|
101
|
+
},
|
|
102
|
+
seo: [
|
|
103
|
+
{
|
|
104
|
+
type: 'title',
|
|
105
|
+
text: 'Vollständiger Leitfaden für forensische Blut Vortests im Labor',
|
|
106
|
+
level: 2
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'Forensische Vortests sind hochempfindliche Screening-Verfahren, die an Tatorten eingesetzt werden, um potenzielle Blutspuren aufzuspüren. Bevor aufwendige DNA-Analysen durchgeführt werden, nutzen Ermittler diese Schnelltests auf Kleidung, Waffen und Oberflächen. Da sie auf der peroxidaseähnlichen Aktivität des Häms basieren, sind sie vorläufig: Ein positives Ergebnis deutet auf Blut hin, erfordert jedoch eine labortechnische Bestätigung. Diese Vortests sind von entscheidender Bedeutung, um wertvolle Zeit und Ressourcen bei der Beweissicherung zu sparen. Sie helfen den Ermittlern vor Ort, verdächtige rote Flecken schnell einzuordnen und biologische Spuren für die spätere forensische Genetik gezielt auszuwählen.'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Der Kastle Meyer Farbumschlagstest',
|
|
115
|
+
level: 3
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'Der Kastle-Meyer-Test (KM) nutzt Phenolphthalin, die reduzierte farblose Form von Phenolphthalein. Zuerst wird das Reagenz auf die Probe aufgetragen. Bei Vorliegen von Blut wirkt Häm als Katalysator. Nach Zugabe von Wasserstoffperoxid (H2O2) oxidiert das Phenolphthalin schnell zu Phenolphthalein, was zu einer rosa Färbung führt. Ein verzögerter Umschlag nach mehr als 15-20 Sekunden gilt als negativ. Diese Reaktion zeichnet sich durch eine extrem hohe Empfindlichkeit aus und kann selbst winzige, unsichtbare Spuren nachweisen. Dennoch bleibt die Reaktion präsumtiv, da chemische Oxidationsmittel den Nachweis direkt aktivieren können.'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'title',
|
|
123
|
+
text: 'Luminol und die Chemilumineszenz',
|
|
124
|
+
level: 3
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'paragraph',
|
|
128
|
+
html: 'Luminol zeigt Chemilumineszenz (Leuchten im Dunkeln), wenn es in alkalischer Lösung mit einem Oxidationsmittel und einem Metallkatalysator reagiert. Das Eisen im Hämoglobin katalysiert diese Reaktion hervorragend. Es entsteht ein angeregtes Aminophthalat-Ion, das beim Entspannen blaues Licht abgibt. Für die Sichtbarkeit muss die Umgebung vollständig abgedunkelt sein. Luminol ist ein unverzichtbares Werkzeug, um gereinigte Tatorte zu untersuchen, da es selbst nach intensiver Reinigung noch mit unsichtbaren Blutrückständen reagiert. Die blaue Lumineszenz lässt sich fotografisch dokumentieren, um das Spurenmuster für die Rekonstruktion des Tathergangs festzuhalten.'
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'table',
|
|
132
|
+
headers: ['Substanz', 'Kastle-Meyer-Reaktionsprofil', 'Luminol-Leuchtprofil', 'Forensische Bewertung'],
|
|
133
|
+
rows: [
|
|
134
|
+
['Blut-Kontrollprobe', 'Sofortige rosa Färbung bei H2O2-Zugabe.', 'Intensives, stabiles blaues Leuchten.', 'Richtig positiv. Häm wirkt als effizienter Katalysator.'],
|
|
135
|
+
['Haushaltsbleiche', 'Sofortiges Rosa noch vor H2O2-Zugabe.', 'Sehr intensives, kurzlebiges Leuchten.', 'Falsch positiv. Starke Oxidationsmittel reagieren direkt.'],
|
|
136
|
+
['Eisenoxid (Rost)', 'Langsame, bräunlich-rosa Färbung.', 'Sehr schwaches, mattes Leuchten.', 'Falsch positiv. Freie Eisenionen katalysieren schwach.'],
|
|
137
|
+
['Kartoffel (Peroxidase)', 'Langsame, schwache rosa Färbung.', 'Keine Lumineszenz feststellbar.', 'Falsch positiv (KM) / Negativ (Luminol).']
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Unterscheidung von Blut und häufigen Fehlalarmen',
|
|
143
|
+
level: 3
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Die Erkennung von Falsch-Positiven ist ein wesentlicher Bestandteil der forensischen Ausbildung. Starke Reinigungsmittel mit Natriumhypochlorit (Bleichmittel) oxidieren Indikatoren direkt und simulieren Blut. Experten unterscheiden sie jedoch durch die Analyse der Reaktionsdynamik: Bleichmittel reagiert ohne Peroxid im KM-Test, und seine Chemilumineszenz mit Luminol zerfällt fast augenblicklich. Pflanzenperoxidasen lassen sich durch Hitze inaktivieren, während Hämoglobin thermostabil bleibt. Diese forensische Differenzierung stellt sicher, dass nur echte biologische Spuren als Beweismittel vor Gericht zugelassen werden.'
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas: [
|
|
154
|
+
{
|
|
155
|
+
'@context': 'https://schema.org',
|
|
156
|
+
'@type': 'SoftwareApplication',
|
|
157
|
+
name: title,
|
|
158
|
+
description,
|
|
159
|
+
applicationCategory: 'ForensicApplication',
|
|
160
|
+
operatingSystem: 'Any'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: {
|
|
169
|
+
'@type': 'Answer',
|
|
170
|
+
text: item.answer
|
|
171
|
+
}
|
|
172
|
+
}))
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
'@context': 'https://schema.org',
|
|
176
|
+
'@type': 'HowTo',
|
|
177
|
+
name: title,
|
|
178
|
+
step: howTo.map((step) => ({
|
|
179
|
+
'@type': 'HowToStep',
|
|
180
|
+
name: step.name,
|
|
181
|
+
text: step.text
|
|
182
|
+
}))
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator';
|
|
5
|
+
const title = 'Forensic Presumptive Blood Test Simulator';
|
|
6
|
+
const description = 'Simulate presumptive blood testing using Kastle-Meyer and Luminol reagents. Distinguish real blood from common false positives like rust, bleach, and plant peroxidasas.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Select a sample specimen',
|
|
11
|
+
text: 'Choose a test sample from the tray, representing either blood or suspected false-positive materials.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Choose a presumptive test method',
|
|
15
|
+
text: 'Decide whether to perform the Kastle-Meyer color change test or the Luminol luminescence test.'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Apply the reagents',
|
|
19
|
+
text: 'Add drops of Kastle-Meyer reagent followed by Hydrogen Peroxide, or apply the Luminol solution directly.'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Interpret the reaction and results',
|
|
23
|
+
text: 'Observe color changes or blue glow in the dark, checking the reaction characteristics to classify it as true positive, false positive, or negative.'
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: 'Why is it called a presumptive test?',
|
|
31
|
+
answer: 'Presumptive tests are preliminary tests that indicate the possible presence of blood based on its catalytic activity. They are highly sensitive but not completely specific, meaning they can yield false positives and must be followed by confirmatory testing.'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: 'What causes a false positive in the Kastle-Meyer test?',
|
|
36
|
+
answer: 'The Kastle-Meyer test relies on the peroxidase-like activity of heme. Any substance that contains chemical oxidizers, metal ions (like iron in rust), or plant peroxidases (like in potatoes or horseradish) can catalyze the reaction and produce a pink color change, resulting in a false positive.'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: 'How does the chemical reaction of Luminol occur?',
|
|
41
|
+
answer: 'Luminol reacts with hydrogen peroxide in the presence of a catalyst (such as the iron in hemoglobin). This reaction oxidizes luminol to an excited state, which releases energy in the form of blue light as it returns to its ground state.'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: 'Can household bleach cause a false positive?',
|
|
46
|
+
answer: 'Yes. Household bleach (sodium hypochlorite) is a strong chemical oxidizer. It directly oxidizes the phenolphthalin in the Kastle-Meyer test or the luminol solution without requiring any catalyst, producing immediate reactions that fade quickly.'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: 'What is the difference between presumptive and confirmatory tests?',
|
|
51
|
+
answer: 'Presumptive tests are fast, cheap, and highly sensitive, used to locate stains at crime scenes. Confirmatory tests (like crystal tests or immunological assays) are highly specific, proving the presence of human blood with absolute certainty.'
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
title: 'Presumptive Blood Test Simulator',
|
|
61
|
+
desc: 'Perform virtual laboratory experiments with Luminol and Kastle-Meyer reagents to detect blood and analyze false positives.',
|
|
62
|
+
configTitle: 'Laboratory Controls',
|
|
63
|
+
sampleLabel: 'Select Sample Specimen',
|
|
64
|
+
reagentLabel: 'Select Reagent',
|
|
65
|
+
lightsLabel: 'Workbench Lighting',
|
|
66
|
+
btnLightsOff: 'Turn Off Lights',
|
|
67
|
+
btnLightsOn: 'Turn On Lights',
|
|
68
|
+
btnReset: 'Reset Dish',
|
|
69
|
+
resultsTitle: 'Presumptive Test Results',
|
|
70
|
+
sampleBlood: 'Blood Sample (Control)',
|
|
71
|
+
sampleRust: 'Rust (Iron Oxide)',
|
|
72
|
+
sampleBleach: 'Bleach (Sodium Hypochlorite)',
|
|
73
|
+
samplePotato: 'Potato (Plant Peroxidase)',
|
|
74
|
+
sampleSaliva: 'Saliva Sample',
|
|
75
|
+
reagentKM: 'Kastle-Meyer Reagent',
|
|
76
|
+
reagentH2O2: 'Hydrogen Peroxide (H2O2)',
|
|
77
|
+
reagentLuminol: 'Luminol Solution',
|
|
78
|
+
resultTruePositive: 'True Positive (Blood Detected)',
|
|
79
|
+
resultFalsePositive: 'False Positive (Non-Blood Catalyst)',
|
|
80
|
+
resultNegative: 'Negative Reaction',
|
|
81
|
+
statusLabel: 'Reaction Status',
|
|
82
|
+
reactionLabel: 'Reaction Explanation',
|
|
83
|
+
dropReagentBtn: 'Apply Drop',
|
|
84
|
+
activeCompounds: 'Active Compounds',
|
|
85
|
+
reactionSpeed: 'Reaction Speed',
|
|
86
|
+
reactionDuration: 'Reaction Duration',
|
|
87
|
+
specimenBase: 'Specimen Base',
|
|
88
|
+
kmPending: 'Kastle-Meyer reagent applied. Add Hydrogen Peroxide (H2O2) to catalyze the color change.',
|
|
89
|
+
h2o2Only: 'Hydrogen Peroxide applied. No visible reaction without Kastle-Meyer indicator.',
|
|
90
|
+
noReaction: 'No reaction observed. The sample remains clear.',
|
|
91
|
+
luminolBlood: 'Intense blue glow observed immediately under dark conditions. Heme groups in hemoglobin catalytically oxidized the luminol. True Positive.',
|
|
92
|
+
luminolBleach: 'Immediate, very intense blue glow observed, which faded extremely quickly (under 2 seconds). Bleach oxidizes luminol directly without requiring catalytic heme. False Positive.',
|
|
93
|
+
luminolRust: 'Weak, dim blue glow observed. Metal ions in iron oxide weakly catalyze the oxidation. Fades gradually. False Positive.',
|
|
94
|
+
luminolPotato: 'No visible luminescence. Plant peroxidases do not possess the proper catalytic structure to oxidize luminol in these conditions. Negative.',
|
|
95
|
+
luminolNegative: 'No luminescence observed in the dark. The compound is non-catalytic for luminol oxidation. Negative.',
|
|
96
|
+
kmBlood: 'Immediate, bright pink coloration observed upon adding Hydrogen Peroxide. Heme in blood catalytically reduced peroxide, oxidizing phenolphthalin to phenolphthalein. True Positive.',
|
|
97
|
+
kmBleach: 'Immediate, strong pink color change. Sodium hypochlorite directly oxidizes phenolphthalin without needing peroxide catalyst. False Positive.',
|
|
98
|
+
kmRust: 'Slow, weak brownish-pink coloration appearing after several seconds. Iron oxides catalyze the reaction at a much slower rate. False Positive.',
|
|
99
|
+
kmPotato: 'Slow, faint pink coloration appearing after a delay. Plant peroxidases weakly catalyze the reaction. False Positive.',
|
|
100
|
+
kmNegative: 'No color change observed. The solution remains colorless. Negative.'
|
|
101
|
+
},
|
|
102
|
+
seo: [
|
|
103
|
+
{
|
|
104
|
+
type: 'title',
|
|
105
|
+
text: 'Complete Guide to Forensic Presumptive Blood Tests',
|
|
106
|
+
level: 2
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'Presumptive blood tests are preliminary, highly sensitive assays used at crime scenes and forensic laboratories to screen for the presence of blood. Before allocating time and resources to DNA sequencing or confirmatory typing, forensic investigators rely on rapid tests to identify potential biological traces on clothing, weapons, and surfaces. Because these assays target the peroxidase-like activity of heme (the iron-containing portion of hemoglobin), they are presumptive: a positive result suggests the presence of blood, but requires secondary confirmatory testing to rule out biochemical mimics.'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'How the Kastle-Meyer Test Works',
|
|
115
|
+
level: 3
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'The Kastle-Meyer (KM) test is a catalytic colorimetric test that utilizes the reduced, colorless form of phenolphthalein, known as phenolphthalin. The reaction sequence is highly specific in its execution: first, the phenolphthalin reagent is applied to the sample. In the presence of blood, the heme group acts as an organic catalyst. When hydrogen peroxide (H2O2) is subsequently introduced, heme catalyzes the oxidation of phenolphthalin back into phenolphthalein, producing an immediate and intense pink color change. A delayed pink coloration (appearing after 15-20 seconds) is generally interpreted as a negative or false positive caused by slow ambient oxidation.'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'title',
|
|
123
|
+
text: 'Luminol and Forensic Chemiluminescence',
|
|
124
|
+
level: 3
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'paragraph',
|
|
128
|
+
html: 'Luminol (C8H7N3O2) is a chemiluminescent chemical compound that emits a distinct blue-cyan glow in the dark when oxidized in the presence of a metal catalyst. Forensic technicians spray a diluted solution of luminol across large crime scene areas. If the solution contacts bloodstains, the iron inside the hemoglobin catalyzes the reaction between luminol and the oxidizing agent (usually hydrogen peroxide). The resulting chemical reaction produces an excited aminophthalate ion, which releases light energy as it returns to its ground state. Because the light emission is of low intensity, the environment must be completely dark to capture the luminescence photographically.'
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'table',
|
|
132
|
+
headers: ['Substance Tested', 'Kastle-Meyer Reaction Profile', 'Luminol Luminescence Profile', 'Forensic Diagnostic Classification'],
|
|
133
|
+
rows: [
|
|
134
|
+
['Human Blood Control', 'Immediate, bright pink coloration on H2O2 addition.', 'Intense, long-lasting blue-cyan glow (up to 8s).', 'True Positive. Heme provides the highly efficient catalytic activity required.'],
|
|
135
|
+
['Household Bleach', 'Immediate pink color change before H2O2 is added.', 'Extremely intense glow that decays in under 2s.', 'False Positive. Strong chemical oxidizers directly oxidize the reagents without a catalyst.'],
|
|
136
|
+
['Iron Oxide (Rust)', 'Slow, weak brownish-pink coloration.', 'Faint, dim blue glow that decays gradually.', 'False Positive. Metal ions catalyze the reactions at a highly reduced efficiency.'],
|
|
137
|
+
['Potato (Plant Peroxidase)', 'Slow, faint pink coloration after a delay.', 'No visible chemiluminescence.', 'False Positive (KM) / Negative (Luminol). Vegetable enzymes lack the structure to trigger luminol.']
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Differentiating Blood from Common False Positives',
|
|
143
|
+
level: 3
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Understanding false positives is crucial for crime scene analysis. Strong cleaning agents like sodium hypochlorite (bleach) directly oxidize indicators, simulating blood. However, forensic experts distinguish them by monitoring the reaction dynamics: bleach causes an immediate reaction without the addition of hydrogen peroxide in the KM test, and its luminol chemiluminescence decays almost instantly. Plant peroxidases (found in horseradish, potatoes, and red onions) also produce false positives but are inactivated by heat, unlike heat-stable hemoglobin. Any presumptive positive must be followed by a confirmatory crystal test (e.g., Takayama test) or immunological assay.'
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas: [
|
|
154
|
+
{
|
|
155
|
+
'@context': 'https://schema.org',
|
|
156
|
+
'@type': 'SoftwareApplication',
|
|
157
|
+
name: title,
|
|
158
|
+
description,
|
|
159
|
+
applicationCategory: 'ForensicApplication',
|
|
160
|
+
operatingSystem: 'Any'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: {
|
|
169
|
+
'@type': 'Answer',
|
|
170
|
+
text: item.answer
|
|
171
|
+
}
|
|
172
|
+
}))
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
'@context': 'https://schema.org',
|
|
176
|
+
'@type': 'HowTo',
|
|
177
|
+
name: title,
|
|
178
|
+
step: howTo.map((step) => ({
|
|
179
|
+
'@type': 'HowToStep',
|
|
180
|
+
name: step.name,
|
|
181
|
+
text: step.text
|
|
182
|
+
}))
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'simulador-prueba-presuntiva-sangre-forense';
|
|
5
|
+
const title = 'Simulador de Prueba Presuntiva de Sangre Forense';
|
|
6
|
+
const description = 'Simula pruebas presuntivas de sangre utilizando Kastle-Meyer y Luminol. Distingue sangre real de falsos positivos comunes como óxido, lejía y peroxidasas vegetales.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Seleccionar una muestra',
|
|
11
|
+
text: 'Elija una muestra de la gradilla para analizar, representando sangre o materiales comunes de falso positivo.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Elegir reactivo',
|
|
15
|
+
text: 'Decida si realizar la prueba colorimétrica de Kastle-Meyer o la prueba de luminiscencia con Luminol.'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Aplicar reactivos',
|
|
19
|
+
text: 'Añada gotas del reactivo Kastle-Meyer seguido de Peróxido de Hidrógeno, o aplique la solución de Luminol directamente.'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Interpretar la reacción',
|
|
23
|
+
text: 'Observe los cambios de color o el brillo azul en la oscuridad para clasificar la reacción como positivo verdadero, falso positivo o negativo.'
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
key: 'faq-1',
|
|
30
|
+
question: '¿Por qué se llama prueba presuntiva?',
|
|
31
|
+
answer: 'Las pruebas presuntivas son análisis preliminares que indican la posible presencia de sangre basándose en su actividad catalítica. Son altamente sensibles pero no completamente específicas, lo que significa que pueden dar falsos positivos y requieren pruebas de confirmación posteriores.'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'faq-2',
|
|
35
|
+
question: '¿Qué causa un falso positivo en la prueba de Kastle-Meyer?',
|
|
36
|
+
answer: 'La prueba de Kastle-Meyer depende de la actividad similar a la peroxidasa del grupo hemo. Cualquier sustancia que contenga oxidantes químicos, iones metálicos (como el hierro en el óxido) o peroxidasas vegetales (como en las patatas) puede catalizar la reacción y producir el color rosa.'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'faq-3',
|
|
40
|
+
question: '¿Cómo ocurre la reacción del Luminol?',
|
|
41
|
+
answer: 'El luminol reacciona con el peróxido de hidrógeno en presencia de un catalizador (como el hierro de la hemoglobina). Esta reacción oxida el luminol a un estado excitado, que libera energía en forma de luz azul al volver a su estado fundamental.'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'faq-4',
|
|
45
|
+
question: '¿Puede la lejía doméstica dar un falso positivo?',
|
|
46
|
+
answer: 'Sí. La lejía doméstica (hipoclorito de sodio) es un fuerte oxidante químico. Oxida directamente la fenolftalina o el luminol sin necesidad de un catalizador, produciendo reacciones inmediatas que se desvanecen rápidamente.'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'faq-5',
|
|
50
|
+
question: '¿Cuál es la diferencia entre pruebas presuntivas y de confirmación?',
|
|
51
|
+
answer: 'Las pruebas presuntivas son rápidas, económicas y muy sensibles, ideales para localizar manchas en la escena del crimen. Las pruebas de confirmación (como las pruebas de cristales o los ensayos inmunológicos) son muy específicas y prueban la presencia de sangre humana con total certeza.'
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
export const content: ToolLocaleContent = {
|
|
56
|
+
slug,
|
|
57
|
+
title,
|
|
58
|
+
description,
|
|
59
|
+
ui: {
|
|
60
|
+
title: 'Simulador de Prueba de Sangre',
|
|
61
|
+
desc: 'Realiza experimentos virtuales con reactivos de Luminol y Kastle-Meyer para detectar sangre y analizar falsos positivos.',
|
|
62
|
+
configTitle: 'Controles del Laboratorio',
|
|
63
|
+
sampleLabel: 'Seleccionar Muestra',
|
|
64
|
+
reagentLabel: 'Seleccionar Reactivo',
|
|
65
|
+
lightsLabel: 'Iluminación',
|
|
66
|
+
btnLightsOff: 'Apagar Luces',
|
|
67
|
+
btnLightsOn: 'Encender Luces',
|
|
68
|
+
btnReset: 'Reiniciar Placa',
|
|
69
|
+
resultsTitle: 'Resultados de la Prueba',
|
|
70
|
+
sampleBlood: 'Muestra de Sangre (Control)',
|
|
71
|
+
sampleRust: 'Óxido (Óxido de Hierro)',
|
|
72
|
+
sampleBleach: 'Lejía (Hipoclorito de Sodio)',
|
|
73
|
+
samplePotato: 'Patata (Peroxidasa Vegetal)',
|
|
74
|
+
sampleSaliva: 'Muestra de Saliva',
|
|
75
|
+
reagentKM: 'Reactivo Kastle-Meyer',
|
|
76
|
+
reagentH2O2: 'Peróxido de Hidrógeno (H2O2)',
|
|
77
|
+
reagentLuminol: 'Solución de Luminol',
|
|
78
|
+
resultTruePositive: 'Positivo Verdadero (Sangre Detectada)',
|
|
79
|
+
resultFalsePositive: 'Falso Positivo (Catalizador No Sanguíneo)',
|
|
80
|
+
resultNegative: 'Reacción Negativa',
|
|
81
|
+
statusLabel: 'Estado de la Reacción',
|
|
82
|
+
reactionLabel: 'Explicación de la Reacción',
|
|
83
|
+
dropReagentBtn: 'Aplicar Gota',
|
|
84
|
+
activeCompounds: 'Compuestos Activos',
|
|
85
|
+
reactionSpeed: 'Velocidad de Reacción',
|
|
86
|
+
reactionDuration: 'Duración de Reacción',
|
|
87
|
+
specimenBase: 'Base del Espécimen',
|
|
88
|
+
kmPending: 'Reactivo Kastle-Meyer aplicado. Añada Peróxido de Hidrógeno (H2O2) para catalizar el cambio de color.',
|
|
89
|
+
h2o2Only: 'Peróxido de Hidrógeno aplicado. No hay reacción visible sin el indicador Kastle-Meyer.',
|
|
90
|
+
noReaction: 'No se observa reacción. La muestra permanece incolora.',
|
|
91
|
+
luminolBlood: 'Brillo azul intenso observado inmediatamente en la oscuridad. Los grupos hemo en la hemoglobina oxidaron catalíticamente el luminol. Positivo Verdadero.',
|
|
92
|
+
luminolBleach: 'Brillo azul muy intenso observado de inmediato, que se desvaneció extremadamente rápido (menos de 2 segundos). La lejía oxida el luminol directamente sin requerir hemo. Falso Positivo.',
|
|
93
|
+
luminolRust: 'Brillo azul débil observado. Los iones metálicos del óxido catalizan débilmente la oxidación. Se desvanece gradualmente. Falso Positivo.',
|
|
94
|
+
luminolPotato: 'Sin luminiscencia visible. Las peroxidasas vegetales no poseen la estructura catalítica adecuada para oxidar el luminol en estas condiciones. Negativo.',
|
|
95
|
+
luminolNegative: 'Sin luminiscencia observada en la oscuridad. El compuesto no es catalítico para la oxidación del luminol. Negativo.',
|
|
96
|
+
kmBlood: 'Coloración rosa brillante inmediata al añadir Peróxido de Hidrógeno. El hemo en la sangre redujo catalíticamente el peróxido, oxidando la fenolftalina a fenolftaleína. Positivo Verdadero.',
|
|
97
|
+
kmBleach: 'Cambio inmediato a color rosa fuerte. El hipoclorito de sodio oxida directamente la fenolftalina sin necesidad de peróxido. Falso Positivo.',
|
|
98
|
+
kmRust: 'Coloración rosa-marrón débil y lenta que aparece después de varios segundos. El óxido cataliza la reacción a un ritmo mucho más lento. Falso Positivo.',
|
|
99
|
+
kmPotato: 'Coloración rosa tenue y lenta tras un retraso. Las peroxidasas vegetales catalizan débilmente la reacción. Falso Positivo.',
|
|
100
|
+
kmNegative: 'No se observa cambio de color. La solución permanece incolora. Negativo.'
|
|
101
|
+
},
|
|
102
|
+
seo: [
|
|
103
|
+
{
|
|
104
|
+
type: 'title',
|
|
105
|
+
text: 'Guía Completa sobre Pruebas Presuntivas de Sangre Forense',
|
|
106
|
+
level: 2
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'paragraph',
|
|
110
|
+
html: 'Las pruebas presuntivas de sangre son análisis preliminares muy sensibles que se utilizan en la escena del crimen para detectar la posible presencia de sangre. Antes de realizar análisis más complejos como la secuenciación de ADN, los investigadores forenses dependen de estos reactivos rápidos para analizar manchas en ropa, armas y superficies. Dado que estas pruebas se basan en la actividad similar a la peroxidasa del grupo hemo de la hemoglobina, son presuntivas: un resultado positivo sugiere que hay sangre, pero requiere una confirmación secundaria para descartar falsos positivos.'
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
text: 'Funcionamiento de la Prueba de Kastle-Meyer',
|
|
115
|
+
level: 3
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'La prueba de Kastle-Meyer (KM) es un análisis colorimétrico catalítico que utiliza la forma reducida e incolora de la fenolftaleína, conocida como fenolftalina. La secuencia de reacción es muy específica: primero se aplica el reactivo de fenolftalina a la muestra. En presencia de sangre, el grupo hemo actúa como catalizador. Al añadir peróxido de hidrógeno (H2O2), el hemo cataliza la oxidación de la fenolftalina de vuelta a fenolftaleína, produciendo un cambio de color inmediato a rosa intenso. Un cambio de color lento (después de 15-20 segundos) se interpreta como negativo o falso positivo por oxidación ambiental lenta.'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'title',
|
|
123
|
+
text: 'El Luminol y la Quimioluminiscencia Forense',
|
|
124
|
+
level: 3
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'paragraph',
|
|
128
|
+
html: 'El luminol (C8H7N3O2) es un compuesto químico que exhibe quimioluminiscencia (brilla en la oscuridad) cuando se oxida en presencia de un catalizador metálico. Los investigadores rocían una solución diluida de luminol en la escena. Si entra en contacto con manchas de sangre, el hierro de la hemoglobina cataliza la reacción. La reacción química resultante produce un ion aminoftalato excitado, que emite una luz azul-cian al volver a su estado fundamental. Debido a la baja intensidad del brillo, el entorno debe estar completamente a oscuras para observarlo y fotografiarlo.'
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
type: 'table',
|
|
132
|
+
headers: ['Sustancia Analizada', 'Perfil de Reacción Kastle-Meyer', 'Perfil de Luminiscencia con Luminol', 'Clasificación Diagnóstica Forense'],
|
|
133
|
+
rows: [
|
|
134
|
+
['Control de Sangre Humana', 'Coloración rosa brillante inmediata al añadir H2O2.', 'Brillo azul-cian intenso y duradero (hasta 8s).', 'Positivo Verdadero. El hemo proporciona la actividad catalítica necesaria.'],
|
|
135
|
+
['Lejía Doméstica', 'Cambio inmediato a rosa antes de añadir H2O2.', 'Brillo extremadamente intenso que decae en menos de 2s.', 'Falso Positivo. Los oxidantes fuertes reaccionan directamente sin necesidad de catalizador.'],
|
|
136
|
+
['Óxido de Hierro', 'Coloración rosa-marrón débil y lenta.', 'Brillo azul tenue que decae gradualmente.', 'Falso Positivo. Los iones de hierro libre catalizan la reacción con muy baja eficiencia.'],
|
|
137
|
+
['Patata (Peroxidasa)', 'Coloración rosa tenue y tardía tras un retraso.', 'Sin quimioluminiscencia visible.', 'Falso Positivo (KM) / Negativo (Luminol). Las enzimas vegetales no activan el luminol.']
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Diferenciación de la Sangre frente a Falsos Positivos Comunes',
|
|
143
|
+
level: 3
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Identificar falsos positivos es una parte esencial de la formación forense. Los productos de limpieza fuertes que contienen hipoclorito de sodio (lejía) oxidan directamente los indicadores, imitando la sangre. Sin embargo, los expertos los distinguen analizando la dinámica de reacción: la lejía reacciona sin peróxido en la prueba KM, y su brillo con luminol decae casi instantáneamente. Las peroxidasas vegetales (de patatas, rábano o cebollas) también producen falsos positivos pero se inactivan con calor, a diferencia de la hemoglobina que es termoestable. Cualquier resultado presuntivo positivo debe confirmarse mediante ensayos específicos.'
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas: [
|
|
154
|
+
{
|
|
155
|
+
'@context': 'https://schema.org',
|
|
156
|
+
'@type': 'SoftwareApplication',
|
|
157
|
+
name: title,
|
|
158
|
+
description,
|
|
159
|
+
applicationCategory: 'ForensicApplication',
|
|
160
|
+
operatingSystem: 'Any'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'FAQPage',
|
|
165
|
+
mainEntity: faq.map((item) => ({
|
|
166
|
+
'@type': 'Question',
|
|
167
|
+
name: item.question,
|
|
168
|
+
acceptedAnswer: {
|
|
169
|
+
'@type': 'Answer',
|
|
170
|
+
text: item.answer
|
|
171
|
+
}
|
|
172
|
+
}))
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
'@context': 'https://schema.org',
|
|
176
|
+
'@type': 'HowTo',
|
|
177
|
+
name: title,
|
|
178
|
+
step: howTo.map((step) => ({
|
|
179
|
+
'@type': 'HowToStep',
|
|
180
|
+
name: step.name,
|
|
181
|
+
text: step.text
|
|
182
|
+
}))
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
};
|