@alfadocs/ui-kit 1.1.0 → 1.3.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/dist/_chunks/{actions-cell-renderer-ClGCSQnA.js → actions-cell-renderer-Ceah0ywE.js} +2 -2
- package/dist/_chunks/anamnesis-i18n-DGRdwc0i.js +8720 -0
- package/dist/_chunks/arrow-up-BYvcvTkB.js +26 -0
- package/dist/_chunks/{editable-currency-cell-renderer-Dus_sBvX.js → editable-currency-cell-renderer-Uhzkd0ZP.js} +68 -88
- package/dist/_chunks/{exceljs.min-DUJ-5CGx.js → exceljs.min-D2MHbJsF.js} +10 -9
- package/dist/_chunks/{face-scheme-Cou2efl7.js → face-scheme-C00IvkUA.js} +237 -243
- package/dist/_chunks/{file-manager-CNSLiuLo.js → file-manager-lNjcSXoD.js} +174 -186
- package/dist/_chunks/minus-BQDHq1c1.js +12 -0
- package/dist/_chunks/notebook-pen-CO7HoM-W.js +25 -0
- package/dist/_chunks/notes-panel-DPsgB4Mv.js +351 -0
- package/dist/_chunks/{patient-table-DXk0wW8Q.js → patient-table-C7QHFC63.js} +2 -2
- package/dist/_chunks/share-2-B49jcW2I.js +18 -0
- package/dist/_chunks/sparkline-BTY4B5tv.js +509 -0
- package/dist/agent-catalog.json +27 -1
- package/dist/agent-i18n/en.json +4 -2
- package/dist/components/data-table/index.js +2 -2
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/notes-panel/index.d.ts +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +45 -2
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.d.ts +25 -0
- package/dist/host-compat.css +4 -1
- package/dist/i18n/locales/ar.d.ts +2 -0
- package/dist/i18n/locales/ar.js +2 -0
- package/dist/i18n/locales/de.d.ts +2 -0
- package/dist/i18n/locales/de.js +2 -0
- package/dist/i18n/locales/el.d.ts +2 -0
- package/dist/i18n/locales/el.js +2 -0
- package/dist/i18n/locales/en.d.ts +2 -0
- package/dist/i18n/locales/en.js +2 -0
- package/dist/i18n/locales/es.d.ts +2 -0
- package/dist/i18n/locales/es.js +2 -0
- package/dist/i18n/locales/fr.d.ts +2 -0
- package/dist/i18n/locales/fr.js +2 -0
- package/dist/i18n/locales/hi.d.ts +2 -0
- package/dist/i18n/locales/hi.js +2 -0
- package/dist/i18n/locales/it.d.ts +2 -0
- package/dist/i18n/locales/it.js +2 -0
- package/dist/i18n/locales/ja.d.ts +2 -0
- package/dist/i18n/locales/ja.js +2 -0
- package/dist/i18n/locales/nl.d.ts +2 -0
- package/dist/i18n/locales/nl.js +2 -0
- package/dist/i18n/locales/pl.d.ts +2 -0
- package/dist/i18n/locales/pl.js +2 -0
- package/dist/i18n/locales/pt.d.ts +2 -0
- package/dist/i18n/locales/pt.js +2 -0
- package/dist/i18n/locales/ro.d.ts +2 -0
- package/dist/i18n/locales/ro.js +2 -0
- package/dist/i18n/locales/ru.d.ts +2 -0
- package/dist/i18n/locales/ru.js +2 -0
- package/dist/i18n/locales/sq.d.ts +2 -0
- package/dist/i18n/locales/sq.js +2 -0
- package/dist/i18n/locales/sv.d.ts +2 -0
- package/dist/i18n/locales/sv.js +2 -0
- package/dist/i18n/locales/tr.d.ts +2 -0
- package/dist/i18n/locales/tr.js +2 -0
- package/dist/i18n/locales/zh.d.ts +2 -0
- package/dist/i18n/locales/zh.js +2 -0
- package/dist/index.js +132 -109
- package/dist/locales/ar.json +2 -0
- package/dist/locales/de.json +2 -0
- package/dist/locales/el.json +2 -0
- package/dist/locales/en.json +2 -0
- package/dist/locales/es.json +2 -0
- package/dist/locales/fr.json +2 -0
- package/dist/locales/hi.json +2 -0
- package/dist/locales/it.json +2 -0
- package/dist/locales/ja.json +2 -0
- package/dist/locales/nl.json +2 -0
- package/dist/locales/pl.json +2 -0
- package/dist/locales/pt.json +2 -0
- package/dist/locales/ro.json +2 -0
- package/dist/locales/ru.json +2 -0
- package/dist/locales/sq.json +2 -0
- package/dist/locales/sv.json +2 -0
- package/dist/locales/tr.json +2 -0
- package/dist/locales/zh.json +2 -0
- package/dist/patterns/_shared/target-tile.d.ts +31 -0
- package/dist/patterns/anamnesis/anamnesis-catalogue.d.ts +23 -0
- package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts +82 -0
- package/dist/patterns/anamnesis/anamnesis-compile-blocks.d.ts +46 -0
- package/dist/patterns/anamnesis/anamnesis-compile.d.ts +48 -0
- package/dist/patterns/anamnesis/anamnesis-config-editor.d.ts +26 -0
- package/dist/patterns/anamnesis/anamnesis-config.d.ts +62 -0
- package/dist/patterns/anamnesis/anamnesis-derive.d.ts +194 -0
- package/dist/patterns/anamnesis/anamnesis-digest.d.ts +84 -0
- package/dist/patterns/anamnesis/anamnesis-disclosure.d.ts +19 -0
- package/dist/patterns/anamnesis/anamnesis-event-bar.d.ts +12 -0
- package/dist/patterns/anamnesis/anamnesis-events.d.ts +60 -0
- package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts +48 -0
- package/dist/patterns/anamnesis/anamnesis-evolution.d.ts +37 -0
- package/dist/patterns/anamnesis/anamnesis-export-download.d.ts +10 -0
- package/dist/patterns/anamnesis/anamnesis-export-menu.d.ts +23 -0
- package/dist/patterns/anamnesis/anamnesis-export-pdf.d.ts +36 -0
- package/dist/patterns/anamnesis/anamnesis-export.d.ts +143 -0
- package/dist/patterns/anamnesis/anamnesis-field.d.ts +14 -0
- package/dist/patterns/anamnesis/anamnesis-format.d.ts +67 -0
- package/dist/patterns/anamnesis/anamnesis-i18n.d.ts +6 -0
- package/dist/patterns/anamnesis/anamnesis-indicators.d.ts +53 -0
- package/dist/patterns/anamnesis/anamnesis-intake.d.ts +16 -0
- package/dist/patterns/anamnesis/anamnesis-matrix.d.ts +91 -0
- package/dist/patterns/anamnesis/anamnesis-notes.d.ts +19 -0
- package/dist/patterns/anamnesis/anamnesis-readonly.d.ts +17 -0
- package/dist/patterns/anamnesis/anamnesis-summary.d.ts +35 -0
- package/dist/patterns/anamnesis/anamnesis-target-editor.d.ts +18 -0
- package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts +14 -0
- package/dist/patterns/anamnesis/anamnesis-targets.d.ts +58 -0
- package/dist/patterns/anamnesis/anamnesis-types.d.ts +336 -0
- package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts +35 -0
- package/dist/patterns/anamnesis/anamnesis-window.d.ts +37 -0
- package/dist/patterns/anamnesis/anamnesis.d.ts +48 -0
- package/dist/patterns/anamnesis/index.d.ts +8 -0
- package/dist/patterns/anamnesis/index.js +26 -0
- package/dist/tokens.css +1 -1
- package/package.json +5 -1
- package/dist/_chunks/notes-panel-CTcOLLVo.js +0 -324
- package/dist/_chunks/sparkline-DLq7xwic.js +0 -394
package/dist/locales/ar.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} نجوم · {{count}} تقييمات"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — اختر للفتح",
|
|
1257
1258
|
"annotations": "مُعلَّم: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: الأدنى {{min}}, الأقصى {{max}}, الحالي {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "الأدنى {{min}}, الأقصى {{max}}, الحالي {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "ملاحظة جديدة",
|
|
3764
3765
|
"add": "إضافة ملاحظة",
|
|
3765
3766
|
"empty": "لا توجد ملاحظات بعد.",
|
|
3767
|
+
"current": "الملاحظة الحالية",
|
|
3766
3768
|
"clinicalToggle": "ملاحظة سريرية",
|
|
3767
3769
|
"clinicalGated": "ليست لديك صلاحية كتابة الملاحظات السريرية."
|
|
3768
3770
|
},
|
package/dist/locales/de.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} Sterne · {{count}} Bewertungen"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} – zum Öffnen auswählen",
|
|
1257
1258
|
"annotations": "Markiert: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: Min. {{min}}, Max. {{max}}, aktuell {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "Min. {{min}}, Max. {{max}}, aktuell {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Neue Notiz",
|
|
3764
3765
|
"add": "Notiz hinzufügen",
|
|
3765
3766
|
"empty": "Noch keine Notizen.",
|
|
3767
|
+
"current": "Aktuelle Notiz",
|
|
3766
3768
|
"clinicalToggle": "Klinische Notiz",
|
|
3767
3769
|
"clinicalGated": "Sie haben keine Berechtigung, klinische Notizen zu schreiben."
|
|
3768
3770
|
},
|
package/dist/locales/el.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} αστέρια · {{count}} αξιολογήσεις"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — επιλέξτε για άνοιγμα",
|
|
1257
1258
|
"annotations": "Σημειωμένο: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: ελάχ. {{min}}, μέγ. {{max}}, τρέχον {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "ελάχ. {{min}}, μέγ. {{max}}, τρέχον {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Νέα σημείωση",
|
|
3764
3765
|
"add": "Προσθήκη σημείωσης",
|
|
3765
3766
|
"empty": "Δεν υπάρχουν σημειώσεις ακόμη.",
|
|
3767
|
+
"current": "Τρέχουσα σημείωση",
|
|
3766
3768
|
"clinicalToggle": "Κλινική σημείωση",
|
|
3767
3769
|
"clinicalGated": "Δεν έχετε δικαίωμα καταχώρισης κλινικών σημειώσεων."
|
|
3768
3770
|
},
|
package/dist/locales/en.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} stars · {{count}} reviews"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — select to open",
|
|
1257
1258
|
"annotations": "Marked: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, max {{max}}, current {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, current {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "New note",
|
|
3764
3765
|
"add": "Add note",
|
|
3765
3766
|
"empty": "No notes yet.",
|
|
3767
|
+
"current": "Current note",
|
|
3766
3768
|
"clinicalToggle": "Clinical note",
|
|
3767
3769
|
"clinicalGated": "You do not have permission to write clinical notes."
|
|
3768
3770
|
},
|
package/dist/locales/es.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} estrellas · {{count}} opiniones"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — selecciona para abrir",
|
|
1257
1258
|
"annotations": "Marcado: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: mín. {{min}}, máx. {{max}}, actual {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "mín. {{min}}, máx. {{max}}, actual {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nueva nota",
|
|
3764
3765
|
"add": "Añadir nota",
|
|
3765
3766
|
"empty": "Aún no hay notas.",
|
|
3767
|
+
"current": "Nota actual",
|
|
3766
3768
|
"clinicalToggle": "Nota clínica",
|
|
3767
3769
|
"clinicalGated": "No tienes permiso para escribir notas clínicas."
|
|
3768
3770
|
},
|
package/dist/locales/fr.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} étoiles · {{count}} avis"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — sélectionner pour ouvrir",
|
|
1257
1258
|
"annotations": "Repères : {{list}}",
|
|
1258
1259
|
"summary": "{{label}} : min {{min}}, max {{max}}, actuel {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, actuel {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nouvelle note",
|
|
3764
3765
|
"add": "Ajouter une note",
|
|
3765
3766
|
"empty": "Aucune note pour le moment.",
|
|
3767
|
+
"current": "Note actuelle",
|
|
3766
3768
|
"clinicalToggle": "Note clinique",
|
|
3767
3769
|
"clinicalGated": "Vous n'avez pas l'autorisation de rédiger des notes cliniques."
|
|
3768
3770
|
},
|
package/dist/locales/hi.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} स्टार · {{count}} समीक्षाएं"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — खोलने के लिए चुनें",
|
|
1257
1258
|
"annotations": "चिह्नित: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: न्यूनतम {{min}}, अधिकतम {{max}}, वर्तमान {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "न्यूनतम {{min}}, अधिकतम {{max}}, वर्तमान {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "नया नोट",
|
|
3764
3765
|
"add": "नोट जोड़ें",
|
|
3765
3766
|
"empty": "अभी तक कोई नोट नहीं।",
|
|
3767
|
+
"current": "वर्तमान नोट",
|
|
3766
3768
|
"clinicalToggle": "चिकित्सीय नोट",
|
|
3767
3769
|
"clinicalGated": "आपके पास चिकित्सीय नोट लिखने की अनुमति नहीं है।"
|
|
3768
3770
|
},
|
package/dist/locales/it.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} stelle · {{count}} opinioni"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — seleziona per aprire",
|
|
1257
1258
|
"annotations": "Segnato: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, max {{max}}, attuale {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, attuale {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nuova nota",
|
|
3764
3765
|
"add": "Aggiungi nota",
|
|
3765
3766
|
"empty": "Nessuna nota.",
|
|
3767
|
+
"current": "Nota attuale",
|
|
3766
3768
|
"clinicalToggle": "Nota clinica",
|
|
3767
3769
|
"clinicalGated": "Non hai i permessi per scrivere note cliniche."
|
|
3768
3770
|
},
|
package/dist/locales/ja.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} 点 · {{count}} 件のレビュー"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — 選択して開く",
|
|
1257
1258
|
"annotations": "マーカー: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: 最小 {{min}}、最大 {{max}}、現在 {{current}}、{{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "最小 {{min}}、最大 {{max}}、現在 {{current}}、{{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "新規メモ",
|
|
3764
3765
|
"add": "メモを追加",
|
|
3765
3766
|
"empty": "メモはまだありません。",
|
|
3767
|
+
"current": "現在のメモ",
|
|
3766
3768
|
"clinicalToggle": "診療記録",
|
|
3767
3769
|
"clinicalGated": "診療記録を作成する権限がありません。"
|
|
3768
3770
|
},
|
package/dist/locales/nl.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} sterren · {{count}} beoordelingen"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — selecteer om te openen",
|
|
1257
1258
|
"annotations": "Gemarkeerd: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, max {{max}}, huidig {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, huidig {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nieuwe notitie",
|
|
3764
3765
|
"add": "Notitie toevoegen",
|
|
3765
3766
|
"empty": "Nog geen notities.",
|
|
3767
|
+
"current": "Huidige notitie",
|
|
3766
3768
|
"clinicalToggle": "Klinische notitie",
|
|
3767
3769
|
"clinicalGated": "U hebt geen rechten om klinische notities te schrijven."
|
|
3768
3770
|
},
|
package/dist/locales/pl.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} gwiazdek · {{count}} opinii"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — wybierz, aby otworzyć",
|
|
1257
1258
|
"annotations": "Oznaczono: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, maks {{max}}, bieżąca {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, maks {{max}}, bieżąca {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nowa notatka",
|
|
3764
3765
|
"add": "Dodaj notatkę",
|
|
3765
3766
|
"empty": "Brak notatek.",
|
|
3767
|
+
"current": "Bieżąca notatka",
|
|
3766
3768
|
"clinicalToggle": "Notatka kliniczna",
|
|
3767
3769
|
"clinicalGated": "Nie masz uprawnień do tworzenia notatek klinicznych."
|
|
3768
3770
|
},
|
package/dist/locales/pt.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} estrelas · {{count}} avaliações"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — selecione para abrir",
|
|
1257
1258
|
"annotations": "Marcado: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: mín {{min}}, máx {{max}}, atual {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "mín {{min}}, máx {{max}}, atual {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Nova nota",
|
|
3764
3765
|
"add": "Adicionar nota",
|
|
3765
3766
|
"empty": "Ainda não há notas.",
|
|
3767
|
+
"current": "Nota atual",
|
|
3766
3768
|
"clinicalToggle": "Nota clínica",
|
|
3767
3769
|
"clinicalGated": "Não tem permissão para escrever notas clínicas."
|
|
3768
3770
|
},
|
package/dist/locales/ro.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} stele · {{count}} recenzii"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — selectați pentru a deschide",
|
|
1257
1258
|
"annotations": "Marcat: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, max {{max}}, curent {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, curent {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Notă nouă",
|
|
3764
3765
|
"add": "Adaugă notă",
|
|
3765
3766
|
"empty": "Nicio notă încă.",
|
|
3767
|
+
"current": "Nota curentă",
|
|
3766
3768
|
"clinicalToggle": "Notă clinică",
|
|
3767
3769
|
"clinicalGated": "Nu ai permisiunea de a scrie note clinice."
|
|
3768
3770
|
},
|
package/dist/locales/ru.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} звёзд · {{count}} отзывов"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — выберите, чтобы открыть",
|
|
1257
1258
|
"annotations": "Отмечено: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: мин {{min}}, макс {{max}}, текущее {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "мин {{min}}, макс {{max}}, текущее {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Новая заметка",
|
|
3764
3765
|
"add": "Добавить заметку",
|
|
3765
3766
|
"empty": "Заметок пока нет.",
|
|
3767
|
+
"current": "Текущая заметка",
|
|
3766
3768
|
"clinicalToggle": "Клиническая запись",
|
|
3767
3769
|
"clinicalGated": "У вас нет прав для создания клинических записей."
|
|
3768
3770
|
},
|
package/dist/locales/sq.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} yje · {{count}} opinione"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — zgjidhni për ta hapur",
|
|
1257
1258
|
"annotations": "Shënuar: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, maks {{max}}, aktual {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, maks {{max}}, aktual {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Shënim i ri",
|
|
3764
3765
|
"add": "Shto shënim",
|
|
3765
3766
|
"empty": "Ende nuk ka shënime.",
|
|
3767
|
+
"current": "Shënimi aktual",
|
|
3766
3768
|
"clinicalToggle": "Shënim klinik",
|
|
3767
3769
|
"clinicalGated": "Nuk keni leje për të shkruar shënime klinike."
|
|
3768
3770
|
},
|
package/dist/locales/sv.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} stjärnor · {{count}} recensioner"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — välj för att öppna",
|
|
1257
1258
|
"annotations": "Markerat: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, max {{max}}, aktuell {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, max {{max}}, aktuell {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Ny anteckning",
|
|
3764
3765
|
"add": "Lägg till anteckning",
|
|
3765
3766
|
"empty": "Inga anteckningar ännu.",
|
|
3767
|
+
"current": "Aktuell anteckning",
|
|
3766
3768
|
"clinicalToggle": "Klinisk anteckning",
|
|
3767
3769
|
"clinicalGated": "Du har inte behörighet att skriva kliniska anteckningar."
|
|
3768
3770
|
},
|
package/dist/locales/tr.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} yıldız · {{count}} değerlendirme"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — açmak için seçin",
|
|
1257
1258
|
"annotations": "İşaretli: {{list}}",
|
|
1258
1259
|
"summary": "{{label}}: min {{min}}, maks {{max}}, güncel {{current}}, {{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "min {{min}}, maks {{max}}, güncel {{current}}, {{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "Yeni not",
|
|
3764
3765
|
"add": "Not ekle",
|
|
3765
3766
|
"empty": "Henüz not yok.",
|
|
3767
|
+
"current": "Geçerli not",
|
|
3766
3768
|
"clinicalToggle": "Klinik not",
|
|
3767
3769
|
"clinicalGated": "Klinik not yazma izniniz yok."
|
|
3768
3770
|
},
|
package/dist/locales/zh.json
CHANGED
|
@@ -1254,6 +1254,7 @@
|
|
|
1254
1254
|
"reviews_other": "{{value}} 星 · {{count}} 条评价"
|
|
1255
1255
|
},
|
|
1256
1256
|
"sparkline": {
|
|
1257
|
+
"annotationAction": "{{label}} — 选择以打开",
|
|
1257
1258
|
"annotations": "标记:{{list}}",
|
|
1258
1259
|
"summary": "{{label}}:最小值 {{min}},最大值 {{max}},当前值 {{current}},{{direction}}",
|
|
1259
1260
|
"summaryNoLabel": "最小值 {{min}},最大值 {{max}},当前值 {{current}},{{direction}}",
|
|
@@ -3763,6 +3764,7 @@
|
|
|
3763
3764
|
"composerLabel": "新建备注",
|
|
3764
3765
|
"add": "添加备注",
|
|
3765
3766
|
"empty": "暂无备注。",
|
|
3767
|
+
"current": "当前备注",
|
|
3766
3768
|
"clinicalToggle": "临床记录",
|
|
3767
3769
|
"clinicalGated": "您没有撰写临床记录的权限。"
|
|
3768
3770
|
},
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/** Where the patient stands against one target. */
|
|
3
|
+
export type TargetStatus = 'onTarget' | 'approaching' | 'offTarget';
|
|
4
|
+
/** Traffic light → semantic Badge variant. green / amber / red map to the
|
|
5
|
+
* kit's success / warning / error tokens (each carries its own -foreground
|
|
6
|
+
* pairing, so the chip stays legible in all four themes). */
|
|
7
|
+
export declare const TARGET_STATUS_VARIANT: Record<TargetStatus, 'success' | 'warning' | 'error'>;
|
|
8
|
+
export interface TargetTileProps {
|
|
9
|
+
/** `outlined` (default) for hosts already inside a Card; `elevated`
|
|
10
|
+
* mirrors the kit Card's elevated recipe for tiles that read as cards. */
|
|
11
|
+
variant?: 'outlined' | 'elevated';
|
|
12
|
+
/** Metric name, e.g. "Target weight". Also the group's accessible name. */
|
|
13
|
+
label: string;
|
|
14
|
+
/** The TARGET, formatted with its unit — the tile's headline figure. */
|
|
15
|
+
target: string;
|
|
16
|
+
/** The patient's current value, already phrased ("Now 74.5 kg"). */
|
|
17
|
+
now: string;
|
|
18
|
+
/** Omit (or `null`) when no target is set — the tile then shows no chip. */
|
|
19
|
+
status?: TargetStatus | null;
|
|
20
|
+
/** Translated status text. Required whenever `status` is set: the traffic
|
|
21
|
+
* light is colour PLUS text, never colour alone (WCAG 1.4.1). */
|
|
22
|
+
statusLabel?: string;
|
|
23
|
+
/** Trailing affordance on the status row — e.g. an edit control. */
|
|
24
|
+
action?: ReactNode;
|
|
25
|
+
/** Extra body under the `now` line — e.g. a banded gauge for the current
|
|
26
|
+
* value. Kept adjacent to `now` so it reads as an elaboration of the
|
|
27
|
+
* measured figure, never of the headline target. */
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare function TargetTile({ variant, label, target, now, status, statusLabel, action, children, }: TargetTileProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=target-tile.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IntakeSectionDef, LabParameterDefinition, NumericParameterDef, PathologyCode } from './anamnesis-types';
|
|
2
|
+
export declare const ANTHRO_PARAMETERS: NumericParameterDef[];
|
|
3
|
+
export declare const LAB_PARAMETERS: LabParameterDefinition[];
|
|
4
|
+
export declare const DIETARY_PARAMETERS: NumericParameterDef[];
|
|
5
|
+
/** Every numeric parameter, in evolution-grid row order (anthropometrics,
|
|
6
|
+
* dietary intake, then labs). Callers can slice this to build a smaller grid.
|
|
7
|
+
* Intake sits beside the anthropometrics it explains, and above the bloods
|
|
8
|
+
* that are only drawn once or twice a year. */
|
|
9
|
+
export declare const ALL_NUMERIC_PARAMETERS: NumericParameterDef[];
|
|
10
|
+
/** Fast lookup by key. */
|
|
11
|
+
export declare const PARAMETER_BY_KEY: Record<string, NumericParameterDef>;
|
|
12
|
+
export declare const PATHOLOGY_TAXONOMY: PathologyCode[];
|
|
13
|
+
export declare const PATHOLOGY_BY_CODE: Record<string, PathologyCode>;
|
|
14
|
+
/** i18next uses '.' as its key separator, so a pathology code like `E66.0`
|
|
15
|
+
* must be sanitised before it can be used as an i18n key segment. */
|
|
16
|
+
export declare const pathologyLabelKey: (code: string) => string;
|
|
17
|
+
/** Only the leaf/assignable codes (a parent family with sub-codes is a
|
|
18
|
+
* heading, not itself assignable). Parents without sub-codes stay assignable. */
|
|
19
|
+
export declare const ASSIGNABLE_PATHOLOGY_CODES: string[];
|
|
20
|
+
export declare const INTAKE_SECTIONS: IntakeSectionDef[];
|
|
21
|
+
/** Flat list of every intake field key (in registry order). */
|
|
22
|
+
export declare const INTAKE_FIELD_KEYS: string[];
|
|
23
|
+
//# sourceMappingURL=anamnesis-catalogue.d.ts.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { TFunction } from 'i18next';
|
|
2
|
+
import type { SparklineAnnotation } from '../../components/sparkline';
|
|
3
|
+
import { type DeltaInfo, type SpanDiff } from './anamnesis-derive';
|
|
4
|
+
import type { NumericParameterDef, PathologyCode, Visit } from './anamnesis-types';
|
|
5
|
+
import type { VisitColumn } from './anamnesis-window';
|
|
6
|
+
/** The one grammar every category speaks. */
|
|
7
|
+
export type CompareChangeKind = 'added' | 'removed' | 'changed';
|
|
8
|
+
/** One line of the compare table. Every field is already display-ready, so
|
|
9
|
+
* the renderer below never reaches back into the domain model. */
|
|
10
|
+
export interface CompareRow {
|
|
11
|
+
/** Stable row id — `<category>:<subject>`. */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Owning category's id (see `COMPARE_CATEGORIES`). */
|
|
14
|
+
categoryId: string;
|
|
15
|
+
/** What changed, in the clinician's words. */
|
|
16
|
+
item: string;
|
|
17
|
+
/** Second line under `item` — the unit and reference range, where there is
|
|
18
|
+
* one. Numeric rows only; the grid puts the same thing in the same place. */
|
|
19
|
+
meta?: string;
|
|
20
|
+
change: CompareChangeKind;
|
|
21
|
+
/** Translated change word — what the Change cell says when there is no
|
|
22
|
+
* number to say it with. */
|
|
23
|
+
changeLabel: string;
|
|
24
|
+
/** One display string per compared visit, in the diff's (record) order. */
|
|
25
|
+
values: string[];
|
|
26
|
+
/** Numeric rows only: the FULL-RECORD series, so the sparkline here is the
|
|
27
|
+
* same line as the grid's — not a shorter one drawn from the picked visits,
|
|
28
|
+
* which would move every event annotation. */
|
|
29
|
+
series?: (number | null)[];
|
|
30
|
+
/** Numeric rows only: the net first→last change, direction-aware. */
|
|
31
|
+
delta?: DeltaInfo | null;
|
|
32
|
+
/** Numeric rows only: needed to colour the delta by valence. */
|
|
33
|
+
def?: NumericParameterDef;
|
|
34
|
+
}
|
|
35
|
+
export interface CompareRowContext {
|
|
36
|
+
t: TFunction;
|
|
37
|
+
pathologies: Record<string, PathologyCode>;
|
|
38
|
+
/** Full-record sparkline series by parameter key. */
|
|
39
|
+
seriesByKey: ReadonlyMap<string, (number | null)[]>;
|
|
40
|
+
}
|
|
41
|
+
export interface CompareCategoryDef {
|
|
42
|
+
/** Stable id; also the i18n leaf under `anamnesis.compare.category.*`. */
|
|
43
|
+
id: string;
|
|
44
|
+
/** Pull this category's rows out of one span diff. */
|
|
45
|
+
rows: (diff: SpanDiff, ctx: CompareRowContext) => CompareRow[];
|
|
46
|
+
}
|
|
47
|
+
/** One entry per `SpanDiff` array, in reading order. A future symptom or
|
|
48
|
+
* event diff is ADDED here — the grammar, the columns and the renderer below
|
|
49
|
+
* stay untouched. Adding a category is data, never a rewrite. */
|
|
50
|
+
export declare const COMPARE_CATEGORIES: readonly CompareCategoryDef[];
|
|
51
|
+
/** Every difference across the compared visits as one flat, ordered list.
|
|
52
|
+
* Category order is the registry's order; within a category, the diff's own
|
|
53
|
+
* order. Nothing is sorted here — the record's order is the reading order. */
|
|
54
|
+
export declare function buildCompareRows(diff: SpanDiff, ctx: CompareRowContext): CompareRow[];
|
|
55
|
+
export interface AnamnesisComparePanelProps {
|
|
56
|
+
/** The record's visits, in record order — the picker's options. */
|
|
57
|
+
visits: Visit[];
|
|
58
|
+
/** The compared columns, resolved in RECORD order (never tick order). */
|
|
59
|
+
columns: readonly VisitColumn[];
|
|
60
|
+
/** Currently compared visit ids. */
|
|
61
|
+
selectedIds: readonly string[];
|
|
62
|
+
onSelectionChange: (ids: string[]) => void;
|
|
63
|
+
/** The computed diff, or `null` when fewer than two visits are compared. */
|
|
64
|
+
diff: SpanDiff | null;
|
|
65
|
+
/** Full-record sparkline series by parameter key. */
|
|
66
|
+
seriesByKey: ReadonlyMap<string, (number | null)[]>;
|
|
67
|
+
pathologies: Record<string, PathologyCode>;
|
|
68
|
+
/** The event lines drawn on the grid, so they are drawn here too. */
|
|
69
|
+
annotations?: readonly SparklineAnnotation[];
|
|
70
|
+
/** Make those lines pointer-selectable, exactly as they are on the grid.
|
|
71
|
+
* The event bar above the grid stays the keyboard route for both. */
|
|
72
|
+
onSelectAnnotation?: (eventId: string) => void;
|
|
73
|
+
t: TFunction;
|
|
74
|
+
/** Exit compare mode from inside the panel. The toggle that opened it is a
|
|
75
|
+
* full grid above, so without this the only way out is off-screen. */
|
|
76
|
+
onClose?: () => void;
|
|
77
|
+
}
|
|
78
|
+
/** Slot 4's contents: a header carrying the way out, the visit picker, then
|
|
79
|
+
* one matrix of differences. The enclosing `Collapsible` lives in
|
|
80
|
+
* `anamnesis-evolution.tsx`. */
|
|
81
|
+
export declare function AnamnesisComparePanel({ visits, columns, selectedIds, onSelectionChange, diff, seriesByKey, pathologies, annotations, onSelectAnnotation, t, onClose, }: AnamnesisComparePanelProps): import("react/jsx-runtime").JSX.Element;
|
|
82
|
+
//# sourceMappingURL=anamnesis-compare-panel.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { NumericParameterDef, Visit } from './anamnesis-types';
|
|
2
|
+
/** Open on arrival: the blocks a clinician records at — or must recall at —
|
|
3
|
+
* EVERY consultation. Visit details and anthropometrics are recorded each
|
|
4
|
+
* time; an unanswered required question is this visit's to-do list; the
|
|
5
|
+
* pathology list and the current therapy are the "what does this patient carry
|
|
6
|
+
* / already take" memory aids, and proposing a supplement without seeing the
|
|
7
|
+
* current medication is exactly the recall failure this surface prevents.
|
|
8
|
+
* The questionnaire itself is read on the Summary tab, not here. */
|
|
9
|
+
export declare const EVERY_VISIT_BLOCKS: readonly ["visitMeta", "intakeGaps", "anthropometrics", "pathologies", "therapy", "proposal"];
|
|
10
|
+
/** Folded on arrival at a FOLLOW-UP: reference or occasional. Oncological
|
|
11
|
+
* history is blank for most patients; bloods are drawn a few times a year;
|
|
12
|
+
* fasting cycles and the annual programme are yearly. Each keeps a fill
|
|
13
|
+
* summary in its header, so folding hides the detail and never the existence
|
|
14
|
+
* of a record. A first visit opens all of them — see `compileBlockDensity`. */
|
|
15
|
+
export declare const OCCASIONAL_BLOCKS: readonly ["oncological", "labs", "fmd", "annual"];
|
|
16
|
+
export type EveryVisitBlockId = (typeof EVERY_VISIT_BLOCKS)[number];
|
|
17
|
+
export type OccasionalBlockId = (typeof OCCASIONAL_BLOCKS)[number];
|
|
18
|
+
/** One titled block of the compile form whose arrival state this module
|
|
19
|
+
* decides. Adding an id to this union without listing it in one of the two
|
|
20
|
+
* arrays above is a type error. It does NOT catch a `<Block>` rendered in the
|
|
21
|
+
* JSX with no id at all — that block simply keeps the shell's own default. */
|
|
22
|
+
export type CompileBlockId = EveryVisitBlockId | OccasionalBlockId;
|
|
23
|
+
export interface CompileBlockDensity {
|
|
24
|
+
/** Open on arrival. */
|
|
25
|
+
open: boolean;
|
|
26
|
+
/** How much this block already holds, for the header summary. `null` on the
|
|
27
|
+
* always-open blocks, where a count beside visible content is noise. */
|
|
28
|
+
fill: number | null;
|
|
29
|
+
/** Of that fill, how many values sit outside their reference range. Named in
|
|
30
|
+
* the header so a folded block can never hide a flagged result. */
|
|
31
|
+
flagged: number;
|
|
32
|
+
}
|
|
33
|
+
/** How each compile block opens for the visit being recorded.
|
|
34
|
+
*
|
|
35
|
+
* A FIRST visit opens everything: there is no history to fold away, and an
|
|
36
|
+
* empty block on a first consultation means "to be filled", not "nothing to
|
|
37
|
+
* see". A follow-up folds the occasional blocks behind their fill summary.
|
|
38
|
+
*
|
|
39
|
+
* `labDefs` is the practice's live lab vocabulary — the same list the Blood
|
|
40
|
+
* tests block renders. Pass it, or the lab fill and flag counts describe a
|
|
41
|
+
* different set of values from the one the opened block shows.
|
|
42
|
+
*
|
|
43
|
+
* Safe on a record with no visit — everything falls back to the arrival
|
|
44
|
+
* default with no fill. */
|
|
45
|
+
export declare function compileBlockDensity(visit: Visit | undefined, labDefs?: readonly NumericParameterDef[]): Record<CompileBlockId, CompileBlockDensity>;
|
|
46
|
+
//# sourceMappingURL=anamnesis-compile-blocks.d.ts.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { TFunction } from 'i18next';
|
|
3
|
+
import { type PracticeAnamnesisConfig } from './anamnesis-config';
|
|
4
|
+
import type { DisclosureAudience } from './anamnesis-disclosure';
|
|
5
|
+
import type { AnamnesisExportTab } from './anamnesis-export';
|
|
6
|
+
import type { AnamnesisRecord, OpenAnamnesisNote } from './anamnesis-types';
|
|
7
|
+
/** The three Diagnosis views. Also the three export tabs — one vocabulary. */
|
|
8
|
+
export type AnamnesisCompileView = AnamnesisExportTab;
|
|
9
|
+
export interface AnamnesisCompileProps {
|
|
10
|
+
record: AnamnesisRecord;
|
|
11
|
+
t: TFunction;
|
|
12
|
+
/** Mount flush inside a host section tab (drops the full-page chrome + the
|
|
13
|
+
* patient-name page heading — the host shows the patient banner). */
|
|
14
|
+
embedded?: boolean;
|
|
15
|
+
/** The practice's configured vocabulary. Omitted = the kit-seeded default. */
|
|
16
|
+
config?: PracticeAnamnesisConfig;
|
|
17
|
+
/** A per-patient target was set or cleared (`null` clears it). The surface
|
|
18
|
+
* applies it to its own working record either way; this is the seam a
|
|
19
|
+
* platform host persists through — and the one place a shared target could
|
|
20
|
+
* be reconciled with the care plan, which no story can do. */
|
|
21
|
+
onTargetChange?: (parameterKey: string, target: number | null) => void;
|
|
22
|
+
/** Host status chips rendered at the surface header's end — the slot a
|
|
23
|
+
* platform host uses to fold its OWN record state (signature status,
|
|
24
|
+
* expiry, save feedback, a renew affordance) into the section instead of
|
|
25
|
+
* bolting a second bar above it. Content is host-owned and already
|
|
26
|
+
* translated. The surface itself claims no save state. */
|
|
27
|
+
statusSlot?: ReactNode;
|
|
28
|
+
/** Omit the nutrition-targets strip above the record card — for hosts
|
|
29
|
+
* that present the record without the goals (the isolated single-section
|
|
30
|
+
* demo). Default false: the strip renders. Target editors inside the
|
|
31
|
+
* record blocks are unaffected. */
|
|
32
|
+
hideTargetStrip?: boolean;
|
|
33
|
+
/** The host's side panel, forwarded to the Evolution view. Omitted = the
|
|
34
|
+
* evolution surface reads notes in place. */
|
|
35
|
+
onOpenNote?: OpenAnamnesisNote;
|
|
36
|
+
/** Mount on this view instead of Summary. Demo/story hook only — Chromatic
|
|
37
|
+
* skips play functions, so a click-selected tab is never snapshotted. */
|
|
38
|
+
defaultView?: AnamnesisCompileView;
|
|
39
|
+
/** Mount with the export menu open. Demo/story hook only — Chromatic skips
|
|
40
|
+
* play functions, so a click-opened menu is never snapshotted. */
|
|
41
|
+
defaultExportMenuOpen?: boolean;
|
|
42
|
+
/** Mount with the share preview open. Demo/story hook, same reason. */
|
|
43
|
+
defaultShareOpen?: boolean;
|
|
44
|
+
/** Mount the export control on this audience. Demo/story hook. */
|
|
45
|
+
defaultExportAudience?: DisclosureAudience;
|
|
46
|
+
}
|
|
47
|
+
export declare function AnamnesisCompile({ record: initial, t, embedded, config, onTargetChange, hideTargetStrip, statusSlot, onOpenNote, defaultView, defaultExportMenuOpen, defaultShareOpen, defaultExportAudience, }: AnamnesisCompileProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
//# sourceMappingURL=anamnesis-compile.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { TFunction } from 'i18next';
|
|
2
|
+
import { type PracticeAnamnesisConfig } from './anamnesis-config';
|
|
3
|
+
export interface AnamnesisConfigEditorProps {
|
|
4
|
+
/** The practice's vocabulary — materialised (every list present). Build the
|
|
5
|
+
* initial value with `seededConfigDraft()`, never from the module constants
|
|
6
|
+
* directly: the editor patches lists immutably, but a shared array identity
|
|
7
|
+
* with the kit seed would leak one accidental in-place edit into every
|
|
8
|
+
* other mount in the session. */
|
|
9
|
+
config: Required<PracticeAnamnesisConfig>;
|
|
10
|
+
onConfigChange: (next: Required<PracticeAnamnesisConfig>) => void;
|
|
11
|
+
t: TFunction;
|
|
12
|
+
/** Override the cascade / test marker (defaults to `anamnesis-config-editor`). */
|
|
13
|
+
dataComponent?: string;
|
|
14
|
+
}
|
|
15
|
+
/** A per-entry deep-enough clone of the kit seed: sections own their `fields`
|
|
16
|
+
* arrays and parameters their `referenceRange` objects, so no array or object
|
|
17
|
+
* identity is shared with the module constants. */
|
|
18
|
+
export declare function seededConfigDraft(): Required<PracticeAnamnesisConfig>;
|
|
19
|
+
/** Derive an immutable camelCase key from a practice label — the practice
|
|
20
|
+
* never types identifiers, and a labelled entry can never render as a raw
|
|
21
|
+
* key. Uniquified with a numeric suffix on collision. Practice-derived keys
|
|
22
|
+
* are practice-LOCAL: they do not join any shared cross-practice vocabulary
|
|
23
|
+
* (the curated-library question — decision 0.3 — is still open). */
|
|
24
|
+
export declare function keyFromLabel(label: string, taken: ReadonlySet<string>): string;
|
|
25
|
+
export declare function AnamnesisConfigEditor({ config, onConfigChange, t, dataComponent, }: AnamnesisConfigEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=anamnesis-config-editor.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { IntakeFieldDef, IntakeSectionDef, NumericParameterDef, ParameterGroup, PathologyCode } from './anamnesis-types';
|
|
2
|
+
/** The only keys the derivation engine cannot lose. `bmi` is computed from
|
|
3
|
+
* `weight` + `height`; every other key in the kit is read generically. */
|
|
4
|
+
export declare const LOCKED_PARAMETER_KEYS: ReadonlySet<string>;
|
|
5
|
+
/** Whether a numeric parameter is locked against archiving / deletion. */
|
|
6
|
+
export declare function isParameterLocked(key: string): boolean;
|
|
7
|
+
/** Parameters a plan sets a per-patient GOAL for. Not every number is one: a
|
|
8
|
+
* height is a fact about the patient, and a blood test carries a population
|
|
9
|
+
* reference range rather than a target. The four the nutrition plan is written
|
|
10
|
+
* in — weight, BMI, daily energy, protein — plus waist, which practices have
|
|
11
|
+
* long set a goal for. */
|
|
12
|
+
export declare const TARGETABLE_PARAMETER_KEYS: ReadonlySet<string>;
|
|
13
|
+
/** Whether a per-patient target can be set for this parameter. */
|
|
14
|
+
export declare function isParameterTargetable(key: string): boolean;
|
|
15
|
+
/** A practice's anamnesis vocabulary. Every list is optional: an omitted list
|
|
16
|
+
* falls back to the kit-seeded catalogue, so `undefined` is a fully working
|
|
17
|
+
* configuration and every existing mount keeps rendering unchanged. */
|
|
18
|
+
export interface PracticeAnamnesisConfig {
|
|
19
|
+
/** Numeric parameters (anthropometrics + labs), in the practice's order. */
|
|
20
|
+
parameters?: readonly NumericParameterDef[];
|
|
21
|
+
/** The intake questionnaire — the practice's own form, transcribed. */
|
|
22
|
+
intakeSections?: readonly IntakeSectionDef[];
|
|
23
|
+
/** The coded pathology taxonomy. */
|
|
24
|
+
pathologies?: readonly PathologyCode[];
|
|
25
|
+
}
|
|
26
|
+
/** What the kit ships when a practice has configured nothing. Seeded, not
|
|
27
|
+
* empty — an empty vocabulary renders an empty record. */
|
|
28
|
+
export declare const SEEDED_ANAMNESIS_CONFIG: Required<PracticeAnamnesisConfig>;
|
|
29
|
+
/** Fill every omitted list from the seed. */
|
|
30
|
+
export declare function resolveConfig(config?: PracticeAnamnesisConfig): Required<PracticeAnamnesisConfig>;
|
|
31
|
+
/** CAPTURE surfaces: live parameters only. A locked parameter is never
|
|
32
|
+
* dropped, whatever the config says — archiving `weight` would silently break
|
|
33
|
+
* BMI everywhere. */
|
|
34
|
+
export declare function configuredParameters(config?: PracticeAnamnesisConfig, group?: ParameterGroup): NumericParameterDef[];
|
|
35
|
+
/** HISTORY surfaces: every parameter, archived ones included, so a value
|
|
36
|
+
* recorded under an archived parameter still renders. */
|
|
37
|
+
export declare function allParametersIncludingArchived(config?: PracticeAnamnesisConfig, group?: ParameterGroup): NumericParameterDef[];
|
|
38
|
+
/** Lookup over every parameter, archived included — callers resolving a key
|
|
39
|
+
* read from a record must never miss an archived one. */
|
|
40
|
+
export declare function parameterLookup(config?: PracticeAnamnesisConfig): Record<string, NumericParameterDef>;
|
|
41
|
+
/** CAPTURE: the questionnaire as the patient sees it — archived sections and
|
|
42
|
+
* fields dropped, and a section left with no live field dropped with them. */
|
|
43
|
+
export declare function configuredSections(config?: PracticeAnamnesisConfig): IntakeSectionDef[];
|
|
44
|
+
/** HISTORY: every section and field ever configured, so answers recorded under
|
|
45
|
+
* a since-archived question still render in the record and the read-only view.
|
|
46
|
+
* Using `configuredSections` here would erase them from the screen. */
|
|
47
|
+
export declare function allSectionsIncludingArchived(config?: PracticeAnamnesisConfig): IntakeSectionDef[];
|
|
48
|
+
/** Flat field lookup across every section, archived included. */
|
|
49
|
+
export declare function intakeFieldLookup(config?: PracticeAnamnesisConfig): Record<string, IntakeFieldDef>;
|
|
50
|
+
/** CAPTURE: live codes, in configured order. */
|
|
51
|
+
export declare function configuredPathologies(config?: PracticeAnamnesisConfig): PathologyCode[];
|
|
52
|
+
/** HISTORY: every code, archived included. A code assigned last year must
|
|
53
|
+
* still render its label this year. */
|
|
54
|
+
export declare function allPathologiesIncludingArchived(config?: PracticeAnamnesisConfig): PathologyCode[];
|
|
55
|
+
/** Lookup by code over the FULL taxonomy. Without this, reading
|
|
56
|
+
* `entry.parentCode` off a practice-added code throws. */
|
|
57
|
+
export declare function pathologyLookup(config?: PracticeAnamnesisConfig): Record<string, PathologyCode>;
|
|
58
|
+
/** Assignable codes: a family that carries sub-codes is a heading, not itself
|
|
59
|
+
* assignable. Derived from the LIVE taxonomy so an archived code cannot be
|
|
60
|
+
* newly assigned, but stays resolvable for history. */
|
|
61
|
+
export declare function assignablePathologyCodes(config?: PracticeAnamnesisConfig): string[];
|
|
62
|
+
//# sourceMappingURL=anamnesis-config.d.ts.map
|