@jjlmoya/utils-forensic-science 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,245 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'leeftijdsschatter-gebit-skelet-verstandskies';
5
+ const title = 'Leeftijdsschatter voor gebit, skelet en verstandskiezen';
6
+ const description = 'Schat een forensisch leeftijdsinterval op basis van gebitsontwikkeling, skeletale maturiteit en verstandskiesindicatoren voor screening en casustriage.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Selecteer de bewijsklemtoon',
11
+ text: 'Kies "Gemengd bewijs" voor gebalanceerde triage, "Gebitsprioriteit" wanneer gebitsbevindingen robuuster zijn, of "Skeletprioriteit" wanneer radiografische skeletindicatoren de primaire bron vormen.',
12
+ },
13
+ {
14
+ name: 'Beoordeel elke maturiteitsindicator',
15
+ text: 'Studeer elk stadium in van 0 tot 8. Lagere stadia duiden op vroege ontwikkeling, middelste stadia op adolescente rijping en hogere stadia op rijpe of bijna-rijpe bevindingen.',
16
+ },
17
+ {
18
+ name: 'Interpreteer het interval, niet alleen de centrale leeftijd',
19
+ text: 'Hanteer de minimum-, waarschijnlijke en maximumleeftijd in samenhang. Forensische leeftijdsbeoordeling moet worden uitgedrukt als een interval, aangezien biologische ontwikkeling individueel sterk varieert.',
20
+ },
21
+ {
22
+ name: 'Controleer op discrepanties tussen indicatoren',
23
+ text: 'Indien gebits-, skelet- en verstandskiesstadia naar uiteenlopende leeftijdsbereiken wijzen, behandel het resultaat dan als exploratief en verzamel aanvullend bewijs voordat u conclusies trekt.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Kan deze forensische leeftijdsschatter de wettelijke meerderjarigheid bepalen?',
30
+ answer: 'Nee. Dit is een screeningscalculator voor educatief en triagegebruik. Wettelijke leeftijdsbepaling vereist gevalideerde lokale protocollen, bevoegde experts, gedocumenteerd identiteitsonderzoek en jurisdictiespecifieke normen.',
31
+ },
32
+ {
33
+ question: 'Waarom toont het resultaat een leeftijdsinterval?',
34
+ answer: 'Gebitsdoorbraak, skeletfusie en verstandskiesontwikkeling variëren per afkomst, voeding, gezondheid, geslacht, referentiepopulatie en beeldvormingsmethode. Een interval biedt een nauwkeuriger beeld dan een enkele exacte leeftijd.',
35
+ },
36
+ {
37
+ question: 'Wat betekent "Gemengd bewijs"?',
38
+ answer: 'Gemengd bewijs balanceert gebitsontwikkeling, skeletale maturiteit en verstandskiesstadium. Gebruik deze optie wanneer geen enkele indicator in het dossier significant betrouwbaarder is dan de andere.',
39
+ },
40
+ {
41
+ question: 'Zijn verstandskiezen betrouwbaar voor elke zaak?',
42
+ answer: 'Verstandskiezen zijn nuttig in de late adolescentie en jonge volwassenheid, maar vertonen een hoge variabiliteit. Ontbrekende verstandskiezen, pathologie, populatieverschillen en radiografische kwaliteit kunnen hun forensische waarde beperken.',
43
+ },
44
+ {
45
+ question: 'Moet dit worden gebruikt voor echte casuïstiek?',
46
+ answer: 'Alleen als voorlopig hulpmiddel. Bij echte casuïstiek moeten gevalideerde methoden, gekalibreerde referentiegegevens, onafhankelijke beoordeling en transparante rapportage van onzekerheid en beperkingen worden toegepast.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ caseBoard: 'Forensisch casusbord',
56
+ controls: 'Forensische leeftijdsregelaars',
57
+ results: 'Forensische leeftijdsresultaten',
58
+ maturityProfile: 'Dynamisch maturiteitsprofiel',
59
+ screeningOnly: 'Screening schatting',
60
+ evidenceType: 'Bewijsklemtoon',
61
+ mixedEvidence: 'Gemengd bewijs',
62
+ dentalPriority: 'Gebitsprioriteit',
63
+ skeletalPriority: 'Skeletprioriteit',
64
+ dentalStage: 'Gebitsontwikkelingsstadium',
65
+ epiphysealStage: 'Epifysair fusiestadium',
66
+ thirdMolarStage: 'Verstandskiesstadium',
67
+ minimumAge: 'Minimum',
68
+ likelyAge: 'Waarschijnlijk',
69
+ maximumAge: 'Maximum',
70
+ maturityScore: 'Maturiteitsscore',
71
+ stageLabel: 'Stadium',
72
+ ageUnit: 'jaar',
73
+ dentalShort: 'Gebit',
74
+ boneShort: 'Bot',
75
+ molarShort: 'Molaar',
76
+ dentalStageHelp: 'Kroon-, wortel- en apexvorming.',
77
+ epiphysealStageHelp: 'Groeischijfsluiting en skeletfusie.',
78
+ molarStageHelp: 'Verstandskiesmineralisatie en apexsluiting.',
79
+ dentalStage0: 'Afwezig',
80
+ dentalStage1: 'Knobbel',
81
+ dentalStage2: 'Kroon',
82
+ dentalStage3: 'Wortel begin',
83
+ dentalStage4: 'Wortel helft',
84
+ dentalStage5: 'Wortel lang',
85
+ dentalStage6: 'Apex smal',
86
+ dentalStage7: 'Apex sluitend',
87
+ dentalStage8: 'Compleet',
88
+ epiphysealStage0: 'Open',
89
+ epiphysealStage1: 'Rand',
90
+ epiphysealStage2: 'Vernauwing',
91
+ epiphysealStage3: 'Brug',
92
+ epiphysealStage4: 'Half gefuseerd',
93
+ epiphysealStage5: 'Meestal gefuseerd',
94
+ epiphysealStage6: 'Alleen lijn',
95
+ epiphysealStage7: 'Bijna gesloten',
96
+ epiphysealStage8: 'Gesloten',
97
+ molarStage0: 'Afwezig',
98
+ molarStage1: 'Knobbel',
99
+ molarStage2: 'Kroon begin',
100
+ molarStage3: 'Kroon volledig',
101
+ molarStage4: 'Wortel begin',
102
+ molarStage5: 'Wortel helft',
103
+ molarStage6: 'Wortel lang',
104
+ molarStage7: 'Apex sluitend',
105
+ molarStage8: 'Compleet',
106
+ confidenceexploratory: 'Exploratief',
107
+ confidencemoderate: 'Matig',
108
+ confidencestrong: 'Sterk',
109
+ noteTriage: 'Gebruik als triageschatting, niet als wettelijke leeftijdsbepaling.',
110
+ noteFinalAssessment: 'De uiteindelijke forensische leeftijdsbeoordeling moet radiologie, gebitsonderzoek, gedocumenteerde geschiedenis en jurisdictiespecifieke normen integreren.',
111
+ noteWideInterval: 'De indicatoren verschillen meer dan vier jaar, dus het interval is verbreed.',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: 'Forensische leeftijdsschatter: gebits-, skelet- en verstandskies-screeningcalculator',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Gebruik deze forensische leeftijdsschatter voor een snelle, transparante organisatie van biologisch maturiteitsbewijs vóór een formele beoordeling. De calculator integreert gebitsontwikkeling, epifysaire fusie en het verstandskiesstadium tot een geschat leeftijdsinterval. De tool adresseert zoekopdrachten zoals <strong>forensische leeftijdsschattingscalculator</strong>, <strong>gebitsleeftijdsbeoordeling</strong> en <strong>skeletale maturiteitsschatting</strong>, waarbij gebruikers inzicht krijgen in de betekenis van indicatoren, de combinatie ervan en de gehanteerde onzekerheidsmarges.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'De uitkomst wordt bewust weergegeven als <strong>minimum-, waarschijnlijke en maximumleeftijd</strong>. Een puntschatting is vaak misleidend, daar biologische ontwikkeling sterk varieert door voeding, gezondheid, afkomst en omgevingsfactoren. Beschouw deze calculator als een gestructureerd screeningshulpmiddel en niet als een juridisch sluitend bewijs.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Wat de drie maturiteitsindicatoren betekenen',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'De schuifregelaars (0-8) bieden een praktische abstractie voor het vergelijken van verschillende biologische systemen. Stadium 0 duidt op zeer vroege of afwezige maturiteit; stadium 8 op volledige maturiteit. Deze stadia zijn niet gebonden aan één specifieke klinische methode, maar faciliteren cross-systeem vergelijkingen binnen een intervalschatting.',
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Indicator', 'Beschrijving', 'Context', 'Voorzichtigheid'],
139
+ rows: [
140
+ ['Gebitsontwikkeling', 'Vorming en doorbraak (excl. verstandskiezen).', 'Primaire metriek voor kinderen en adolescenten.', 'Kan worden vertekend door gebitspathologie, extracties of populatiespecifieke verschillen.'],
141
+ ['Epifysaire fusie', 'Progressieve sluiting van groeischijven.', 'Sleutelindicator voor late adolescentie en jonge volwassenheid.', 'Sterk afhankelijk van het geobserveerde bot, geslacht en gezondheidsstatus.'],
142
+ ['Verstandskiesstadium', 'Vorming en rijping van verstandskiezen.', 'Cruciaal voor beoordeling in late adolescentie.', 'Zeer variabel; vereist zorgvuldige analyse van agenesie en impactie.'],
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Het leeftijdsinterval interpreteren',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Beschouw de drie waarden in samenhang. De <strong>waarschijnlijke leeftijd</strong> is de gewogen centrale schatting op basis van de gekozen bewijsklemtoon. De <strong>minimum-</strong> en <strong>maximumwaarden</strong> definiëren de praktische onzekerheidsmarge. Overeenstemming tussen indicatoren versmalt de bandbreedte; tegenstrijdige signalen verbreden het interval en verlagen de betrouwbaarheidsscore.',
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['Resultaatpatroon', 'Interpretatie', 'Aanbevolen actie'],
157
+ rows: [
158
+ ['Smalle band / Sterk vertrouwen', 'Indicatoren stemmen overeen.', 'Documenteer bevindingen en evalueer of formele validatie vereist is.'],
159
+ ['Matige band', 'Discrepantie of invloed van bewijsweging.', 'Verifieer beeldkwaliteit en stadietoewijzing.'],
160
+ ['Brede exploratieve band', 'Indicatoren in conflict.', 'Vertrouw niet enkel op deze schatting; zoek aanvullende dossiers of specialistische beoordeling.'],
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: 'Selectie van bewijsmodus',
166
+ level: 3,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '<strong>Gemengd bewijs</strong> is de standaardmodus voor screening, omdat het alle indicatoren balanceert. Kies <strong>gebitsprioriteit</strong> bij uitzonderlijk robuuste gebitsdossiers. Kies <strong>skeletprioriteit</strong> wanneer radiografische skeletgegevens de meest complete dataset vormen. Deze modi verbeteren de kwaliteit van zwak bewijs niet, maar passen enkel de wiskundige weging aan.',
171
+ },
172
+ {
173
+ type: 'list',
174
+ items: [
175
+ '<strong>Gebitsprioriteit:</strong> wanneer gebitsontwikkeling duidelijk is gestageerd en verstandskiesgegevens beschikbaar zijn.',
176
+ '<strong>Skeletprioriteit:</strong> wanneer epifysaire fusie het best gedocumenteerde maturiteitssignaal is.',
177
+ '<strong>Gemengd bewijs:</strong> optimaal voor een gebalanceerd eerste overzicht.',
178
+ '<strong>Vertrouwenslabel:</strong> gebruik dit om discrepanties te herkennen vóór interpretatie.',
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: 'Forensische leeftijdsbepaling is geen identiteitsbewijs',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'paragraph',
188
+ html: 'Leeftijdsschatting is ondersteunend, nooit sluitend bewijs voor identiteit. In juridische of beschermingscontexten (zoals rampenidentificatie of migratie) is een multidisciplinaire aanpak essentieel. Verantwoorde rapporten moeten expliciet de gehanteerde methodiek, referentiepopulatie, waarnemerskwalificaties en bekende beperkingen vermelden.',
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'Deze tool is ontworpen voor <strong>educatie, triage en transparante communicatie</strong>. Het benadrukt waarom conclusies over leeftijd voorzichtig moeten zijn en waarom kritieke drempels (zoals de 18e verjaardag) nooit enkel op basis van een vereenvoudigde calculator mogen worden vastgesteld.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Forensische rapportagechecklist',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'list',
201
+ items: [
202
+ '<strong>Bronvermelding:</strong> Noteer expliciet of stadia zijn gebaseerd op gebitsonderzoek, panoramische X-stralen of skeletbeelden (hand-pols, clavicula, enz.).',
203
+ '<strong>Ontbrekende/zwakke data:</strong> Documenteer afwezigheden, slechte beeldkwaliteit of anomalieën duidelijk.',
204
+ '<strong>Methodologische validatie:</strong> Waarborg dat geselecteerde methoden erkend zijn binnen de lokale jurisdictie.',
205
+ '<strong>Transparantie over onzekerheid:</strong> Rapporteer altijd een bereik en vermijd terminologie die een exacte chronologische leeftijd suggereert.',
206
+ '<strong>Specialistische beoordeling:</strong> Risicovolle zaken moeten verplicht worden getoetst door forensische odontologen, radiologen of antropologen.',
207
+ ],
208
+ },
209
+ ],
210
+ faq,
211
+ bibliography,
212
+ howTo,
213
+ schemas: [
214
+ {
215
+ '@context': 'https://schema.org',
216
+ '@type': 'SoftwareApplication',
217
+ name: title,
218
+ description,
219
+ applicationCategory: 'ForensicApplication',
220
+ operatingSystem: 'Any',
221
+ },
222
+ {
223
+ '@context': 'https://schema.org',
224
+ '@type': 'FAQPage',
225
+ mainEntity: faq.map((item) => ({
226
+ '@type': 'Question',
227
+ name: item.question,
228
+ acceptedAnswer: {
229
+ '@type': 'Answer',
230
+ text: item.answer,
231
+ },
232
+ })),
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'HowTo',
237
+ name: title,
238
+ step: howTo.map((step) => ({
239
+ '@type': 'HowToStep',
240
+ name: step.name,
241
+ text: step.text,
242
+ })),
243
+ },
244
+ ],
245
+ };
@@ -0,0 +1,245 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'estymator-wieku-zebow-szkieletu-trzeciego-trzonowca';
5
+ const title = 'Estymator wieku na podstawie rozwoju zębów, szkieletu i trzeciego trzonowca';
6
+ const description = 'Oszacuj kryminalistyczny przedział wieku w oparciu o rozwój zębów, dojrzałość szkieletową oraz wskaźniki trzeciego trzonowca dla potrzeb badań przesiewowych i triażu.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Wybierz nacisk na dowody',
11
+ text: 'Wybierz "Dowody mieszane" dla zrównoważonego triażu, "Priorytet stomatologiczny", gdy wyniki stomatologiczne są bardziej wiarygodne, lub "Priorytet szkieletowy", gdy wskaźniki radiograficzne układu kostnego stanowią główne źródło danych.',
12
+ },
13
+ {
14
+ name: 'Oceń każdy wskaźnik dojrzałości',
15
+ text: 'Określ etap dla każdego wskaźnika w skali od 0 do 8. Niższe etapy odzwierciedlają wczesny rozwój, etapy pośrednie dojrzewanie młodzieńcze, a wyższe etapy wyniki dojrzałe lub prawie dojrzałe.',
16
+ },
17
+ {
18
+ name: 'Interpretuj przedział, nie tylko wiek centralny',
19
+ text: 'Analizuj wartości minimalną, prawdopodobną i maksymalną łącznie. Ocena wieku w medycynie sądowej powinna być wyrażana jako przedział, ze względu na dużą zmienność osobniczą w tempie rozwoju biologicznego.',
20
+ },
21
+ {
22
+ name: 'Weryfikuj niezgodności między wskaźnikami',
23
+ text: 'Jeśli etapy rozwoju zębów, szkieletu i trzeciego trzonowca wskazują na rozbieżne zakresy wiekowe, traktuj wynik jako wstępny/eksploracyjny i zbierz dodatkowe dowody przed wyciągnięciem wniosków.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Czy to narzędzie służy do określania pełnoletności prawnej?',
30
+ answer: 'Nie. Jest to kalkulator przesiewowy przeznaczony do celów edukacyjnych i triażu. Prawne określenie wieku wymaga zastosowania zatwierdzonych lokalnych protokołów, opinii wykwalifikowanych biegłych, formalnej dokumentacji tożsamości oraz standardów zgodnych z wymogami danej jurysdykcji.',
31
+ },
32
+ {
33
+ question: 'Dlaczego wynik jest prezentowany jako przedział wieku?',
34
+ answer: 'Wyrzynanie zębów, zrost szkieletowy i rozwój trzecich trzonowców przebiegają odmiennie w zależności od pochodzenia etnicznego, stanu odżywienia, zdrowia, płci, populacji referencyjnej oraz metody obrazowania. Przedział wiekowy jest rzetelniejszy niż wskazanie jednej, dokładnej daty.',
35
+ },
36
+ {
37
+ question: 'Co oznaczają "Dowody mieszane"?',
38
+ answer: 'Tryb "Dowody mieszane" równoważy dane z rozwoju zębów, dojrzałości szkieletowej i etapu rozwoju trzeciego trzonowca. Użyj tego trybu, gdy żaden z pojedynczych wskaźników nie jest wyraźnie bardziej wiarygodny dla danego przypadku.',
39
+ },
40
+ {
41
+ question: 'Czy trzecie trzonowce są wiarygodne w każdym przypadku?',
42
+ answer: 'Trzecie trzonowce są przydatne w ocenie wieku późnej adolescencji i młodych dorosłych, lecz charakteryzują się dużą zmiennością. Agenesia (brak zawiązków), patologie, różnice populacyjne oraz jakość zdjęć RTG mogą ograniczać ich wartość diagnostyczną.',
43
+ },
44
+ {
45
+ question: 'Czy narzędzie to powinno być stosowane w rzeczywistej pracy śledczej?',
46
+ answer: 'Wyłącznie jako pomoc wstępna. W rzeczywistych sprawach sądowych należy korzystać z walidowanych metod, skalibrowanych danych referencyjnych, niezależnej weryfikacji przez biegłych oraz przejrzystego raportowania ograniczeń i niepewności pomiarowej.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ caseBoard: 'Tablica sprawy kryminalistycznej',
56
+ controls: 'Kontrolki estymacji wieku',
57
+ results: 'Wyniki estymacji wieku',
58
+ maturityProfile: 'Dynamiczny profil dojrzałości',
59
+ screeningOnly: 'Oszacowanie przesiewowe',
60
+ evidenceType: 'Nacisk na dowody',
61
+ mixedEvidence: 'Dowody mieszane',
62
+ dentalPriority: 'Priorytet stomatologiczny',
63
+ skeletalPriority: 'Priorytet szkieletowy',
64
+ dentalStage: 'Etap rozwoju zębów',
65
+ epiphysealStage: 'Etap zrostu nasad',
66
+ thirdMolarStage: 'Etap trzeciego trzonowca',
67
+ minimumAge: 'Minimum',
68
+ likelyAge: 'Prawdopodobny',
69
+ maximumAge: 'Maksimum',
70
+ maturityScore: 'Wynik dojrzałości',
71
+ stageLabel: 'Etap',
72
+ ageUnit: 'lat',
73
+ dentalShort: 'Zęby',
74
+ boneShort: 'Kości',
75
+ molarShort: 'Trzonowiec',
76
+ dentalStageHelp: 'Formowanie korony, korzenia i wierzchołka.',
77
+ epiphysealStageHelp: 'Zamknięcie płytki wzrostowej i zrost szkieletowy.',
78
+ molarStageHelp: 'Mineralizacja trzeciego trzonowca i zamknięcie wierzchołka.',
79
+ dentalStage0: 'Brak',
80
+ dentalStage1: 'Guzek',
81
+ dentalStage2: 'Korona',
82
+ dentalStage3: 'Początek korzenia',
83
+ dentalStage4: 'Połowa korzenia',
84
+ dentalStage5: 'Korzeń długi',
85
+ dentalStage6: 'Wierzchołek wąski',
86
+ dentalStage7: 'Wierzchołek zamykający się',
87
+ dentalStage8: 'Kompletny',
88
+ epiphysealStage0: 'Otwarta',
89
+ epiphysealStage1: 'Brzeg',
90
+ epiphysealStage2: 'Zwężenie',
91
+ epiphysealStage3: 'Most',
92
+ epiphysealStage4: 'Połowa zrośnięta',
93
+ epiphysealStage5: 'Prawie zrośnięta',
94
+ epiphysealStage6: 'Tylko linia',
95
+ epiphysealStage7: 'Prawie zamknięta',
96
+ epiphysealStage8: 'Zamknięta',
97
+ molarStage0: 'Brak',
98
+ molarStage1: 'Guzek',
99
+ molarStage2: 'Początek korony',
100
+ molarStage3: 'Korona pełna',
101
+ molarStage4: 'Początek korzenia',
102
+ molarStage5: 'Połowa korzenia',
103
+ molarStage6: 'Korzeń długi',
104
+ molarStage7: 'Wierzchołek zamykający się',
105
+ molarStage8: 'Kompletny',
106
+ confidenceexploratory: 'Eksploracyjny',
107
+ confidencemoderate: 'Umiarkowany',
108
+ confidencestrong: 'Silny',
109
+ noteTriage: 'Stosować jako oszacowanie przesiewowe, nie jako prawne określenie wieku.',
110
+ noteFinalAssessment: 'Ostateczna ocena wieku w medycynie sądowej wymaga integracji radiologii, badania stomatologicznego, dokumentacji medycznej oraz standardów właściwych dla jurysdykcji.',
111
+ noteWideInterval: 'Wskaźniki różnią się o ponad cztery lata, dlatego przedział został poszerzony.',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: 'Kryminalistyczny estymator wieku: kalkulator przesiewowy zębów, szkieletu i trzeciego trzonowca',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Użyj tego kryminalistycznego estymatora wieku, gdy potrzebujesz szybkiego i przejrzystego uporządkowania dowodów dojrzałości biologicznej przed formalną ekspertyzą. Kalkulator integruje dane o rozwoju zębów, zroście nasad i etapie trzeciego trzonowca w oszacowany przedział wieku. Narzędzie stworzono dla potrzeb wyszukiwania takich haseł jak <strong>kryminalistyczna ocena wieku</strong>, <strong>estymacja wieku zębów</strong> czy <strong>ocena dojrzałości szkieletowej</strong>, ułatwiając zrozumienie wyników i ograniczeń związanych z niepewnością pomiarową.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Wynik jest świadomie prezentowany jako <strong>wiek minimalny, prawdopodobny i maksymalny</strong>. Podanie jednej, dokładnej daty byłoby błędne, gdyż rozwój biologiczny jest procesem wysoce zindywidualizowanym. Czynniki takie jak odżywianie, zdrowie, pochodzenie, płeć, jakość obrazowania, patologie i błąd obserwatora znacząco wpływają na wynik. Traktuj ten kalkulator jako ustrukturyzowaną pomoc diagnostyczną, a nie jako ostateczną opinię biegłego.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Znaczenie trzech wskaźników dojrzałości',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Suwaki etapów (0-8) pozwalają na praktyczną abstrakcję danych w celu porównania różnych systemów biologicznych. Etap 0 oznacza wczesny stan lub brak dowodów dojrzałości; etap 8 oznacza pełną dojrzałość. Te etapy ułatwiają porównanie danych dentystycznych, szkieletowych i zębów mądrości w ramach jednego przedziału wiekowego.',
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Wskaźnik', 'Opis', 'Kluczowe zastosowanie', 'Uwagi'],
139
+ rows: [
140
+ ['Rozwój zębów', 'Formowanie i wyrzynanie (z wyłączeniem trzecich trzonowców).', 'Podstawowy wskaźnik u dzieci i młodzieży.', 'Wypaczenia mogą wynikać z chorób zębów, ekstrakcji lub różnic populacyjnych.'],
141
+ ['Zrost nasad', 'Postępujące zamykanie płytek wzrostowych w kościach.', 'Kluczowe dla oceny wieku młodzieńczego.', 'Zależne od badanej kości, płci, zdrowia endokrynnego i techniki obrazowania.'],
142
+ ['Trzeci trzonowiec', 'Formowanie i dojrzewanie zębów mądrości.', 'Istotny dla oceny wieku młodych dorosłych.', 'Wysoka zmienność; konieczna weryfikacja agenezji i zatrzymania.'],
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Interpretacja przedziału wiekowego',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Analizuj trzy wartości łącznie. <strong>Wiek prawdopodobny</strong> to ważona centralna estymacja. Wartości <strong>minimalna</strong> i <strong>maksymalna</strong> definiują pas niepewności. Gdy wskaźniki są zgodne, zakres się zwęża; gdy sygnały stomatologiczne, szkieletowe i trzecich trzonowców są sprzeczne, zakres się rozszerza, a wskaźnik ufności spada.',
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['Wzór wyników', 'Interpretacja', 'Zalecane działanie'],
157
+ rows: [
158
+ ['Wąski przedział, wysoka ufność', 'Wskaźniki są zgodne.', 'Udokumentuj źródła i oceń, czy wymagana jest formalna metoda biegła.'],
159
+ ['Umiarkowany przedział', 'Istnieją pewne rozbieżności.', 'Sprawdź jakość obrazu i poprawność przypisania etapów.'],
160
+ ['Szeroki przedział, niska ufność', 'Wskaźniki sprzeczne.', 'Nie polegaj wyłącznie na kalkulatorze; poszukaj dodatkowej dokumentacji lub opinii specjalisty.'],
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: 'Wybór trybu analizy dowodów',
166
+ level: 3,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '<strong>Dowody mieszane</strong> to tryb domyślny, równoważący wszystkie wskaźniki. Wybierz <strong>priorytet stomatologiczny</strong>, gdy dane dentystyczne są wyjątkowo rzetelne. Wybierz <strong>priorytet szkieletowy</strong>, gdy obrazowanie RTG kości jest najbardziej kompletną daną. Tryby te nie zwiększają jakości słabych dowodów, lecz modyfikują ich wagę statystyczną.',
171
+ },
172
+ {
173
+ type: 'list',
174
+ items: [
175
+ '<strong>Priorytet stomatologiczny:</strong> gdy rozwój zębów jest czytelny i dostępne są dane o trzecich trzonowcach.',
176
+ '<strong>Priorytet szkieletowy:</strong> gdy zrost nasad jest najlepiej udokumentowanym sygnałem.',
177
+ '<strong>Dowody mieszane:</strong> dla zrównoważonego przeglądu wstępnego.',
178
+ '<strong>Etykieta ufności:</strong> monitoruj ją, aby wykryć rozbieżności przed nadinterpretacją wyniku.',
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: 'Ograniczenia kryminalistyczne',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'paragraph',
188
+ html: 'Estymacja wieku jest narzędziem pomocniczym, nigdy dowodem tożsamości. W sprawach karnych, identyfikacji ofiar katastrof czy sprawach migracyjnych wymagane jest podejście multidyscyplinarne. Rzetelny raport musi zawsze zawierać informacje o metodologii, populacji referencyjnej, kwalifikacjach biegłego oraz znanych ograniczeniach.',
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'Narzędzie służy do <strong>edukacji, triażu i przejrzystej komunikacji</strong>. Podkreślamy konieczność ostrożności w formułowaniu wniosków oraz to, że kluczowe progi prawne (np. ukończenie 18. roku życia) nie powinny być ustalane wyłącznie na podstawie uproszczonych kalkulatorów.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Lista kontrolna raportu biegłego',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'list',
201
+ items: [
202
+ '<strong>Źródło dowodów:</strong> Określ, czy etapy wynikają z badania klinicznego, RTG pantomograficznego, czy obrazowania kości (np. ręka, obojczyk).',
203
+ '<strong>Dane niekompletne:</strong> Udokumentuj brakujące zawiązki zębów, niską jakość obrazów czy anomalie.',
204
+ '<strong>Walidacja metod:</strong> Upewnij się, że wybrane metody są uznawane w danej jurysdykcji.',
205
+ '<strong>Przejrzystość niepewności:</strong> Zawsze podawaj zakres; unikaj sformułowań sugerujących dokładny wiek chronologiczny.',
206
+ '<strong>Opinia specjalisty:</strong> W sprawach wysokiego ryzyka wymagana jest weryfikacja przez odontologa sądowego, radiologa lub antropologa.'
207
+ ],
208
+ },
209
+ ],
210
+ faq,
211
+ bibliography,
212
+ howTo,
213
+ schemas: [
214
+ {
215
+ '@context': 'https://schema.org',
216
+ '@type': 'SoftwareApplication',
217
+ name: title,
218
+ description,
219
+ applicationCategory: 'ForensicApplication',
220
+ operatingSystem: 'Any',
221
+ },
222
+ {
223
+ '@context': 'https://schema.org',
224
+ '@type': 'FAQPage',
225
+ mainEntity: faq.map((item) => ({
226
+ '@type': 'Question',
227
+ name: item.question,
228
+ acceptedAnswer: {
229
+ '@type': 'Answer',
230
+ text: item.answer,
231
+ },
232
+ })),
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'HowTo',
237
+ name: title,
238
+ step: howTo.map((step) => ({
239
+ '@type': 'HowToStep',
240
+ name: step.name,
241
+ text: step.text,
242
+ })),
243
+ },
244
+ ],
245
+ };