@jjlmoya/utils-forensic-science 1.12.0 → 1.14.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 +2 -1
- package/src/category/index.ts +63 -59
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/entries.ts +74 -68
- package/src/env.d.ts +1 -1
- package/src/index.ts +33 -31
- package/src/pages/[locale]/[slug].astro +161 -159
- package/src/pages/[locale].astro +8 -5
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/diacritics_density.test.ts +1 -1
- package/src/tests/faq_count.test.ts +19 -19
- package/src/tests/i18n_coverage.test.ts +36 -36
- package/src/tests/inverted_punctuation.test.ts +1 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/script_density.test.ts +94 -94
- package/src/tests/seo_length.test.ts +46 -46
- package/src/tests/seo_parity.test.ts +2 -7
- package/src/tests/seo_translation_completeness.test.ts +68 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tests/translation_copy.test.ts +23 -24
- package/src/tool/bloodstain-pattern-origin-analyzer/component.astro +9 -9
- package/src/tool/bloodstain-pattern-origin-analyzer/i18n/zh.ts +1 -1
- package/src/tool/dna-profile-match-probability-lab/bibliography.astro +14 -0
- package/src/tool/dna-profile-match-probability-lab/bibliography.ts +16 -0
- package/src/tool/dna-profile-match-probability-lab/component.astro +121 -0
- package/src/tool/dna-profile-match-probability-lab/controller.ts +159 -0
- package/src/tool/dna-profile-match-probability-lab/dna-profile-match-probability-lab.css +485 -0
- package/src/tool/dna-profile-match-probability-lab/dom-views.ts +93 -0
- package/src/tool/dna-profile-match-probability-lab/entry.ts +29 -0
- package/src/tool/dna-profile-match-probability-lab/evaluator.ts +19 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/de.ts +43 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/en.ts +196 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/es.ts +40 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/fr.ts +10 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/id.ts +41 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/it.ts +10 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/ja.ts +40 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/ko.ts +40 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/nl.ts +29 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/pl.ts +10 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/pt.ts +41 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/ru.ts +29 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/sv.ts +41 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/tr.ts +10 -0
- package/src/tool/dna-profile-match-probability-lab/i18n/zh.ts +29 -0
- package/src/tool/dna-profile-match-probability-lab/index.ts +11 -0
- package/src/tool/dna-profile-match-probability-lab/localize.ts +107 -0
- package/src/tool/dna-profile-match-probability-lab/logic.test.ts +56 -0
- package/src/tool/dna-profile-match-probability-lab/logic.ts +139 -0
- package/src/tool/dna-profile-match-probability-lab/seo.astro +15 -0
- package/src/tool/dna-profile-match-probability-lab/storage.ts +26 -0
- package/src/tool/dna-profile-match-probability-lab/ui.ts +3 -0
- package/src/tool/fire-pattern-origin-analyzer/component.astro +1 -1
- package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +5 -1
- package/src/tool/fire-pattern-origin-analyzer/logic.ts +9 -2
- package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +8 -4
- package/src/tool/fire-pattern-origin-analyzer/view-model.ts +6 -2
- package/src/tool/forensic-age-estimator/bibliography.astro +1 -1
- package/src/tool/forensic-age-estimator/component.astro +1 -1
- package/src/tool/forensic-age-estimator/entry.ts +17 -17
- package/src/tool/forensic-age-estimator/i18n/de.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/en.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/es.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/fr.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/id.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/it.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/nl.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/pl.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/pt.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/ru.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/sv.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/tr.ts +244 -244
- package/src/tool/forensic-age-estimator/i18n/zh.ts +245 -245
- package/src/tool/forensic-age-estimator/index.ts +1 -1
- package/src/tool/forensic-age-estimator/seo.astro +1 -1
- package/src/tool/forensic-blood-test-simulator/component.astro +1 -1
- package/src/tool/forensic-fiber-comparison-microscope/component.astro +1 -1
- package/src/tool/forensic-fiber-comparison-microscope/render.ts +1 -1
- package/src/tool/forensic-fiber-comparison-microscope/view.ts +1 -1
- package/src/tool/forensic-fingerprint-minutiae-identifier/component.astro +2 -2
- package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/ja.ts +2 -1
- package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/zh.ts +2 -0
- package/src/tool/forensic-fingerprint-minutiae-identifier/renderer.ts +9 -8
- package/src/tool/forensic-glass-becke-line-simulator/component.astro +1 -1
- package/src/tool/forensic-glass-becke-line-simulator/view.ts +8 -6
- package/src/tool/forensic-image-authenticity-analyzer/component.astro +1 -1
- package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +95 -90
- package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +7 -2
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +4 -1
- package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +95 -92
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +95 -92
- package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -105
- package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +97 -92
- package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +97 -93
- package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +98 -93
- package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +11 -0
- package/src/tool/forensic-microcrystal-drug-simulator/component.astro +1 -1
- package/src/tool/forensic-sex-determinator/component.astro +3 -2
- package/src/tool/forensic-stature-estimator/component.astro +1 -1
- package/src/tool/forensic-stature-estimator/i18n/id.ts +4 -0
- package/src/tool/forensic-stature-estimator/i18n/nl.ts +4 -0
- package/src/tool/forensic-stature-estimator/i18n/ru.ts +4 -0
- package/src/tool/forensic-tlc-ink-simulator/component.astro +1 -1
- package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +1 -0
- package/src/tool/forensic-toolmark-striation-matcher/component.astro +1 -1
- package/src/tool/forensic-toolmark-striation-matcher/logic.ts +1 -1
- package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +7 -6
- package/src/tool/forensic-toolmark-striation-matcher/view.ts +19 -20
- package/src/tool/gsr-dispersion-calculator/component.astro +1 -1
- package/src/tool/gsr-dispersion-calculator/logic.ts +1 -1
- package/src/tool/time-of-death-algor-mortis-calculator/entry.ts +2 -0
- package/src/tool/voice-spectrogram-analyzer/audio-runtime.ts +75 -0
- package/src/tool/voice-spectrogram-analyzer/bibliography.astro +14 -0
- package/src/tool/voice-spectrogram-analyzer/bibliography.ts +16 -0
- package/src/tool/voice-spectrogram-analyzer/component.astro +116 -0
- package/src/tool/voice-spectrogram-analyzer/controller.ts +219 -0
- package/src/tool/voice-spectrogram-analyzer/dom-views.ts +204 -0
- package/src/tool/voice-spectrogram-analyzer/entry.ts +31 -0
- package/src/tool/voice-spectrogram-analyzer/evaluator.ts +13 -0
- package/src/tool/voice-spectrogram-analyzer/fft.ts +64 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/de.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/en.ts +122 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/es.ts +122 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/fr.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/id.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/it.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/ja.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/ko.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/nl.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/pl.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/pt.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/ru.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/sv.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/tr.ts +136 -0
- package/src/tool/voice-spectrogram-analyzer/i18n/zh.ts +135 -0
- package/src/tool/voice-spectrogram-analyzer/index.ts +11 -0
- package/src/tool/voice-spectrogram-analyzer/logic.test.ts +46 -0
- package/src/tool/voice-spectrogram-analyzer/logic.ts +163 -0
- package/src/tool/voice-spectrogram-analyzer/seo.astro +15 -0
- package/src/tool/voice-spectrogram-analyzer/storage.ts +33 -0
- package/src/tool/voice-spectrogram-analyzer/ui.ts +49 -0
- package/src/tool/voice-spectrogram-analyzer/voice-spectrogram-analyzer.css +547 -0
- package/src/tool/widmark-alcohol-simulator/component.astro +1 -1
- package/src/tool/widmark-alcohol-simulator/i18n/de.ts +5 -0
- package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +2 -1
- package/src/tool/widmark-alcohol-simulator/i18n/id.ts +1 -0
- package/src/tool/widmark-alcohol-simulator/i18n/it.ts +4 -1
- package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +4 -1
- package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +5 -1
- package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +5 -1
- package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +5 -1
- package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +4 -1
- package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +5 -1
- package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +4 -1
- package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +4 -1
- package/src/tools.ts +39 -35
- package/src/types.ts +4 -4
|
@@ -1,245 +1,245 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
|
|
4
|
-
const slug = 'dental-skeletal-third-molar-age-estimator';
|
|
5
|
-
const title = 'Dental, Skeletal, and Third Molar Age Estimator';
|
|
6
|
-
const description = 'Estimate a forensic age interval from dental development, skeletal maturity, and third molar indicators for screening and case triage.';
|
|
7
|
-
|
|
8
|
-
const howTo = [
|
|
9
|
-
{
|
|
10
|
-
name: 'Select the evidence emphasis',
|
|
11
|
-
text: 'Choose mixed evidence for balanced triage, dental priority when dental findings are more robust, or skeletal priority when radiographic skeletal indicators provide the primary evidence.',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: 'Score each maturity indicator',
|
|
15
|
-
text: 'Assign each indicator a stage from 0 to 8. Lower stages represent early development, middle stages reflect adolescent maturation, and higher stages indicate mature or near-mature findings.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'Interpret the interval, not just the central age',
|
|
19
|
-
text: 'Consider the minimum, likely, and maximum age values together. Forensic age assessment should always be expressed as an interval, as biological development varies significantly between individuals.',
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: 'Check for disagreement between indicators',
|
|
23
|
-
text: 'If dental, skeletal, and third molar stages point to conflicting age ranges, treat the output as exploratory and seek further corroborating evidence before forming conclusions.',
|
|
24
|
-
},
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
const faq = [
|
|
28
|
-
{
|
|
29
|
-
question: 'Can this forensic age estimator determine legal adulthood?',
|
|
30
|
-
answer: 'No. This is a screening tool for educational and triage purposes. Legal age determination requires validated local protocols, qualified forensic experts, comprehensive identity documentation, and adherence to jurisdiction-specific standards.',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
question: 'Why does the result display an age interval?',
|
|
34
|
-
answer: 'Dental eruption, skeletal fusion, and third molar development are influenced by ancestry, nutrition, health status, sex, reference population, and imaging modality. An interval provides a more accurate and transparent representation of biological variability than a single point estimate.',
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
question: 'What does "mixed evidence" mean?',
|
|
38
|
-
answer: 'Mixed evidence mode balances the inputs from dental development, skeletal maturity, and third molar stages. Use this setting when no single indicator is clearly more reliable or complete for the specific case.',
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
question: 'Are third molars reliable for every case?',
|
|
42
|
-
answer: 'Third molars are valuable in late adolescence and young adulthood, but they are highly variable. Factors such as agenesis, pathology, population-specific traits, and radiographic quality can significantly limit their utility.',
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
question: 'Should this tool be used for formal casework?',
|
|
46
|
-
answer: 'It should serve only as a preliminary aid. Formal forensic casework must utilize validated methods, calibrated reference data, independent peer review, and transparent reporting of all uncertainties and limitations.',
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
|
|
50
|
-
export const content: ToolLocaleContent = {
|
|
51
|
-
slug,
|
|
52
|
-
title,
|
|
53
|
-
description,
|
|
54
|
-
ui: {
|
|
55
|
-
caseBoard: 'Forensic case board',
|
|
56
|
-
controls: 'Forensic age controls',
|
|
57
|
-
results: 'Forensic age results',
|
|
58
|
-
maturityProfile: 'Dynamic maturity profile',
|
|
59
|
-
screeningOnly: 'Screening estimate',
|
|
60
|
-
evidenceType: 'Evidence emphasis',
|
|
61
|
-
mixedEvidence: 'Mixed evidence',
|
|
62
|
-
dentalPriority: 'Dental priority',
|
|
63
|
-
skeletalPriority: 'Skeletal priority',
|
|
64
|
-
dentalStage: 'Dental development stage',
|
|
65
|
-
epiphysealStage: 'Epiphyseal fusion stage',
|
|
66
|
-
thirdMolarStage: 'Third molar stage',
|
|
67
|
-
minimumAge: 'Minimum',
|
|
68
|
-
likelyAge: 'Likely',
|
|
69
|
-
maximumAge: 'Maximum',
|
|
70
|
-
maturityScore: 'Maturity score',
|
|
71
|
-
stageLabel: 'Stage',
|
|
72
|
-
ageUnit: 'years',
|
|
73
|
-
dentalShort: 'Dental',
|
|
74
|
-
boneShort: 'Bone',
|
|
75
|
-
molarShort: 'Molar',
|
|
76
|
-
dentalStageHelp: 'Crown, root, and apex formation.',
|
|
77
|
-
epiphysealStageHelp: 'Growth plate closure and skeletal fusion.',
|
|
78
|
-
molarStageHelp: 'Third molar mineralization and apex closure.',
|
|
79
|
-
dentalStage0: 'Absent',
|
|
80
|
-
dentalStage1: 'Cusp',
|
|
81
|
-
dentalStage2: 'Crown',
|
|
82
|
-
dentalStage3: 'Root start',
|
|
83
|
-
dentalStage4: 'Root half',
|
|
84
|
-
dentalStage5: 'Root long',
|
|
85
|
-
dentalStage6: 'Apex narrow',
|
|
86
|
-
dentalStage7: 'Apex closing',
|
|
87
|
-
dentalStage8: 'Complete',
|
|
88
|
-
epiphysealStage0: 'Open',
|
|
89
|
-
epiphysealStage1: 'Margin',
|
|
90
|
-
epiphysealStage2: 'Narrowing',
|
|
91
|
-
epiphysealStage3: 'Bridge',
|
|
92
|
-
epiphysealStage4: 'Half fused',
|
|
93
|
-
epiphysealStage5: 'Mostly fused',
|
|
94
|
-
epiphysealStage6: 'Line only',
|
|
95
|
-
epiphysealStage7: 'Near closed',
|
|
96
|
-
epiphysealStage8: 'Closed',
|
|
97
|
-
molarStage0: 'Absent',
|
|
98
|
-
molarStage1: 'Cusp',
|
|
99
|
-
molarStage2: 'Crown start',
|
|
100
|
-
molarStage3: 'Crown full',
|
|
101
|
-
molarStage4: 'Root start',
|
|
102
|
-
molarStage5: 'Root half',
|
|
103
|
-
molarStage6: 'Root long',
|
|
104
|
-
molarStage7: 'Apex closing',
|
|
105
|
-
molarStage8: 'Complete',
|
|
106
|
-
confidenceexploratory: 'Exploratory',
|
|
107
|
-
confidencemoderate: 'Moderate',
|
|
108
|
-
confidencestrong: 'Strong',
|
|
109
|
-
noteTriage: 'Use as a triage estimate; not a legal age determination.',
|
|
110
|
-
noteFinalAssessment: 'Final forensic age assessment must integrate radiology, clinical dental examination, history, and jurisdiction-specific standards.',
|
|
111
|
-
noteWideInterval: 'Indicators disagree by more than four years; the interval has been widened.',
|
|
112
|
-
},
|
|
113
|
-
seo: [
|
|
114
|
-
{
|
|
115
|
-
type: 'title',
|
|
116
|
-
text: 'Forensic Age Estimator: Dental, Skeletal, and Third Molar Screening Calculator',
|
|
117
|
-
level: 2,
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
type: 'paragraph',
|
|
121
|
-
html: 'This forensic age estimator provides a transparent framework for organizing biological maturity evidence prior to a formal assessment. The tool integrates dental development, epiphyseal fusion, and third molar stages to produce an estimated age interval. It addresses common inquiries such as <strong>forensic age estimation</strong>, <strong>dental maturity assessment</strong>, and <strong>skeletal age estimation</strong>, helping users understand how indicators are combined and the inherent uncertainty involved.',
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
type: 'paragraph',
|
|
125
|
-
html: 'Results are presented as <strong>minimum, likely, and maximum ages</strong>. Point estimates are often misleading because biological development varies widely due to nutrition, health, ancestry, and environmental factors. This tool should be used as a structured screening aid, not as a definitive legal conclusion.',
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: 'title',
|
|
129
|
-
text: 'Understanding Maturity Indicators',
|
|
130
|
-
level: 3,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'paragraph',
|
|
134
|
-
html: 'The maturity scales (0-8) provide a practical abstraction to compare different biological systems. Stage 0 indicates early or absent evidence of maturity, while stage 8 represents completion. These stages do not replace named clinical methods but facilitate a cross-system comparison.',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
type: 'table',
|
|
138
|
-
headers: ['Indicator', 'Description', 'Context', 'Caution'],
|
|
139
|
-
rows: [
|
|
140
|
-
['Dental development', 'Formation and eruption (excluding third molars).', 'Primary metric for children and adolescents.', 'Can be biased by dental disease, extractions, or population-specific differences.'],
|
|
141
|
-
['Epiphyseal fusion', 'Progressive closure of growth plates.', 'Key indicator for late adolescence and young adulthood.', 'Highly dependent on the specific bone, sex, and health status.'],
|
|
142
|
-
['Third molar stage', 'Formation and maturation of wisdom teeth.', 'Critical for late adolescent and young adult assessment.', 'Highly variable; requires careful analysis of agenesis and impaction.'],
|
|
143
|
-
],
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
type: 'title',
|
|
147
|
-
text: 'Interpreting the Age Interval',
|
|
148
|
-
level: 3,
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
type: 'paragraph',
|
|
152
|
-
html: 'The <strong>likely age</strong> represents the weighted central estimate based on your chosen evidence emphasis. The <strong>minimum</strong> and <strong>maximum</strong> values define the uncertainty band. Agreement between indicators results in a narrower band; conflicting signals widen the interval and decrease the confidence rating.',
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
type: 'table',
|
|
156
|
-
headers: ['Pattern', 'Suggestion', 'Action'],
|
|
157
|
-
rows: [
|
|
158
|
-
['Narrow interval / Strong confidence', 'Indicators align.', 'Document findings and assess if formal validation is required.'],
|
|
159
|
-
['Moderate interval', 'Disagreement or evidence weight impacts result.', 'Verify image quality and stage assignments.'],
|
|
160
|
-
['Wide exploratory interval', 'Indicators conflict.', 'Seek corroborating records or specialist review.'],
|
|
161
|
-
],
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
type: 'title',
|
|
165
|
-
text: 'Selecting the Evidence Mode',
|
|
166
|
-
level: 3,
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
type: 'paragraph',
|
|
170
|
-
html: '<strong>Mixed evidence</strong> is the default, balancing all indicators. Select <strong>dental priority</strong> when dental records are exceptionally robust. Select <strong>skeletal priority</strong> when radiographic skeletal evidence is the most comprehensive data point. These modes do not enhance the quality of weak evidence; they only adjust the mathematical weighting.',
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
type: 'list',
|
|
174
|
-
items: [
|
|
175
|
-
'<strong>Dental Priority:</strong> Use when dental development is clearly staged and third molar evidence is present.',
|
|
176
|
-
'<strong>Skeletal Priority:</strong> Use when epiphyseal fusion is the best-documented signal.',
|
|
177
|
-
'<strong>Mixed Evidence:</strong> Ideal for a balanced initial screening.',
|
|
178
|
-
'<strong>Confidence Label:</strong> Monitor this to identify discrepancies before interpretation.',
|
|
179
|
-
],
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
type: 'title',
|
|
183
|
-
text: 'Limitations in Forensic Contexts',
|
|
184
|
-
level: 3,
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
type: 'paragraph',
|
|
188
|
-
html: 'Age estimation is supportive, never conclusive proof of identity. In legal or safeguarding contexts-such as disaster victim identification or migration-assessments must be multidisciplinary. Responsible reports must detail the specific methodology, reference population, observer qualifications, and known limitations.',
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
type: 'paragraph',
|
|
192
|
-
html: 'This tool is designed for <strong>education and triage</strong>. It reinforces why age conclusions require caution and why critical thresholds-such as the 18th birthday-should never be determined solely by a simplified calculator.',
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
type: 'title',
|
|
196
|
-
text: 'Forensic Reporting Checklist',
|
|
197
|
-
level: 3,
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
type: 'list',
|
|
201
|
-
items: [
|
|
202
|
-
'<strong>Source Documentation:</strong> Explicitly note if stages are based on dental exams, panoramic X-rays, or skeletal imaging (e.g., hand-wrist, clavicle).',
|
|
203
|
-
'<strong>Missing/Weak Data:</strong> Document absences, poor quality imagery, or anomalies clearly.',
|
|
204
|
-
'<strong>Methodological Validation:</strong> Ensure selected methods are recognized within the local jurisdiction.',
|
|
205
|
-
'<strong>Uncertainty Communication:</strong> Always present a range; avoid language implying exact chronological age.',
|
|
206
|
-
'<strong>Specialist Review:</strong> High-stakes cases must be reviewed by forensic odontologists, radiologists, or anthropologists.',
|
|
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
|
-
],
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
const slug = 'dental-skeletal-third-molar-age-estimator';
|
|
5
|
+
const title = 'Dental, Skeletal, and Third Molar Age Estimator';
|
|
6
|
+
const description = 'Estimate a forensic age interval from dental development, skeletal maturity, and third molar indicators for screening and case triage.';
|
|
7
|
+
|
|
8
|
+
const howTo = [
|
|
9
|
+
{
|
|
10
|
+
name: 'Select the evidence emphasis',
|
|
11
|
+
text: 'Choose mixed evidence for balanced triage, dental priority when dental findings are more robust, or skeletal priority when radiographic skeletal indicators provide the primary evidence.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'Score each maturity indicator',
|
|
15
|
+
text: 'Assign each indicator a stage from 0 to 8. Lower stages represent early development, middle stages reflect adolescent maturation, and higher stages indicate mature or near-mature findings.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Interpret the interval, not just the central age',
|
|
19
|
+
text: 'Consider the minimum, likely, and maximum age values together. Forensic age assessment should always be expressed as an interval, as biological development varies significantly between individuals.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Check for disagreement between indicators',
|
|
23
|
+
text: 'If dental, skeletal, and third molar stages point to conflicting age ranges, treat the output as exploratory and seek further corroborating evidence before forming conclusions.',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const faq = [
|
|
28
|
+
{
|
|
29
|
+
question: 'Can this forensic age estimator determine legal adulthood?',
|
|
30
|
+
answer: 'No. This is a screening tool for educational and triage purposes. Legal age determination requires validated local protocols, qualified forensic experts, comprehensive identity documentation, and adherence to jurisdiction-specific standards.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
question: 'Why does the result display an age interval?',
|
|
34
|
+
answer: 'Dental eruption, skeletal fusion, and third molar development are influenced by ancestry, nutrition, health status, sex, reference population, and imaging modality. An interval provides a more accurate and transparent representation of biological variability than a single point estimate.',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
question: 'What does "mixed evidence" mean?',
|
|
38
|
+
answer: 'Mixed evidence mode balances the inputs from dental development, skeletal maturity, and third molar stages. Use this setting when no single indicator is clearly more reliable or complete for the specific case.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
question: 'Are third molars reliable for every case?',
|
|
42
|
+
answer: 'Third molars are valuable in late adolescence and young adulthood, but they are highly variable. Factors such as agenesis, pathology, population-specific traits, and radiographic quality can significantly limit their utility.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
question: 'Should this tool be used for formal casework?',
|
|
46
|
+
answer: 'It should serve only as a preliminary aid. Formal forensic casework must utilize validated methods, calibrated reference data, independent peer review, and transparent reporting of all uncertainties and limitations.',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
export const content: ToolLocaleContent = {
|
|
51
|
+
slug,
|
|
52
|
+
title,
|
|
53
|
+
description,
|
|
54
|
+
ui: {
|
|
55
|
+
caseBoard: 'Forensic case board',
|
|
56
|
+
controls: 'Forensic age controls',
|
|
57
|
+
results: 'Forensic age results',
|
|
58
|
+
maturityProfile: 'Dynamic maturity profile',
|
|
59
|
+
screeningOnly: 'Screening estimate',
|
|
60
|
+
evidenceType: 'Evidence emphasis',
|
|
61
|
+
mixedEvidence: 'Mixed evidence',
|
|
62
|
+
dentalPriority: 'Dental priority',
|
|
63
|
+
skeletalPriority: 'Skeletal priority',
|
|
64
|
+
dentalStage: 'Dental development stage',
|
|
65
|
+
epiphysealStage: 'Epiphyseal fusion stage',
|
|
66
|
+
thirdMolarStage: 'Third molar stage',
|
|
67
|
+
minimumAge: 'Minimum',
|
|
68
|
+
likelyAge: 'Likely',
|
|
69
|
+
maximumAge: 'Maximum',
|
|
70
|
+
maturityScore: 'Maturity score',
|
|
71
|
+
stageLabel: 'Stage',
|
|
72
|
+
ageUnit: 'years',
|
|
73
|
+
dentalShort: 'Dental',
|
|
74
|
+
boneShort: 'Bone',
|
|
75
|
+
molarShort: 'Molar',
|
|
76
|
+
dentalStageHelp: 'Crown, root, and apex formation.',
|
|
77
|
+
epiphysealStageHelp: 'Growth plate closure and skeletal fusion.',
|
|
78
|
+
molarStageHelp: 'Third molar mineralization and apex closure.',
|
|
79
|
+
dentalStage0: 'Absent',
|
|
80
|
+
dentalStage1: 'Cusp',
|
|
81
|
+
dentalStage2: 'Crown',
|
|
82
|
+
dentalStage3: 'Root start',
|
|
83
|
+
dentalStage4: 'Root half',
|
|
84
|
+
dentalStage5: 'Root long',
|
|
85
|
+
dentalStage6: 'Apex narrow',
|
|
86
|
+
dentalStage7: 'Apex closing',
|
|
87
|
+
dentalStage8: 'Complete',
|
|
88
|
+
epiphysealStage0: 'Open',
|
|
89
|
+
epiphysealStage1: 'Margin',
|
|
90
|
+
epiphysealStage2: 'Narrowing',
|
|
91
|
+
epiphysealStage3: 'Bridge',
|
|
92
|
+
epiphysealStage4: 'Half fused',
|
|
93
|
+
epiphysealStage5: 'Mostly fused',
|
|
94
|
+
epiphysealStage6: 'Line only',
|
|
95
|
+
epiphysealStage7: 'Near closed',
|
|
96
|
+
epiphysealStage8: 'Closed',
|
|
97
|
+
molarStage0: 'Absent',
|
|
98
|
+
molarStage1: 'Cusp',
|
|
99
|
+
molarStage2: 'Crown start',
|
|
100
|
+
molarStage3: 'Crown full',
|
|
101
|
+
molarStage4: 'Root start',
|
|
102
|
+
molarStage5: 'Root half',
|
|
103
|
+
molarStage6: 'Root long',
|
|
104
|
+
molarStage7: 'Apex closing',
|
|
105
|
+
molarStage8: 'Complete',
|
|
106
|
+
confidenceexploratory: 'Exploratory',
|
|
107
|
+
confidencemoderate: 'Moderate',
|
|
108
|
+
confidencestrong: 'Strong',
|
|
109
|
+
noteTriage: 'Use as a triage estimate; not a legal age determination.',
|
|
110
|
+
noteFinalAssessment: 'Final forensic age assessment must integrate radiology, clinical dental examination, history, and jurisdiction-specific standards.',
|
|
111
|
+
noteWideInterval: 'Indicators disagree by more than four years; the interval has been widened.',
|
|
112
|
+
},
|
|
113
|
+
seo: [
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Forensic Age Estimator: Dental, Skeletal, and Third Molar Screening Calculator',
|
|
117
|
+
level: 2,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'This forensic age estimator provides a transparent framework for organizing biological maturity evidence prior to a formal assessment. The tool integrates dental development, epiphyseal fusion, and third molar stages to produce an estimated age interval. It addresses common inquiries such as <strong>forensic age estimation</strong>, <strong>dental maturity assessment</strong>, and <strong>skeletal age estimation</strong>, helping users understand how indicators are combined and the inherent uncertainty involved.',
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: 'Results are presented as <strong>minimum, likely, and maximum ages</strong>. Point estimates are often misleading because biological development varies widely due to nutrition, health, ancestry, and environmental factors. This tool should be used as a structured screening aid, not as a definitive legal conclusion.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'title',
|
|
129
|
+
text: 'Understanding Maturity Indicators',
|
|
130
|
+
level: 3,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'paragraph',
|
|
134
|
+
html: 'The maturity scales (0-8) provide a practical abstraction to compare different biological systems. Stage 0 indicates early or absent evidence of maturity, while stage 8 represents completion. These stages do not replace named clinical methods but facilitate a cross-system comparison.',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'table',
|
|
138
|
+
headers: ['Indicator', 'Description', 'Context', 'Caution'],
|
|
139
|
+
rows: [
|
|
140
|
+
['Dental development', 'Formation and eruption (excluding third molars).', 'Primary metric for children and adolescents.', 'Can be biased by dental disease, extractions, or population-specific differences.'],
|
|
141
|
+
['Epiphyseal fusion', 'Progressive closure of growth plates.', 'Key indicator for late adolescence and young adulthood.', 'Highly dependent on the specific bone, sex, and health status.'],
|
|
142
|
+
['Third molar stage', 'Formation and maturation of wisdom teeth.', 'Critical for late adolescent and young adult assessment.', 'Highly variable; requires careful analysis of agenesis and impaction.'],
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'title',
|
|
147
|
+
text: 'Interpreting the Age Interval',
|
|
148
|
+
level: 3,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
type: 'paragraph',
|
|
152
|
+
html: 'The <strong>likely age</strong> represents the weighted central estimate based on your chosen evidence emphasis. The <strong>minimum</strong> and <strong>maximum</strong> values define the uncertainty band. Agreement between indicators results in a narrower band; conflicting signals widen the interval and decrease the confidence rating.',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'table',
|
|
156
|
+
headers: ['Pattern', 'Suggestion', 'Action'],
|
|
157
|
+
rows: [
|
|
158
|
+
['Narrow interval / Strong confidence', 'Indicators align.', 'Document findings and assess if formal validation is required.'],
|
|
159
|
+
['Moderate interval', 'Disagreement or evidence weight impacts result.', 'Verify image quality and stage assignments.'],
|
|
160
|
+
['Wide exploratory interval', 'Indicators conflict.', 'Seek corroborating records or specialist review.'],
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'title',
|
|
165
|
+
text: 'Selecting the Evidence Mode',
|
|
166
|
+
level: 3,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'paragraph',
|
|
170
|
+
html: '<strong>Mixed evidence</strong> is the default, balancing all indicators. Select <strong>dental priority</strong> when dental records are exceptionally robust. Select <strong>skeletal priority</strong> when radiographic skeletal evidence is the most comprehensive data point. These modes do not enhance the quality of weak evidence; they only adjust the mathematical weighting.',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
type: 'list',
|
|
174
|
+
items: [
|
|
175
|
+
'<strong>Dental Priority:</strong> Use when dental development is clearly staged and third molar evidence is present.',
|
|
176
|
+
'<strong>Skeletal Priority:</strong> Use when epiphyseal fusion is the best-documented signal.',
|
|
177
|
+
'<strong>Mixed Evidence:</strong> Ideal for a balanced initial screening.',
|
|
178
|
+
'<strong>Confidence Label:</strong> Monitor this to identify discrepancies before interpretation.',
|
|
179
|
+
],
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'title',
|
|
183
|
+
text: 'Limitations in Forensic Contexts',
|
|
184
|
+
level: 3,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: 'paragraph',
|
|
188
|
+
html: 'Age estimation is supportive, never conclusive proof of identity. In legal or safeguarding contexts-such as disaster victim identification or migration-assessments must be multidisciplinary. Responsible reports must detail the specific methodology, reference population, observer qualifications, and known limitations.',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'paragraph',
|
|
192
|
+
html: 'This tool is designed for <strong>education and triage</strong>. It reinforces why age conclusions require caution and why critical thresholds-such as the 18th birthday-should never be determined solely by a simplified calculator.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Forensic Reporting Checklist',
|
|
197
|
+
level: 3,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'list',
|
|
201
|
+
items: [
|
|
202
|
+
'<strong>Source Documentation:</strong> Explicitly note if stages are based on dental exams, panoramic X-rays, or skeletal imaging (e.g., hand-wrist, clavicle).',
|
|
203
|
+
'<strong>Missing/Weak Data:</strong> Document absences, poor quality imagery, or anomalies clearly.',
|
|
204
|
+
'<strong>Methodological Validation:</strong> Ensure selected methods are recognized within the local jurisdiction.',
|
|
205
|
+
'<strong>Uncertainty Communication:</strong> Always present a range; avoid language implying exact chronological age.',
|
|
206
|
+
'<strong>Specialist Review:</strong> High-stakes cases must be reviewed by forensic odontologists, radiologists, or anthropologists.',
|
|
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
245
|
};
|