@jjlmoya/utils-forensic-science 1.13.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.
Files changed (138) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +61 -59
  3. package/src/category/seo.astro +1 -1
  4. package/src/components/PreviewNavSidebar.astro +1 -1
  5. package/src/components/PreviewToolbar.astro +1 -1
  6. package/src/data.ts +1 -1
  7. package/src/entries.ts +70 -68
  8. package/src/env.d.ts +1 -1
  9. package/src/index.ts +32 -31
  10. package/src/pages/[locale]/[slug].astro +161 -159
  11. package/src/pages/[locale].astro +8 -5
  12. package/src/pages/index.astro +1 -1
  13. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  14. package/src/tests/diacritics_density.test.ts +1 -1
  15. package/src/tests/faq_count.test.ts +19 -19
  16. package/src/tests/i18n_coverage.test.ts +36 -36
  17. package/src/tests/inverted_punctuation.test.ts +1 -1
  18. package/src/tests/locale_completeness.test.ts +2 -2
  19. package/src/tests/mocks/astro_mock.js +1 -1
  20. package/src/tests/no_h1_in_components.test.ts +1 -1
  21. package/src/tests/script_density.test.ts +94 -94
  22. package/src/tests/seo_length.test.ts +46 -46
  23. package/src/tests/seo_parity.test.ts +2 -7
  24. package/src/tests/seo_translation_completeness.test.ts +68 -0
  25. package/src/tests/seo_wellformed_export.test.ts +65 -0
  26. package/src/tests/tool_validation.test.ts +2 -2
  27. package/src/tests/translation_copy.test.ts +23 -24
  28. package/src/tool/bloodstain-pattern-origin-analyzer/component.astro +9 -9
  29. package/src/tool/bloodstain-pattern-origin-analyzer/i18n/zh.ts +1 -1
  30. package/src/tool/dna-profile-match-probability-lab/bibliography.astro +14 -0
  31. package/src/tool/dna-profile-match-probability-lab/bibliography.ts +16 -0
  32. package/src/tool/dna-profile-match-probability-lab/component.astro +121 -0
  33. package/src/tool/dna-profile-match-probability-lab/controller.ts +159 -0
  34. package/src/tool/dna-profile-match-probability-lab/dna-profile-match-probability-lab.css +485 -0
  35. package/src/tool/dna-profile-match-probability-lab/dom-views.ts +93 -0
  36. package/src/tool/dna-profile-match-probability-lab/entry.ts +29 -0
  37. package/src/tool/dna-profile-match-probability-lab/evaluator.ts +19 -0
  38. package/src/tool/dna-profile-match-probability-lab/i18n/de.ts +43 -0
  39. package/src/tool/dna-profile-match-probability-lab/i18n/en.ts +196 -0
  40. package/src/tool/dna-profile-match-probability-lab/i18n/es.ts +40 -0
  41. package/src/tool/dna-profile-match-probability-lab/i18n/fr.ts +10 -0
  42. package/src/tool/dna-profile-match-probability-lab/i18n/id.ts +41 -0
  43. package/src/tool/dna-profile-match-probability-lab/i18n/it.ts +10 -0
  44. package/src/tool/dna-profile-match-probability-lab/i18n/ja.ts +40 -0
  45. package/src/tool/dna-profile-match-probability-lab/i18n/ko.ts +40 -0
  46. package/src/tool/dna-profile-match-probability-lab/i18n/nl.ts +29 -0
  47. package/src/tool/dna-profile-match-probability-lab/i18n/pl.ts +10 -0
  48. package/src/tool/dna-profile-match-probability-lab/i18n/pt.ts +41 -0
  49. package/src/tool/dna-profile-match-probability-lab/i18n/ru.ts +29 -0
  50. package/src/tool/dna-profile-match-probability-lab/i18n/sv.ts +41 -0
  51. package/src/tool/dna-profile-match-probability-lab/i18n/tr.ts +10 -0
  52. package/src/tool/dna-profile-match-probability-lab/i18n/zh.ts +29 -0
  53. package/src/tool/dna-profile-match-probability-lab/index.ts +11 -0
  54. package/src/tool/dna-profile-match-probability-lab/localize.ts +107 -0
  55. package/src/tool/dna-profile-match-probability-lab/logic.test.ts +56 -0
  56. package/src/tool/dna-profile-match-probability-lab/logic.ts +139 -0
  57. package/src/tool/dna-profile-match-probability-lab/seo.astro +15 -0
  58. package/src/tool/dna-profile-match-probability-lab/storage.ts +26 -0
  59. package/src/tool/dna-profile-match-probability-lab/ui.ts +3 -0
  60. package/src/tool/fire-pattern-origin-analyzer/component.astro +1 -1
  61. package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +5 -1
  62. package/src/tool/fire-pattern-origin-analyzer/logic.ts +9 -2
  63. package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +8 -4
  64. package/src/tool/fire-pattern-origin-analyzer/view-model.ts +6 -2
  65. package/src/tool/forensic-age-estimator/bibliography.astro +1 -1
  66. package/src/tool/forensic-age-estimator/component.astro +1 -1
  67. package/src/tool/forensic-age-estimator/entry.ts +17 -17
  68. package/src/tool/forensic-age-estimator/i18n/de.ts +244 -244
  69. package/src/tool/forensic-age-estimator/i18n/en.ts +244 -244
  70. package/src/tool/forensic-age-estimator/i18n/es.ts +244 -244
  71. package/src/tool/forensic-age-estimator/i18n/fr.ts +244 -244
  72. package/src/tool/forensic-age-estimator/i18n/id.ts +244 -244
  73. package/src/tool/forensic-age-estimator/i18n/it.ts +244 -244
  74. package/src/tool/forensic-age-estimator/i18n/nl.ts +244 -244
  75. package/src/tool/forensic-age-estimator/i18n/pl.ts +244 -244
  76. package/src/tool/forensic-age-estimator/i18n/pt.ts +244 -244
  77. package/src/tool/forensic-age-estimator/i18n/ru.ts +244 -244
  78. package/src/tool/forensic-age-estimator/i18n/sv.ts +244 -244
  79. package/src/tool/forensic-age-estimator/i18n/tr.ts +244 -244
  80. package/src/tool/forensic-age-estimator/i18n/zh.ts +245 -245
  81. package/src/tool/forensic-age-estimator/index.ts +1 -1
  82. package/src/tool/forensic-age-estimator/seo.astro +1 -1
  83. package/src/tool/forensic-blood-test-simulator/component.astro +1 -1
  84. package/src/tool/forensic-fiber-comparison-microscope/component.astro +1 -1
  85. package/src/tool/forensic-fiber-comparison-microscope/render.ts +1 -1
  86. package/src/tool/forensic-fiber-comparison-microscope/view.ts +1 -1
  87. package/src/tool/forensic-fingerprint-minutiae-identifier/component.astro +2 -2
  88. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/ja.ts +2 -1
  89. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/zh.ts +2 -0
  90. package/src/tool/forensic-fingerprint-minutiae-identifier/renderer.ts +9 -8
  91. package/src/tool/forensic-glass-becke-line-simulator/component.astro +1 -1
  92. package/src/tool/forensic-glass-becke-line-simulator/view.ts +8 -6
  93. package/src/tool/forensic-image-authenticity-analyzer/component.astro +1 -1
  94. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -105
  95. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -105
  96. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -105
  97. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -105
  98. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +95 -90
  99. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -105
  100. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +7 -2
  101. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +4 -1
  102. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +95 -92
  103. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +95 -92
  104. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -105
  105. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +97 -92
  106. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +97 -93
  107. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +98 -93
  108. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +11 -0
  109. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +1 -1
  110. package/src/tool/forensic-sex-determinator/component.astro +3 -2
  111. package/src/tool/forensic-stature-estimator/component.astro +1 -1
  112. package/src/tool/forensic-stature-estimator/i18n/id.ts +4 -0
  113. package/src/tool/forensic-stature-estimator/i18n/nl.ts +4 -0
  114. package/src/tool/forensic-stature-estimator/i18n/ru.ts +4 -0
  115. package/src/tool/forensic-tlc-ink-simulator/component.astro +1 -1
  116. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +1 -0
  117. package/src/tool/forensic-toolmark-striation-matcher/component.astro +1 -1
  118. package/src/tool/forensic-toolmark-striation-matcher/logic.ts +1 -1
  119. package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +7 -6
  120. package/src/tool/forensic-toolmark-striation-matcher/view.ts +19 -20
  121. package/src/tool/gsr-dispersion-calculator/component.astro +1 -1
  122. package/src/tool/gsr-dispersion-calculator/logic.ts +1 -1
  123. package/src/tool/time-of-death-algor-mortis-calculator/entry.ts +2 -0
  124. package/src/tool/widmark-alcohol-simulator/component.astro +1 -1
  125. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +5 -0
  126. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +2 -1
  127. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +1 -0
  128. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +4 -1
  129. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +4 -1
  130. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +5 -1
  131. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +5 -1
  132. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +5 -1
  133. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +4 -1
  134. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +5 -1
  135. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +4 -1
  136. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +4 -1
  137. package/src/tools.ts +37 -35
  138. 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 = 'estimator-usia-gigi-skelet-molar-ketiga';
5
- const title = 'Estimator Usia Gigi, Skelet, dan Molar Ketiga';
6
- const description = 'Perkirakan interval usia forensik berdasarkan perkembangan gigi, kematangan skelet, dan indikator molar ketiga untuk keperluan skrining serta triase kasus.';
7
-
8
- const howTo = [
9
- {
10
- name: 'Pilih penekanan bukti',
11
- text: 'Pilih "Bukti campuran" untuk hasil triase yang seimbang, "Prioritas gigi" jika temuan klinis gigi lebih kuat, atau "Prioritas skelet" jika indikator radiografi tulang menjadi sumber utama.',
12
- },
13
- {
14
- name: 'Nilai setiap indikator kematangan',
15
- text: 'Tentukan tahap untuk setiap indikator dari 0 hingga 8. Tahap rendah menunjukkan perkembangan awal, tahap menengah menunjukkan maturasi masa remaja, dan tahap tinggi menunjukkan temuan yang matang atau hampir matang.',
16
- },
17
- {
18
- name: 'Baca intervalnya, bukan hanya usia tengah',
19
- text: 'Gunakan nilai usia minimum, kemungkinan, dan maksimum secara bersamaan. Penilaian usia forensik harus dinyatakan sebagai interval karena variasi perkembangan biologis antar individu sangat signifikan.',
20
- },
21
- {
22
- name: 'Periksa diskrepansi antar indikator',
23
- text: 'Jika tahap perkembangan gigi, skelet, dan molar ketiga menunjukkan rentang usia yang berbeda, anggap hasil tersebut sebagai eksploratif dan kumpulkan bukti pendukung sebelum menarik kesimpulan.',
24
- },
25
- ];
26
-
27
- const faq = [
28
- {
29
- question: 'Dapatkah estimator usia forensik ini menentukan kedewasaan hukum?',
30
- answer: 'Tidak. Alat ini adalah kalkulator skrining untuk tujuan edukasi dan triase. Penentuan usia secara hukum memerlukan protokol lokal yang tervalidasi, penilaian oleh ahli, verifikasi identitas yang terdokumentasi, serta kepatuhan terhadap standar yurisdiksi setempat.',
31
- },
32
- {
33
- question: 'Mengapa hasil menunjukkan interval usia?',
34
- answer: 'Erupsi gigi, fusi skelet, dan perkembangan molar ketiga bervariasi bergantung pada faktor keturunan, nutrisi, kesehatan, jenis kelamin, populasi referensi, dan metode pencitraan. Penggunaan interval lebih akurat dan transparan daripada satu angka usia yang pasti.',
35
- },
36
- {
37
- question: 'Apa yang dimaksud dengan bukti campuran?',
38
- answer: 'Bukti campuran menyeimbangkan data dari perkembangan gigi, kematangan skelet, dan tahap molar ketiga. Gunakan opsi ini jika tidak ada satu indikator pun yang jauh lebih dapat diandalkan daripada indikator lainnya dalam berkas kasus tersebut.',
39
- },
40
- {
41
- question: 'Apakah molar ketiga dapat diandalkan untuk setiap kasus?',
42
- answer: 'Molar ketiga berguna pada masa remaja akhir hingga dewasa muda, namun memiliki variabilitas tinggi. Kondisi seperti agenesis, patologi, perbedaan populasi, dan kualitas radiografi dapat membatasi nilai diagnostiknya.',
43
- },
44
- {
45
- question: 'Haruskah alat ini digunakan untuk penanganan kasus nyata?',
46
- answer: 'Alat ini hanya berfungsi sebagai bantuan awal. Penanganan kasus nyata harus menggunakan metode yang tervalidasi, data referensi terkalibrasi, tinjauan independen, serta pelaporan ketidakpastian dan batasan secara transparan.',
47
- },
48
- ];
49
-
50
- export const content: ToolLocaleContent = {
51
- slug,
52
- title,
53
- description,
54
- ui: {
55
- caseBoard: 'Papan kasus forensik',
56
- controls: 'Kontrol usia forensik',
57
- results: 'Hasil usia forensik',
58
- maturityProfile: 'Profil kematangan dinamis',
59
- screeningOnly: 'Perkiraan skrining',
60
- evidenceType: 'Penekanan bukti',
61
- mixedEvidence: 'Bukti campuran',
62
- dentalPriority: 'Prioritas gigi',
63
- skeletalPriority: 'Prioritas skelet',
64
- dentalStage: 'Tahap perkembangan gigi',
65
- epiphysealStage: 'Tahap fusi epifisis',
66
- thirdMolarStage: 'Tahap molar ketiga',
67
- minimumAge: 'Minimum',
68
- likelyAge: 'Kemungkinan',
69
- maximumAge: 'Maksimum',
70
- maturityScore: 'Skor kematangan',
71
- stageLabel: 'Tahap',
72
- ageUnit: 'tahun',
73
- dentalShort: 'Gigi',
74
- boneShort: 'Tulang',
75
- molarShort: 'Molar',
76
- dentalStageHelp: 'Pembentukan mahkota, akar, dan apeks.',
77
- epiphysealStageHelp: 'Penutupan lempeng pertumbuhan dan fusi skelet.',
78
- molarStageHelp: 'Mineralisasi molar ketiga dan penutupan apeks.',
79
- dentalStage0: 'Tidak ada',
80
- dentalStage1: 'Kuspa',
81
- dentalStage2: 'Mahkota',
82
- dentalStage3: 'Akar mulai',
83
- dentalStage4: 'Akar setengah',
84
- dentalStage5: 'Akar panjang',
85
- dentalStage6: 'Apeks sempit',
86
- dentalStage7: 'Apeks menutup',
87
- dentalStage8: 'Lengkap',
88
- epiphysealStage0: 'Terbuka',
89
- epiphysealStage1: 'Tepi',
90
- epiphysealStage2: 'Menyempit',
91
- epiphysealStage3: 'Jembatan',
92
- epiphysealStage4: 'Setengah menyatu',
93
- epiphysealStage5: 'Hampir menyatu',
94
- epiphysealStage6: 'Hanya garis',
95
- epiphysealStage7: 'Hampir tertutup',
96
- epiphysealStage8: 'Tertutup',
97
- molarStage0: 'Tidak ada',
98
- molarStage1: 'Kuspa',
99
- molarStage2: 'Mahkota mulai',
100
- molarStage3: 'Mahkota penuh',
101
- molarStage4: 'Akar mulai',
102
- molarStage5: 'Akar setengah',
103
- molarStage6: 'Akar panjang',
104
- molarStage7: 'Apeks menutup',
105
- molarStage8: 'Lengkap',
106
- confidenceexploratory: 'Eksploratif',
107
- confidencemoderate: 'Sedang',
108
- confidencestrong: 'Kuat',
109
- noteTriage: 'Gunakan sebagai estimasi triase, bukan sebagai penentuan usia hukum.',
110
- noteFinalAssessment: 'Penilaian usia forensik akhir harus mengintegrasikan radiologi, pemeriksaan klinis gigi, riwayat medis, serta standar yurisdiksi setempat.',
111
- noteWideInterval: 'Terdapat perbedaan antar indikator lebih dari empat tahun; interval telah diperlebar.',
112
- },
113
- seo: [
114
- {
115
- type: 'title',
116
- text: 'Estimator usia forensik: kalkulator skrining gigi, skelet, dan molar ketiga',
117
- level: 2,
118
- },
119
- {
120
- type: 'paragraph',
121
- html: 'Gunakan estimator usia forensik ini sebagai cara cepat dan transparan untuk mengatur data bukti kematangan biologis sebelum dilakukan penilaian formal. Kalkulator ini menggabungkan perkembangan gigi, fusi epifisis, dan tahap molar ketiga menjadi interval usia yang diperkirakan. Alat ini menjawab kebutuhan atas <strong>kalkulator estimasi usia forensik</strong>, <strong>penilaian usia gigi</strong>, serta <strong>estimasi usia kematangan skelet</strong>, sehingga pengguna memahami arti indikator, cara penggabungannya, dan batasan ketidakpastian yang melekat pada hasil.',
122
- },
123
- {
124
- type: 'paragraph',
125
- html: 'Hasil estimasi dinyatakan dalam <strong>usia minimum, kemungkinan, dan maksimum</strong>. Penggunaan titik estimasi tunggal dapat menyesatkan karena perkembangan biologis sangat bervariasi antar individu. Anggap kalkulator ini sebagai alat bantu skrining terstruktur, bukan sebagai kesimpulan hukum yang absolut.',
126
- },
127
- {
128
- type: 'title',
129
- text: 'Memahami indikator kematangan',
130
- level: 3,
131
- },
132
- {
133
- type: 'paragraph',
134
- html: 'Skala tahap (0-8) memberikan abstraksi praktis untuk membandingkan sistem biologis yang berbeda. Tahap 0 menunjukkan bukti kematangan awal atau tidak ada, sementara tahap 8 menunjukkan kematangan lengkap. Tahap ini dirancang untuk perbandingan lintas sistem, bukan untuk menggantikan metode klinis spesifik.',
135
- },
136
- {
137
- type: 'table',
138
- headers: ['Indikator', 'Deskripsi', 'Konteks', 'Catatan'],
139
- rows: [
140
- ['Perkembangan gigi', 'Pembentukan dan erupsi (di luar molar ketiga).', 'Metrik utama untuk anak-anak dan remaja.', 'Dapat dipengaruhi oleh penyakit gigi, pencabutan, atau perbedaan populasi.'],
141
- ['Fusi epifisis', 'Penutupan lempeng pertumbuhan.', 'Indikator utama untuk remaja akhir dan dewasa muda.', 'Sangat bergantung pada tulang yang diperiksa, jenis kelamin, dan status kesehatan.'],
142
- ['Tahap molar ketiga', 'Pembentukan dan maturasi gigi bungsu.', 'Kritis untuk penilaian usia remaja akhir.', 'Memiliki variabilitas tinggi; periksa agenesis dan impaksi.'],
143
- ],
144
- },
145
- {
146
- type: 'title',
147
- text: 'Interpretasi interval usia',
148
- level: 3,
149
- },
150
- {
151
- type: 'paragraph',
152
- html: 'Perhatikan ketiga nilai usia secara bersamaan. <strong>Usia kemungkinan</strong> adalah estimasi tengah yang tertimbang. Nilai <strong>minimum</strong> dan <strong>maksimum</strong> mendefinisikan pita ketidakpastian. Konvergensi indikator akan menyempitkan pita ini, sementara sinyal yang bertentangan akan melebarkannya dan menurunkan tingkat kepercayaan.',
153
- },
154
- {
155
- type: 'table',
156
- headers: ['Pola hasil', 'Interpretasi', 'Tindakan'],
157
- rows: [
158
- ['Interval sempit / Kepercayaan kuat', 'Indikator selaras.', 'Dokumentasikan temuan dan periksa apakah validasi metode formal diperlukan.'],
159
- ['Interval sedang', 'Diskrepansi atau penekanan bukti mempengaruhi estimasi.', 'Verifikasi kualitas gambar dan penetapan tahap.'],
160
- ['Interval eksploratif lebar', 'Indikator bertentangan.', 'Jangan mengandalkan estimasi saja; cari catatan tambahan atau tinjauan spesialis.'],
161
- ],
162
- },
163
- {
164
- type: 'title',
165
- text: 'Pemilihan mode bukti',
166
- level: 3,
167
- },
168
- {
169
- type: 'paragraph',
170
- html: '<strong>Bukti campuran</strong> adalah mode default yang menyeimbangkan semua indikator. Pilih <strong>prioritas gigi</strong> jika catatan klinis gigi sangat lengkap. Pilih <strong>prioritas skelet</strong> jika radiografi tulang merupakan data paling kuat. Mode ini tidak meningkatkan kualitas bukti yang lemah, namun menyesuaikan pembobotan matematisnya secara proporsional.',
171
- },
172
- {
173
- type: 'list',
174
- items: [
175
- '<strong>Prioritas gigi:</strong> saat perkembangan gigi jelas dan data molar ketiga tersedia.',
176
- '<strong>Prioritas skelet:</strong> saat fusi epifisis adalah sinyal terbaik yang terdokumentasi.',
177
- '<strong>Bukti campuran:</strong> ideal untuk skrining awal yang seimbang.',
178
- '<strong>Label kepercayaan:</strong> perhatikan untuk mengenali diskrepansi sebelum interpretasi.',
179
- ],
180
- },
181
- {
182
- type: 'title',
183
- text: 'Batasan forensik',
184
- level: 3,
185
- },
186
- {
187
- type: 'paragraph',
188
- html: 'Estimasi usia bersifat mendukung, bukan bukti mutlak identitas. Dalam konteks hukum, perlindungan, atau identifikasi korban bencana, penilaian harus dilakukan secara multidisiplin. Laporan resmi wajib merinci metodologi, populasi referensi, kualifikasi pengamat, dan batasan temuan.',
189
- },
190
- {
191
- type: 'paragraph',
192
- html: 'Alat ini dirancang untuk <strong>edukasi, triase, dan komunikasi transparan</strong>. Kami menekankan bahwa keputusan penting secara hukum-seperti ambang batas usia 18 tahun-tidak boleh didasarkan hanya pada kalkulator yang disederhanakan.',
193
- },
194
- {
195
- type: 'title',
196
- text: 'Daftar periksa laporan forensik',
197
- level: 3,
198
- },
199
- {
200
- type: 'list',
201
- items: [
202
- '<strong>Dokumentasi sumber:</strong> Catat apakah tahap didasarkan pada pemeriksaan gigi klinis, panoramik, atau pencitraan tulang (misalnya tangan, klavikula).',
203
- '<strong>Data hilang/lemah:</strong> Dokumentasikan absennya molar ketiga, kualitas gambar buruk, atau anomali.',
204
- '<strong>Validasi metodologi:</strong> Pastikan metode yang dipilih diakui dalam yurisdiksi setempat.',
205
- '<strong>Komunikasi ketidakpastian:</strong> Selalu berikan rentang; hindari bahasa yang menyiratkan usia kronologis tepat.',
206
- '<strong>Tinjauan spesialis:</strong> Kasus berisiko tinggi wajib ditinjau oleh odontolog forensik, radiolog, atau antropolog.',
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 = 'estimator-usia-gigi-skelet-molar-ketiga';
5
+ const title = 'Estimator Usia Gigi, Skelet, dan Molar Ketiga';
6
+ const description = 'Perkirakan interval usia forensik berdasarkan perkembangan gigi, kematangan skelet, dan indikator molar ketiga untuk keperluan skrining serta triase kasus.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Pilih penekanan bukti',
11
+ text: 'Pilih "Bukti campuran" untuk hasil triase yang seimbang, "Prioritas gigi" jika temuan klinis gigi lebih kuat, atau "Prioritas skelet" jika indikator radiografi tulang menjadi sumber utama.',
12
+ },
13
+ {
14
+ name: 'Nilai setiap indikator kematangan',
15
+ text: 'Tentukan tahap untuk setiap indikator dari 0 hingga 8. Tahap rendah menunjukkan perkembangan awal, tahap menengah menunjukkan maturasi masa remaja, dan tahap tinggi menunjukkan temuan yang matang atau hampir matang.',
16
+ },
17
+ {
18
+ name: 'Baca intervalnya, bukan hanya usia tengah',
19
+ text: 'Gunakan nilai usia minimum, kemungkinan, dan maksimum secara bersamaan. Penilaian usia forensik harus dinyatakan sebagai interval karena variasi perkembangan biologis antar individu sangat signifikan.',
20
+ },
21
+ {
22
+ name: 'Periksa diskrepansi antar indikator',
23
+ text: 'Jika tahap perkembangan gigi, skelet, dan molar ketiga menunjukkan rentang usia yang berbeda, anggap hasil tersebut sebagai eksploratif dan kumpulkan bukti pendukung sebelum menarik kesimpulan.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Dapatkah estimator usia forensik ini menentukan kedewasaan hukum?',
30
+ answer: 'Tidak. Alat ini adalah kalkulator skrining untuk tujuan edukasi dan triase. Penentuan usia secara hukum memerlukan protokol lokal yang tervalidasi, penilaian oleh ahli, verifikasi identitas yang terdokumentasi, serta kepatuhan terhadap standar yurisdiksi setempat.',
31
+ },
32
+ {
33
+ question: 'Mengapa hasil menunjukkan interval usia?',
34
+ answer: 'Erupsi gigi, fusi skelet, dan perkembangan molar ketiga bervariasi bergantung pada faktor keturunan, nutrisi, kesehatan, jenis kelamin, populasi referensi, dan metode pencitraan. Penggunaan interval lebih akurat dan transparan daripada satu angka usia yang pasti.',
35
+ },
36
+ {
37
+ question: 'Apa yang dimaksud dengan bukti campuran?',
38
+ answer: 'Bukti campuran menyeimbangkan data dari perkembangan gigi, kematangan skelet, dan tahap molar ketiga. Gunakan opsi ini jika tidak ada satu indikator pun yang jauh lebih dapat diandalkan daripada indikator lainnya dalam berkas kasus tersebut.',
39
+ },
40
+ {
41
+ question: 'Apakah molar ketiga dapat diandalkan untuk setiap kasus?',
42
+ answer: 'Molar ketiga berguna pada masa remaja akhir hingga dewasa muda, namun memiliki variabilitas tinggi. Kondisi seperti agenesis, patologi, perbedaan populasi, dan kualitas radiografi dapat membatasi nilai diagnostiknya.',
43
+ },
44
+ {
45
+ question: 'Haruskah alat ini digunakan untuk penanganan kasus nyata?',
46
+ answer: 'Alat ini hanya berfungsi sebagai bantuan awal. Penanganan kasus nyata harus menggunakan metode yang tervalidasi, data referensi terkalibrasi, tinjauan independen, serta pelaporan ketidakpastian dan batasan secara transparan.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ caseBoard: 'Papan kasus forensik',
56
+ controls: 'Kontrol usia forensik',
57
+ results: 'Hasil usia forensik',
58
+ maturityProfile: 'Profil kematangan dinamis',
59
+ screeningOnly: 'Perkiraan skrining',
60
+ evidenceType: 'Penekanan bukti',
61
+ mixedEvidence: 'Bukti campuran',
62
+ dentalPriority: 'Prioritas gigi',
63
+ skeletalPriority: 'Prioritas skelet',
64
+ dentalStage: 'Tahap perkembangan gigi',
65
+ epiphysealStage: 'Tahap fusi epifisis',
66
+ thirdMolarStage: 'Tahap molar ketiga',
67
+ minimumAge: 'Minimum',
68
+ likelyAge: 'Kemungkinan',
69
+ maximumAge: 'Maksimum',
70
+ maturityScore: 'Skor kematangan',
71
+ stageLabel: 'Tahap',
72
+ ageUnit: 'tahun',
73
+ dentalShort: 'Gigi',
74
+ boneShort: 'Tulang',
75
+ molarShort: 'Molar',
76
+ dentalStageHelp: 'Pembentukan mahkota, akar, dan apeks.',
77
+ epiphysealStageHelp: 'Penutupan lempeng pertumbuhan dan fusi skelet.',
78
+ molarStageHelp: 'Mineralisasi molar ketiga dan penutupan apeks.',
79
+ dentalStage0: 'Tidak ada',
80
+ dentalStage1: 'Kuspa',
81
+ dentalStage2: 'Mahkota',
82
+ dentalStage3: 'Akar mulai',
83
+ dentalStage4: 'Akar setengah',
84
+ dentalStage5: 'Akar panjang',
85
+ dentalStage6: 'Apeks sempit',
86
+ dentalStage7: 'Apeks menutup',
87
+ dentalStage8: 'Lengkap',
88
+ epiphysealStage0: 'Terbuka',
89
+ epiphysealStage1: 'Tepi',
90
+ epiphysealStage2: 'Menyempit',
91
+ epiphysealStage3: 'Jembatan',
92
+ epiphysealStage4: 'Setengah menyatu',
93
+ epiphysealStage5: 'Hampir menyatu',
94
+ epiphysealStage6: 'Hanya garis',
95
+ epiphysealStage7: 'Hampir tertutup',
96
+ epiphysealStage8: 'Tertutup',
97
+ molarStage0: 'Tidak ada',
98
+ molarStage1: 'Kuspa',
99
+ molarStage2: 'Mahkota mulai',
100
+ molarStage3: 'Mahkota penuh',
101
+ molarStage4: 'Akar mulai',
102
+ molarStage5: 'Akar setengah',
103
+ molarStage6: 'Akar panjang',
104
+ molarStage7: 'Apeks menutup',
105
+ molarStage8: 'Lengkap',
106
+ confidenceexploratory: 'Eksploratif',
107
+ confidencemoderate: 'Sedang',
108
+ confidencestrong: 'Kuat',
109
+ noteTriage: 'Gunakan sebagai estimasi triase, bukan sebagai penentuan usia hukum.',
110
+ noteFinalAssessment: 'Penilaian usia forensik akhir harus mengintegrasikan radiologi, pemeriksaan klinis gigi, riwayat medis, serta standar yurisdiksi setempat.',
111
+ noteWideInterval: 'Terdapat perbedaan antar indikator lebih dari empat tahun; interval telah diperlebar.',
112
+ },
113
+ seo: [
114
+ {
115
+ type: 'title',
116
+ text: 'Estimator usia forensik: kalkulator skrining gigi, skelet, dan molar ketiga',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Gunakan estimator usia forensik ini sebagai cara cepat dan transparan untuk mengatur data bukti kematangan biologis sebelum dilakukan penilaian formal. Kalkulator ini menggabungkan perkembangan gigi, fusi epifisis, dan tahap molar ketiga menjadi interval usia yang diperkirakan. Alat ini menjawab kebutuhan atas <strong>kalkulator estimasi usia forensik</strong>, <strong>penilaian usia gigi</strong>, serta <strong>estimasi usia kematangan skelet</strong>, sehingga pengguna memahami arti indikator, cara penggabungannya, dan batasan ketidakpastian yang melekat pada hasil.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Hasil estimasi dinyatakan dalam <strong>usia minimum, kemungkinan, dan maksimum</strong>. Penggunaan titik estimasi tunggal dapat menyesatkan karena perkembangan biologis sangat bervariasi antar individu. Anggap kalkulator ini sebagai alat bantu skrining terstruktur, bukan sebagai kesimpulan hukum yang absolut.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Memahami indikator kematangan',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Skala tahap (0-8) memberikan abstraksi praktis untuk membandingkan sistem biologis yang berbeda. Tahap 0 menunjukkan bukti kematangan awal atau tidak ada, sementara tahap 8 menunjukkan kematangan lengkap. Tahap ini dirancang untuk perbandingan lintas sistem, bukan untuk menggantikan metode klinis spesifik.',
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Indikator', 'Deskripsi', 'Konteks', 'Catatan'],
139
+ rows: [
140
+ ['Perkembangan gigi', 'Pembentukan dan erupsi (di luar molar ketiga).', 'Metrik utama untuk anak-anak dan remaja.', 'Dapat dipengaruhi oleh penyakit gigi, pencabutan, atau perbedaan populasi.'],
141
+ ['Fusi epifisis', 'Penutupan lempeng pertumbuhan.', 'Indikator utama untuk remaja akhir dan dewasa muda.', 'Sangat bergantung pada tulang yang diperiksa, jenis kelamin, dan status kesehatan.'],
142
+ ['Tahap molar ketiga', 'Pembentukan dan maturasi gigi bungsu.', 'Kritis untuk penilaian usia remaja akhir.', 'Memiliki variabilitas tinggi; periksa agenesis dan impaksi.'],
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Interpretasi interval usia',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Perhatikan ketiga nilai usia secara bersamaan. <strong>Usia kemungkinan</strong> adalah estimasi tengah yang tertimbang. Nilai <strong>minimum</strong> dan <strong>maksimum</strong> mendefinisikan pita ketidakpastian. Konvergensi indikator akan menyempitkan pita ini, sementara sinyal yang bertentangan akan melebarkannya dan menurunkan tingkat kepercayaan.',
153
+ },
154
+ {
155
+ type: 'table',
156
+ headers: ['Pola hasil', 'Interpretasi', 'Tindakan'],
157
+ rows: [
158
+ ['Interval sempit / Kepercayaan kuat', 'Indikator selaras.', 'Dokumentasikan temuan dan periksa apakah validasi metode formal diperlukan.'],
159
+ ['Interval sedang', 'Diskrepansi atau penekanan bukti mempengaruhi estimasi.', 'Verifikasi kualitas gambar dan penetapan tahap.'],
160
+ ['Interval eksploratif lebar', 'Indikator bertentangan.', 'Jangan mengandalkan estimasi saja; cari catatan tambahan atau tinjauan spesialis.'],
161
+ ],
162
+ },
163
+ {
164
+ type: 'title',
165
+ text: 'Pemilihan mode bukti',
166
+ level: 3,
167
+ },
168
+ {
169
+ type: 'paragraph',
170
+ html: '<strong>Bukti campuran</strong> adalah mode default yang menyeimbangkan semua indikator. Pilih <strong>prioritas gigi</strong> jika catatan klinis gigi sangat lengkap. Pilih <strong>prioritas skelet</strong> jika radiografi tulang merupakan data paling kuat. Mode ini tidak meningkatkan kualitas bukti yang lemah, namun menyesuaikan pembobotan matematisnya secara proporsional.',
171
+ },
172
+ {
173
+ type: 'list',
174
+ items: [
175
+ '<strong>Prioritas gigi:</strong> saat perkembangan gigi jelas dan data molar ketiga tersedia.',
176
+ '<strong>Prioritas skelet:</strong> saat fusi epifisis adalah sinyal terbaik yang terdokumentasi.',
177
+ '<strong>Bukti campuran:</strong> ideal untuk skrining awal yang seimbang.',
178
+ '<strong>Label kepercayaan:</strong> perhatikan untuk mengenali diskrepansi sebelum interpretasi.',
179
+ ],
180
+ },
181
+ {
182
+ type: 'title',
183
+ text: 'Batasan forensik',
184
+ level: 3,
185
+ },
186
+ {
187
+ type: 'paragraph',
188
+ html: 'Estimasi usia bersifat mendukung, bukan bukti mutlak identitas. Dalam konteks hukum, perlindungan, atau identifikasi korban bencana, penilaian harus dilakukan secara multidisiplin. Laporan resmi wajib merinci metodologi, populasi referensi, kualifikasi pengamat, dan batasan temuan.',
189
+ },
190
+ {
191
+ type: 'paragraph',
192
+ html: 'Alat ini dirancang untuk <strong>edukasi, triase, dan komunikasi transparan</strong>. Kami menekankan bahwa keputusan penting secara hukum-seperti ambang batas usia 18 tahun-tidak boleh didasarkan hanya pada kalkulator yang disederhanakan.',
193
+ },
194
+ {
195
+ type: 'title',
196
+ text: 'Daftar periksa laporan forensik',
197
+ level: 3,
198
+ },
199
+ {
200
+ type: 'list',
201
+ items: [
202
+ '<strong>Dokumentasi sumber:</strong> Catat apakah tahap didasarkan pada pemeriksaan gigi klinis, panoramik, atau pencitraan tulang (misalnya tangan, klavikula).',
203
+ '<strong>Data hilang/lemah:</strong> Dokumentasikan absennya molar ketiga, kualitas gambar buruk, atau anomali.',
204
+ '<strong>Validasi metodologi:</strong> Pastikan metode yang dipilih diakui dalam yurisdiksi setempat.',
205
+ '<strong>Komunikasi ketidakpastian:</strong> Selalu berikan rentang; hindari bahasa yang menyiratkan usia kronologis tepat.',
206
+ '<strong>Tinjauan spesialis:</strong> Kasus berisiko tinggi wajib ditinjau oleh odontolog forensik, radiolog, atau antropolog.',
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
  };