@alfadocs/ui-kit 1.4.17 → 1.6.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/{booking-CGKof8QU.js → booking-D84O6H2X.js} +553 -546
- package/dist/_chunks/{care-plan-card-C83Hb9EE.js → care-plan-card-CehAU7F_.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-CHMPSTCz.js → care-plan-entry-card-ChWRMfMw.js} +2 -2
- package/dist/_chunks/{periodontal-chart-brakjj0s.js → periodontal-chart-C0nNQKKK.js} +121 -121
- package/dist/_chunks/practice-profile-hero-Bdd0bFqC.js +187 -0
- package/dist/_chunks/{practice-results-DWUZRm2x.js → practice-results-CKoLD_x5.js} +220 -206
- package/dist/_chunks/tooth-data-DR8Kdnup.js +903 -0
- package/dist/_chunks/tooth-finding-palette-vqC-D2Ye.js +708 -0
- package/dist/_chunks/tooth-scheme-BPXE1_3N.js +2051 -0
- package/dist/agent-catalog.json +497 -56
- package/dist/agent-i18n/en.json +29 -11
- package/dist/components/booking/booking-types.d.ts +9 -0
- package/dist/components/booking/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/periodontal-chart/index.js +1 -1
- package/dist/components/practice-profile-hero/index.d.ts +4 -0
- package/dist/components/practice-profile-hero/index.js +6 -0
- package/dist/components/practice-profile-hero/practice-profile-hero.agent.d.ts +4 -0
- package/dist/components/practice-profile-hero/practice-profile-hero.d.ts +60 -0
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.d.ts +15 -1
- package/dist/components/tooth-finding-palette/index.d.ts +4 -0
- package/dist/components/tooth-finding-palette/index.js +9 -0
- package/dist/components/tooth-finding-palette/tooth-finding-palette.agent.d.ts +4 -0
- package/dist/components/tooth-finding-palette/tooth-finding-palette.d.ts +89 -0
- package/dist/components/tooth-scheme/index.d.ts +2 -2
- package/dist/components/tooth-scheme/index.js +57 -30
- package/dist/components/tooth-scheme/tooth-data.d.ts +279 -10
- package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
- package/dist/components/tooth-scheme/tooth-scheme.d.ts +30 -3
- package/dist/host-compat.css +1 -4
- package/dist/i18n/locales/ar.d.ts +41 -1
- package/dist/i18n/locales/ar.js +42 -2
- package/dist/i18n/locales/de.d.ts +41 -1
- package/dist/i18n/locales/de.js +42 -2
- package/dist/i18n/locales/el.d.ts +41 -1
- package/dist/i18n/locales/el.js +42 -2
- package/dist/i18n/locales/en.d.ts +41 -1
- package/dist/i18n/locales/en.js +42 -2
- package/dist/i18n/locales/es.d.ts +41 -1
- package/dist/i18n/locales/es.js +42 -2
- package/dist/i18n/locales/fr.d.ts +41 -1
- package/dist/i18n/locales/fr.js +42 -2
- package/dist/i18n/locales/hi.d.ts +41 -1
- package/dist/i18n/locales/hi.js +42 -2
- package/dist/i18n/locales/it.d.ts +41 -1
- package/dist/i18n/locales/it.js +42 -2
- package/dist/i18n/locales/ja.d.ts +41 -1
- package/dist/i18n/locales/ja.js +42 -2
- package/dist/i18n/locales/nl.d.ts +41 -1
- package/dist/i18n/locales/nl.js +42 -2
- package/dist/i18n/locales/pl.d.ts +41 -1
- package/dist/i18n/locales/pl.js +42 -2
- package/dist/i18n/locales/pt.d.ts +41 -1
- package/dist/i18n/locales/pt.js +42 -2
- package/dist/i18n/locales/ro.d.ts +41 -1
- package/dist/i18n/locales/ro.js +42 -2
- package/dist/i18n/locales/ru.d.ts +41 -1
- package/dist/i18n/locales/ru.js +42 -2
- package/dist/i18n/locales/sq.d.ts +41 -1
- package/dist/i18n/locales/sq.js +42 -2
- package/dist/i18n/locales/sv.d.ts +41 -1
- package/dist/i18n/locales/sv.js +42 -2
- package/dist/i18n/locales/tr.d.ts +41 -1
- package/dist/i18n/locales/tr.js +42 -2
- package/dist/i18n/locales/zh.d.ts +41 -1
- package/dist/i18n/locales/zh.js +42 -2
- package/dist/index.js +561 -525
- package/dist/locales/ar.json +42 -2
- package/dist/locales/de.json +42 -2
- package/dist/locales/el.json +42 -2
- package/dist/locales/en.json +42 -2
- package/dist/locales/es.json +42 -2
- package/dist/locales/fr.json +42 -2
- package/dist/locales/hi.json +42 -2
- package/dist/locales/it.json +42 -2
- package/dist/locales/ja.json +42 -2
- package/dist/locales/nl.json +42 -2
- package/dist/locales/pl.json +42 -2
- package/dist/locales/pt.json +42 -2
- package/dist/locales/ro.json +42 -2
- package/dist/locales/ru.json +42 -2
- package/dist/locales/sq.json +42 -2
- package/dist/locales/sv.json +42 -2
- package/dist/locales/tr.json +42 -2
- package/dist/locales/zh.json +42 -2
- package/dist/tokens.css +1 -1
- package/package.json +9 -1
- package/dist/_chunks/tooth-data-BwuoKFf4.js +0 -660
- package/dist/_chunks/tooth-scheme-s0ipC0-Z.js +0 -1483
package/dist/agent-catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "1.
|
|
3
|
+
"packageVersion": "1.6.0",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "component",
|
|
@@ -10081,6 +10081,38 @@
|
|
|
10081
10081
|
}
|
|
10082
10082
|
}
|
|
10083
10083
|
},
|
|
10084
|
+
{
|
|
10085
|
+
"kind": "component",
|
|
10086
|
+
"id": "practice-profile-hero",
|
|
10087
|
+
"capabilities": [],
|
|
10088
|
+
"state": [
|
|
10089
|
+
{
|
|
10090
|
+
"name": "name",
|
|
10091
|
+
"type": "string",
|
|
10092
|
+
"description": "Practice display name currently rendered.",
|
|
10093
|
+
"descriptionKey": "ui.agent.practiceProfileHero.state.name"
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
"name": "hasCover",
|
|
10097
|
+
"type": "boolean",
|
|
10098
|
+
"description": "Whether a cover-image strip is rendered. Structural flag only — never the image URL or any PHI.",
|
|
10099
|
+
"descriptionKey": "ui.agent.practiceProfileHero.state.hasCover"
|
|
10100
|
+
}
|
|
10101
|
+
],
|
|
10102
|
+
"actions": [],
|
|
10103
|
+
"domHooks": {
|
|
10104
|
+
"root": {
|
|
10105
|
+
"attr": "data-component",
|
|
10106
|
+
"value": "practice-profile-hero",
|
|
10107
|
+
"description": "Marks the PracticeProfileHero root region."
|
|
10108
|
+
},
|
|
10109
|
+
"instanceId": {
|
|
10110
|
+
"attr": "data-component-id",
|
|
10111
|
+
"sourceProp": "id",
|
|
10112
|
+
"description": "Sourced from the id prop."
|
|
10113
|
+
}
|
|
10114
|
+
}
|
|
10115
|
+
},
|
|
10084
10116
|
{
|
|
10085
10117
|
"kind": "component",
|
|
10086
10118
|
"id": "practice-results",
|
|
@@ -14120,20 +14152,155 @@
|
|
|
14120
14152
|
}
|
|
14121
14153
|
}
|
|
14122
14154
|
},
|
|
14155
|
+
{
|
|
14156
|
+
"kind": "component",
|
|
14157
|
+
"id": "tooth-finding-palette",
|
|
14158
|
+
"capabilities": [
|
|
14159
|
+
"pick",
|
|
14160
|
+
"select_single",
|
|
14161
|
+
"set_value"
|
|
14162
|
+
],
|
|
14163
|
+
"state": [
|
|
14164
|
+
{
|
|
14165
|
+
"name": "activeFinding",
|
|
14166
|
+
"type": "string | null",
|
|
14167
|
+
"description": "Id of the armed finding tool, or null when no tool is selected. Identifies a finding TYPE — never a patient, and never a charted finding.",
|
|
14168
|
+
"descriptionKey": "ui.agent.toothFindingPalette.state.activeFinding"
|
|
14169
|
+
},
|
|
14170
|
+
{
|
|
14171
|
+
"name": "status",
|
|
14172
|
+
"type": "string",
|
|
14173
|
+
"description": "Execution status the next charted finding takes — 'planned' or 'executed'.",
|
|
14174
|
+
"descriptionKey": "ui.agent.toothFindingPalette.state.status"
|
|
14175
|
+
},
|
|
14176
|
+
{
|
|
14177
|
+
"name": "tools",
|
|
14178
|
+
"type": "string[]",
|
|
14179
|
+
"description": "Every finding id the palette currently offers, in render order — built-ins plus any practice-defined ids. The authoritative vocabulary for select_finding.",
|
|
14180
|
+
"descriptionKey": "ui.agent.toothFindingPalette.state.tools"
|
|
14181
|
+
}
|
|
14182
|
+
],
|
|
14183
|
+
"actions": [
|
|
14184
|
+
{
|
|
14185
|
+
"name": "select_finding",
|
|
14186
|
+
"safety": "read",
|
|
14187
|
+
"argsType": "{ condition: ConditionId }",
|
|
14188
|
+
"argsSchema": {
|
|
14189
|
+
"type": "object",
|
|
14190
|
+
"properties": {
|
|
14191
|
+
"condition": {
|
|
14192
|
+
"type": "string",
|
|
14193
|
+
"description": "Finding id — either a built-in condition (the enum on tooth-scheme's set_finding: caries, filled, crowned, rootCanal, implant, …) or a practice-defined id supplied through the conditionRegistry prop. Read the live list from the `tools` state slot rather than guessing."
|
|
14194
|
+
}
|
|
14195
|
+
},
|
|
14196
|
+
"required": [
|
|
14197
|
+
"condition"
|
|
14198
|
+
]
|
|
14199
|
+
},
|
|
14200
|
+
"idempotent": true,
|
|
14201
|
+
"errors": [
|
|
14202
|
+
"The condition is not among the palette's tools — read the \"tools\" state slot for the live list."
|
|
14203
|
+
],
|
|
14204
|
+
"examples": [
|
|
14205
|
+
{
|
|
14206
|
+
"args": {
|
|
14207
|
+
"condition": "caries"
|
|
14208
|
+
},
|
|
14209
|
+
"note": "Arm the caries tool before marking a decayed surface."
|
|
14210
|
+
}
|
|
14211
|
+
],
|
|
14212
|
+
"description": "Arm a finding tool, so the next tooth (or surface, or root) picked on the paired dental chart records that finding.",
|
|
14213
|
+
"descriptionKey": "ui.agent.toothFindingPalette.actions.selectFinding"
|
|
14214
|
+
},
|
|
14215
|
+
{
|
|
14216
|
+
"name": "clear_selection",
|
|
14217
|
+
"safety": "read",
|
|
14218
|
+
"idempotent": true,
|
|
14219
|
+
"description": "Disarm the palette so clicks on the chart stop recording a finding. Charted findings are untouched.",
|
|
14220
|
+
"descriptionKey": "ui.agent.toothFindingPalette.actions.clearSelection"
|
|
14221
|
+
},
|
|
14222
|
+
{
|
|
14223
|
+
"name": "set_status",
|
|
14224
|
+
"safety": "write",
|
|
14225
|
+
"argsType": "{ status: SymbolStatus }",
|
|
14226
|
+
"argsSchema": {
|
|
14227
|
+
"type": "object",
|
|
14228
|
+
"properties": {
|
|
14229
|
+
"status": {
|
|
14230
|
+
"enum": [
|
|
14231
|
+
"planned",
|
|
14232
|
+
"executed"
|
|
14233
|
+
],
|
|
14234
|
+
"description": "Execution status the next charted finding takes — 'planned' (proposed treatment) or 'executed' (work already carried out)."
|
|
14235
|
+
}
|
|
14236
|
+
},
|
|
14237
|
+
"required": [
|
|
14238
|
+
"status"
|
|
14239
|
+
]
|
|
14240
|
+
},
|
|
14241
|
+
"idempotent": true,
|
|
14242
|
+
"examples": [
|
|
14243
|
+
{
|
|
14244
|
+
"args": {
|
|
14245
|
+
"status": "executed"
|
|
14246
|
+
},
|
|
14247
|
+
"note": "Record the next finding as work already carried out."
|
|
14248
|
+
}
|
|
14249
|
+
],
|
|
14250
|
+
"description": "Choose whether the next charted finding is recorded as planned or executed.",
|
|
14251
|
+
"descriptionKey": "ui.agent.toothFindingPalette.actions.setStatus"
|
|
14252
|
+
},
|
|
14253
|
+
{
|
|
14254
|
+
"name": "focus_tool",
|
|
14255
|
+
"safety": "read",
|
|
14256
|
+
"argsType": "{ condition: ConditionId }",
|
|
14257
|
+
"argsSchema": {
|
|
14258
|
+
"type": "object",
|
|
14259
|
+
"properties": {
|
|
14260
|
+
"condition": {
|
|
14261
|
+
"type": "string",
|
|
14262
|
+
"description": "Finding id — either a built-in condition (the enum on tooth-scheme's set_finding: caries, filled, crowned, rootCanal, implant, …) or a practice-defined id supplied through the conditionRegistry prop. Read the live list from the `tools` state slot rather than guessing."
|
|
14263
|
+
}
|
|
14264
|
+
},
|
|
14265
|
+
"required": [
|
|
14266
|
+
"condition"
|
|
14267
|
+
]
|
|
14268
|
+
},
|
|
14269
|
+
"idempotent": true,
|
|
14270
|
+
"description": "Move keyboard focus to a tool without arming it — relocates the toolbar's single roving tab stop.",
|
|
14271
|
+
"descriptionKey": "ui.agent.toothFindingPalette.actions.focusTool"
|
|
14272
|
+
}
|
|
14273
|
+
],
|
|
14274
|
+
"domHooks": {
|
|
14275
|
+
"root": {
|
|
14276
|
+
"attr": "data-component",
|
|
14277
|
+
"value": "tooth-finding-palette",
|
|
14278
|
+
"description": "Marks the palette toolbar wrapper."
|
|
14279
|
+
},
|
|
14280
|
+
"instanceId": {
|
|
14281
|
+
"attr": "data-component-id",
|
|
14282
|
+
"sourceProp": "id",
|
|
14283
|
+
"description": "Sourced from the id prop. Required to address a specific palette from the agent."
|
|
14284
|
+
},
|
|
14285
|
+
"item": {
|
|
14286
|
+
"attr": "data-condition",
|
|
14287
|
+
"description": "Each tool button emits its finding id as data-condition, and the armed tool also carries data-active=\"true\". Group wrappers carry data-group with the group id; the planned/executed pills carry data-status."
|
|
14288
|
+
}
|
|
14289
|
+
}
|
|
14290
|
+
},
|
|
14123
14291
|
{
|
|
14124
14292
|
"kind": "component",
|
|
14125
14293
|
"id": "tooth-scheme",
|
|
14126
14294
|
"capabilities": [
|
|
14127
14295
|
"pick",
|
|
14128
14296
|
"set_value",
|
|
14129
|
-
"edit_inline"
|
|
14130
|
-
"view_change"
|
|
14297
|
+
"edit_inline"
|
|
14131
14298
|
],
|
|
14132
14299
|
"state": [
|
|
14133
14300
|
{
|
|
14134
14301
|
"name": "chart",
|
|
14135
|
-
"type": "
|
|
14136
|
-
"description": "Current dental chart
|
|
14302
|
+
"type": "Record<FdiId, { conditions: ToothCondition[]; surfaces: Surface[]; symbols: { id?: string; condition: ConditionId; part?: SymbolPart; surfaces?: Surface[]; roots?: Root[]; status?: SymbolStatus; color?: string }[] }>",
|
|
14303
|
+
"description": "Current dental chart keyed by FDI id, or by a special-element id (quadrant / sextant / arch / general) for region-spanning findings. Each entry carries the flat `conditions` + `surfaces` pair AND the normalised per-symbol list, where every finding scopes its own surfaces, roots, planned/executed status and colour. Free-text clinical notes are PHI and omitted — read them per tooth via get_symbols / get_notes.",
|
|
14137
14304
|
"descriptionKey": "ui.agent.toothScheme.state.chart"
|
|
14138
14305
|
},
|
|
14139
14306
|
{
|
|
@@ -14173,6 +14340,9 @@
|
|
|
14173
14340
|
]
|
|
14174
14341
|
},
|
|
14175
14342
|
"idempotent": true,
|
|
14343
|
+
"errors": [
|
|
14344
|
+
"In the `both` view the registered instance renders no SVG of its own (the four sub-charts do, and deliberately do not register), so this action has no effect there."
|
|
14345
|
+
],
|
|
14176
14346
|
"description": "Move focus to a specific tooth by FDI id.",
|
|
14177
14347
|
"descriptionKey": "ui.agent.toothScheme.actions.focusTooth"
|
|
14178
14348
|
},
|
|
@@ -14207,14 +14377,141 @@
|
|
|
14207
14377
|
"implantExtraction",
|
|
14208
14378
|
"stub",
|
|
14209
14379
|
"destroyed",
|
|
14210
|
-
"rootCanal"
|
|
14211
|
-
|
|
14380
|
+
"rootCanal",
|
|
14381
|
+
"pin",
|
|
14382
|
+
"rootAmputation",
|
|
14383
|
+
"anchorage",
|
|
14384
|
+
"hook",
|
|
14385
|
+
"attachment",
|
|
14386
|
+
"mucogingivalSurgery",
|
|
14387
|
+
"periodontalSurgery",
|
|
14388
|
+
"curettage",
|
|
14389
|
+
"medication",
|
|
14390
|
+
"xray"
|
|
14391
|
+
],
|
|
14392
|
+
"description": "Built-in finding id. 'destroyed' is the retained root (*radice persistente*); 'xray' is the chartable radiograph SYMBOL, distinct from the image archive reached via get_radiographs."
|
|
14212
14393
|
}
|
|
14213
14394
|
},
|
|
14214
14395
|
"idempotent": true,
|
|
14215
|
-
"description": "Read the findings recorded on one tooth (FDI id).",
|
|
14396
|
+
"description": "Read the BUILT-IN findings recorded on one tooth (FDI id), as a flat list of condition ids. Practice-defined findings, per-finding surfaces, roots and status are not included — use get_symbols for the tooth's full record.",
|
|
14216
14397
|
"descriptionKey": "ui.agent.toothScheme.actions.getTooth"
|
|
14217
14398
|
},
|
|
14399
|
+
{
|
|
14400
|
+
"name": "get_symbols",
|
|
14401
|
+
"safety": "phi",
|
|
14402
|
+
"argsType": "{ id: FdiId }",
|
|
14403
|
+
"argsSchema": {
|
|
14404
|
+
"type": "object",
|
|
14405
|
+
"properties": {
|
|
14406
|
+
"id": {
|
|
14407
|
+
"type": "string",
|
|
14408
|
+
"description": "FDI tooth id ('11'–'48' permanent, '51'–'85' primary) or a special-element id ('Q1'–'Q4' quadrants, 'S1'–'S6' sextants, 'AS'/'AI' arches, 'general'; primary mirrors with an 'm' prefix)."
|
|
14409
|
+
}
|
|
14410
|
+
},
|
|
14411
|
+
"required": [
|
|
14412
|
+
"id"
|
|
14413
|
+
]
|
|
14414
|
+
},
|
|
14415
|
+
"returns": "ToothSymbol[]",
|
|
14416
|
+
"returnsSchema": {
|
|
14417
|
+
"type": "array",
|
|
14418
|
+
"items": {
|
|
14419
|
+
"type": "object",
|
|
14420
|
+
"properties": {
|
|
14421
|
+
"id": {
|
|
14422
|
+
"type": "string",
|
|
14423
|
+
"description": "Provenance id — the host's care-plan / finding entry this symbol came from. Present on symbols the host seeded; supply it to update that exact entry."
|
|
14424
|
+
},
|
|
14425
|
+
"condition": {
|
|
14426
|
+
"type": "string",
|
|
14427
|
+
"description": "Finding id — either a built-in (the enum on set_finding) or a practice-defined id from the host's `conditionRegistry`."
|
|
14428
|
+
},
|
|
14429
|
+
"part": {
|
|
14430
|
+
"enum": [
|
|
14431
|
+
"element",
|
|
14432
|
+
"surface",
|
|
14433
|
+
"root"
|
|
14434
|
+
],
|
|
14435
|
+
"description": "Anatomical layer the finding marks. Omit to take the condition's natural part (caries and fillings are 'surface', root canals are 'root', crowns and implants are 'element')."
|
|
14436
|
+
},
|
|
14437
|
+
"surfaces": {
|
|
14438
|
+
"type": "array",
|
|
14439
|
+
"items": {
|
|
14440
|
+
"enum": [
|
|
14441
|
+
"mesial",
|
|
14442
|
+
"distal",
|
|
14443
|
+
"occlusal",
|
|
14444
|
+
"buccal",
|
|
14445
|
+
"lingual"
|
|
14446
|
+
],
|
|
14447
|
+
"description": "Tooth surface, named anatomically."
|
|
14448
|
+
}
|
|
14449
|
+
},
|
|
14450
|
+
"roots": {
|
|
14451
|
+
"type": "array",
|
|
14452
|
+
"items": {
|
|
14453
|
+
"enum": [
|
|
14454
|
+
"mesial",
|
|
14455
|
+
"distal",
|
|
14456
|
+
"palatal",
|
|
14457
|
+
"buccal",
|
|
14458
|
+
"single"
|
|
14459
|
+
],
|
|
14460
|
+
"description": "Root, named ANATOMICALLY (not by screen side) — 'palatal' exists only on upper molars, 'single' covers every one-rooted tooth. On flank-mounted markers (anchorage, hook) 'mesial' / 'distal' select the side of the tooth instead."
|
|
14461
|
+
}
|
|
14462
|
+
},
|
|
14463
|
+
"status": {
|
|
14464
|
+
"enum": [
|
|
14465
|
+
"planned",
|
|
14466
|
+
"executed"
|
|
14467
|
+
],
|
|
14468
|
+
"description": "Execution status — 'planned' (proposed treatment) vs 'executed' (already done). Omit when the finding carries no plan/executed distinction."
|
|
14469
|
+
},
|
|
14470
|
+
"color": {
|
|
14471
|
+
"type": "string",
|
|
14472
|
+
"description": "Per-practice colour override — a CSS colour or `var(--token)`. Omit to take the condition's own colour."
|
|
14473
|
+
},
|
|
14474
|
+
"note": {
|
|
14475
|
+
"type": "string",
|
|
14476
|
+
"description": "Free-text clinical note. PHI — never in a state snapshot."
|
|
14477
|
+
}
|
|
14478
|
+
},
|
|
14479
|
+
"required": [
|
|
14480
|
+
"condition"
|
|
14481
|
+
]
|
|
14482
|
+
}
|
|
14483
|
+
},
|
|
14484
|
+
"idempotent": true,
|
|
14485
|
+
"description": "Read one tooth's full finding record (incl. notes) — one entry per symbol, each with its own surfaces, roots, planned/executed status, colour override, provenance id and free-text note. Normalised, so a tooth charted with the flat conditions/surfaces pair reports the same shape.",
|
|
14486
|
+
"descriptionKey": "ui.agent.toothScheme.actions.getSymbols"
|
|
14487
|
+
},
|
|
14488
|
+
{
|
|
14489
|
+
"name": "get_notes",
|
|
14490
|
+
"safety": "phi",
|
|
14491
|
+
"argsType": "{ id: FdiId }",
|
|
14492
|
+
"argsSchema": {
|
|
14493
|
+
"type": "object",
|
|
14494
|
+
"properties": {
|
|
14495
|
+
"id": {
|
|
14496
|
+
"type": "string",
|
|
14497
|
+
"description": "FDI tooth id ('11'–'48' permanent, '51'–'85' primary) or a special-element id ('Q1'–'Q4' quadrants, 'S1'–'S6' sextants, 'AS'/'AI' arches, 'general'; primary mirrors with an 'm' prefix)."
|
|
14498
|
+
}
|
|
14499
|
+
},
|
|
14500
|
+
"required": [
|
|
14501
|
+
"id"
|
|
14502
|
+
]
|
|
14503
|
+
},
|
|
14504
|
+
"returns": "string | null",
|
|
14505
|
+
"returnsSchema": {
|
|
14506
|
+
"type": [
|
|
14507
|
+
"string",
|
|
14508
|
+
"null"
|
|
14509
|
+
]
|
|
14510
|
+
},
|
|
14511
|
+
"idempotent": true,
|
|
14512
|
+
"description": "Read the tooth-level free-text clinical note, or null when there is none. Per-finding notes are separate — they come back from get_symbols.",
|
|
14513
|
+
"descriptionKey": "ui.agent.toothScheme.actions.getNotes"
|
|
14514
|
+
},
|
|
14218
14515
|
{
|
|
14219
14516
|
"name": "teeth_with",
|
|
14220
14517
|
"safety": "read",
|
|
@@ -14234,8 +14531,19 @@
|
|
|
14234
14531
|
"implantExtraction",
|
|
14235
14532
|
"stub",
|
|
14236
14533
|
"destroyed",
|
|
14237
|
-
"rootCanal"
|
|
14238
|
-
|
|
14534
|
+
"rootCanal",
|
|
14535
|
+
"pin",
|
|
14536
|
+
"rootAmputation",
|
|
14537
|
+
"anchorage",
|
|
14538
|
+
"hook",
|
|
14539
|
+
"attachment",
|
|
14540
|
+
"mucogingivalSurgery",
|
|
14541
|
+
"periodontalSurgery",
|
|
14542
|
+
"curettage",
|
|
14543
|
+
"medication",
|
|
14544
|
+
"xray"
|
|
14545
|
+
],
|
|
14546
|
+
"description": "Built-in finding id. 'destroyed' is the retained root (*radice persistente*); 'xray' is the chartable radiograph SYMBOL, distinct from the image archive reached via get_radiographs."
|
|
14239
14547
|
}
|
|
14240
14548
|
},
|
|
14241
14549
|
"required": [
|
|
@@ -14251,12 +14559,40 @@
|
|
|
14251
14559
|
}
|
|
14252
14560
|
},
|
|
14253
14561
|
"idempotent": true,
|
|
14254
|
-
"description": "List the ids carrying a given finding — FDI tooth ids and/or special-element ids (e.g. all teeth with caries).",
|
|
14562
|
+
"description": "List the ids carrying a given built-in finding — FDI tooth ids and/or special-element ids (e.g. all teeth with caries). For a practice-defined finding use teeth_with_symbol.",
|
|
14255
14563
|
"descriptionKey": "ui.agent.toothScheme.actions.teethWith"
|
|
14256
14564
|
},
|
|
14257
14565
|
{
|
|
14258
|
-
"name": "
|
|
14566
|
+
"name": "teeth_with_symbol",
|
|
14259
14567
|
"safety": "read",
|
|
14568
|
+
"argsType": "{ condition: ConditionId }",
|
|
14569
|
+
"argsSchema": {
|
|
14570
|
+
"type": "object",
|
|
14571
|
+
"properties": {
|
|
14572
|
+
"condition": {
|
|
14573
|
+
"type": "string",
|
|
14574
|
+
"description": "Finding id — either a built-in (the enum on set_finding) or a practice-defined id from the host's `conditionRegistry`."
|
|
14575
|
+
}
|
|
14576
|
+
},
|
|
14577
|
+
"required": [
|
|
14578
|
+
"condition"
|
|
14579
|
+
]
|
|
14580
|
+
},
|
|
14581
|
+
"returns": "FdiId[]",
|
|
14582
|
+
"returnsSchema": {
|
|
14583
|
+
"type": "array",
|
|
14584
|
+
"items": {
|
|
14585
|
+
"type": "string",
|
|
14586
|
+
"description": "FDI tooth id ('11'–'48' permanent, '51'–'85' primary) or a special-element id ('Q1'–'Q4' quadrants, 'S1'–'S6' sextants, 'AS'/'AI' arches, 'general'; primary mirrors with an 'm' prefix)."
|
|
14587
|
+
}
|
|
14588
|
+
},
|
|
14589
|
+
"idempotent": true,
|
|
14590
|
+
"description": "As teeth_with, but open to the practice-defined ids in the host's `conditionRegistry` as well as the built-ins.",
|
|
14591
|
+
"descriptionKey": "ui.agent.toothScheme.actions.teethWithSymbol"
|
|
14592
|
+
},
|
|
14593
|
+
{
|
|
14594
|
+
"name": "get_radiographs",
|
|
14595
|
+
"safety": "phi",
|
|
14260
14596
|
"argsType": "{ id: FdiId }",
|
|
14261
14597
|
"argsSchema": {
|
|
14262
14598
|
"type": "object",
|
|
@@ -14311,7 +14647,7 @@
|
|
|
14311
14647
|
}
|
|
14312
14648
|
},
|
|
14313
14649
|
"idempotent": true,
|
|
14314
|
-
"description": "Read the radiographs (x-rays) attached to one tooth.",
|
|
14650
|
+
"description": "Read the radiographs (x-rays) attached to one tooth, including their notes, dates and image urls.",
|
|
14315
14651
|
"descriptionKey": "ui.agent.toothScheme.actions.getRadiographs"
|
|
14316
14652
|
},
|
|
14317
14653
|
{
|
|
@@ -14331,6 +14667,9 @@
|
|
|
14331
14667
|
]
|
|
14332
14668
|
},
|
|
14333
14669
|
"idempotent": true,
|
|
14670
|
+
"errors": [
|
|
14671
|
+
"In the `both` view the registered instance renders no SVG of its own (the four sub-charts do, and deliberately do not register), so this action has no effect there."
|
|
14672
|
+
],
|
|
14334
14673
|
"description": "Focus a tooth and open its radiograph archive (fires the host's onOpenRadiographs).",
|
|
14335
14674
|
"descriptionKey": "ui.agent.toothScheme.actions.openRadiographs"
|
|
14336
14675
|
},
|
|
@@ -14357,8 +14696,19 @@
|
|
|
14357
14696
|
"implantExtraction",
|
|
14358
14697
|
"stub",
|
|
14359
14698
|
"destroyed",
|
|
14360
|
-
"rootCanal"
|
|
14361
|
-
|
|
14699
|
+
"rootCanal",
|
|
14700
|
+
"pin",
|
|
14701
|
+
"rootAmputation",
|
|
14702
|
+
"anchorage",
|
|
14703
|
+
"hook",
|
|
14704
|
+
"attachment",
|
|
14705
|
+
"mucogingivalSurgery",
|
|
14706
|
+
"periodontalSurgery",
|
|
14707
|
+
"curettage",
|
|
14708
|
+
"medication",
|
|
14709
|
+
"xray"
|
|
14710
|
+
],
|
|
14711
|
+
"description": "Built-in finding id. 'destroyed' is the retained root (*radice persistente*); 'xray' is the chartable radiograph SYMBOL, distinct from the image archive reached via get_radiographs."
|
|
14362
14712
|
},
|
|
14363
14713
|
"surfaces": {
|
|
14364
14714
|
"type": "array",
|
|
@@ -14369,7 +14719,8 @@
|
|
|
14369
14719
|
"occlusal",
|
|
14370
14720
|
"buccal",
|
|
14371
14721
|
"lingual"
|
|
14372
|
-
]
|
|
14722
|
+
],
|
|
14723
|
+
"description": "Tooth surface, named anatomically."
|
|
14373
14724
|
}
|
|
14374
14725
|
}
|
|
14375
14726
|
},
|
|
@@ -14379,9 +14730,123 @@
|
|
|
14379
14730
|
]
|
|
14380
14731
|
},
|
|
14381
14732
|
"idempotent": true,
|
|
14382
|
-
"description": "Record a finding on a tooth or region element (crown, implant, root canal, caries, …). Optionally mark the affected surfaces for a surface finding.",
|
|
14733
|
+
"description": "Record a built-in finding on a tooth or region element (crown, implant, root canal, caries, …). Optionally mark the affected surfaces for a surface finding. Structural only — to set a finding’s roots, planned/executed status, colour or note, or to chart a practice-defined finding, use set_symbol.",
|
|
14383
14734
|
"descriptionKey": "ui.agent.toothScheme.actions.setFinding"
|
|
14384
14735
|
},
|
|
14736
|
+
{
|
|
14737
|
+
"name": "set_symbol",
|
|
14738
|
+
"safety": "phi",
|
|
14739
|
+
"argsType": "{ id: FdiId; symbol: ToothSymbol }",
|
|
14740
|
+
"argsSchema": {
|
|
14741
|
+
"type": "object",
|
|
14742
|
+
"properties": {
|
|
14743
|
+
"id": {
|
|
14744
|
+
"type": "string",
|
|
14745
|
+
"description": "FDI tooth id ('11'–'48' permanent, '51'–'85' primary) or a special-element id ('Q1'–'Q4' quadrants, 'S1'–'S6' sextants, 'AS'/'AI' arches, 'general'; primary mirrors with an 'm' prefix)."
|
|
14746
|
+
},
|
|
14747
|
+
"symbol": {
|
|
14748
|
+
"type": "object",
|
|
14749
|
+
"properties": {
|
|
14750
|
+
"id": {
|
|
14751
|
+
"type": "string",
|
|
14752
|
+
"description": "Provenance id — the host's care-plan / finding entry this symbol came from. Present on symbols the host seeded; supply it to update that exact entry."
|
|
14753
|
+
},
|
|
14754
|
+
"condition": {
|
|
14755
|
+
"type": "string",
|
|
14756
|
+
"description": "Finding id — either a built-in (the enum on set_finding) or a practice-defined id from the host's `conditionRegistry`."
|
|
14757
|
+
},
|
|
14758
|
+
"part": {
|
|
14759
|
+
"enum": [
|
|
14760
|
+
"element",
|
|
14761
|
+
"surface",
|
|
14762
|
+
"root"
|
|
14763
|
+
],
|
|
14764
|
+
"description": "Anatomical layer the finding marks. Omit to take the condition's natural part (caries and fillings are 'surface', root canals are 'root', crowns and implants are 'element')."
|
|
14765
|
+
},
|
|
14766
|
+
"surfaces": {
|
|
14767
|
+
"type": "array",
|
|
14768
|
+
"items": {
|
|
14769
|
+
"enum": [
|
|
14770
|
+
"mesial",
|
|
14771
|
+
"distal",
|
|
14772
|
+
"occlusal",
|
|
14773
|
+
"buccal",
|
|
14774
|
+
"lingual"
|
|
14775
|
+
],
|
|
14776
|
+
"description": "Tooth surface, named anatomically."
|
|
14777
|
+
}
|
|
14778
|
+
},
|
|
14779
|
+
"roots": {
|
|
14780
|
+
"type": "array",
|
|
14781
|
+
"items": {
|
|
14782
|
+
"enum": [
|
|
14783
|
+
"mesial",
|
|
14784
|
+
"distal",
|
|
14785
|
+
"palatal",
|
|
14786
|
+
"buccal",
|
|
14787
|
+
"single"
|
|
14788
|
+
],
|
|
14789
|
+
"description": "Root, named ANATOMICALLY (not by screen side) — 'palatal' exists only on upper molars, 'single' covers every one-rooted tooth. On flank-mounted markers (anchorage, hook) 'mesial' / 'distal' select the side of the tooth instead."
|
|
14790
|
+
}
|
|
14791
|
+
},
|
|
14792
|
+
"status": {
|
|
14793
|
+
"enum": [
|
|
14794
|
+
"planned",
|
|
14795
|
+
"executed"
|
|
14796
|
+
],
|
|
14797
|
+
"description": "Execution status — 'planned' (proposed treatment) vs 'executed' (already done). Omit when the finding carries no plan/executed distinction."
|
|
14798
|
+
},
|
|
14799
|
+
"color": {
|
|
14800
|
+
"type": "string",
|
|
14801
|
+
"description": "Per-practice colour override — a CSS colour or `var(--token)`. Omit to take the condition's own colour."
|
|
14802
|
+
},
|
|
14803
|
+
"note": {
|
|
14804
|
+
"type": "string",
|
|
14805
|
+
"description": "Free-text clinical note. PHI — never in a state snapshot."
|
|
14806
|
+
}
|
|
14807
|
+
},
|
|
14808
|
+
"required": [
|
|
14809
|
+
"condition"
|
|
14810
|
+
]
|
|
14811
|
+
}
|
|
14812
|
+
},
|
|
14813
|
+
"required": [
|
|
14814
|
+
"id",
|
|
14815
|
+
"symbol"
|
|
14816
|
+
]
|
|
14817
|
+
},
|
|
14818
|
+
"idempotent": true,
|
|
14819
|
+
"examples": [
|
|
14820
|
+
{
|
|
14821
|
+
"args": {
|
|
14822
|
+
"id": "16",
|
|
14823
|
+
"symbol": {
|
|
14824
|
+
"condition": "filled",
|
|
14825
|
+
"surfaces": [
|
|
14826
|
+
"mesial"
|
|
14827
|
+
],
|
|
14828
|
+
"status": "executed"
|
|
14829
|
+
}
|
|
14830
|
+
},
|
|
14831
|
+
"note": "Record an executed mesial filling on tooth 16, leaving any other finding on that tooth untouched."
|
|
14832
|
+
},
|
|
14833
|
+
{
|
|
14834
|
+
"args": {
|
|
14835
|
+
"id": "26",
|
|
14836
|
+
"symbol": {
|
|
14837
|
+
"condition": "rootCanal",
|
|
14838
|
+
"roots": [
|
|
14839
|
+
"palatal"
|
|
14840
|
+
],
|
|
14841
|
+
"status": "planned"
|
|
14842
|
+
}
|
|
14843
|
+
},
|
|
14844
|
+
"note": "Plan a root canal on the palatal root of tooth 26 ('palatal' is the anatomical root, not a screen side)."
|
|
14845
|
+
}
|
|
14846
|
+
],
|
|
14847
|
+
"description": "Add or replace one finding on a tooth or region element, with its own part, surfaces, roots, planned/executed status, colour override and note. Matched by `symbol.id` when the symbol carries provenance, otherwise by its condition; appended when nothing matches. Accepts practice-defined `conditionRegistry` ids as well as the built-ins.",
|
|
14848
|
+
"descriptionKey": "ui.agent.toothScheme.actions.setSymbol"
|
|
14849
|
+
},
|
|
14385
14850
|
{
|
|
14386
14851
|
"name": "remove_finding",
|
|
14387
14852
|
"safety": "write",
|
|
@@ -14405,8 +14870,19 @@
|
|
|
14405
14870
|
"implantExtraction",
|
|
14406
14871
|
"stub",
|
|
14407
14872
|
"destroyed",
|
|
14408
|
-
"rootCanal"
|
|
14409
|
-
|
|
14873
|
+
"rootCanal",
|
|
14874
|
+
"pin",
|
|
14875
|
+
"rootAmputation",
|
|
14876
|
+
"anchorage",
|
|
14877
|
+
"hook",
|
|
14878
|
+
"attachment",
|
|
14879
|
+
"mucogingivalSurgery",
|
|
14880
|
+
"periodontalSurgery",
|
|
14881
|
+
"curettage",
|
|
14882
|
+
"medication",
|
|
14883
|
+
"xray"
|
|
14884
|
+
],
|
|
14885
|
+
"description": "Built-in finding id. 'destroyed' is the retained root (*radice persistente*); 'xray' is the chartable radiograph SYMBOL, distinct from the image archive reached via get_radiographs."
|
|
14410
14886
|
}
|
|
14411
14887
|
},
|
|
14412
14888
|
"required": [
|
|
@@ -14415,7 +14891,7 @@
|
|
|
14415
14891
|
]
|
|
14416
14892
|
},
|
|
14417
14893
|
"idempotent": true,
|
|
14418
|
-
"description": "Remove a
|
|
14894
|
+
"description": "Remove a finding from a tooth — every symbol carrying that condition goes, whatever its surfaces or roots. Built-in ids only.",
|
|
14419
14895
|
"descriptionKey": "ui.agent.toothScheme.actions.removeFinding"
|
|
14420
14896
|
},
|
|
14421
14897
|
{
|
|
@@ -14451,7 +14927,7 @@
|
|
|
14451
14927
|
},
|
|
14452
14928
|
"item": {
|
|
14453
14929
|
"attr": "data-fdi",
|
|
14454
|
-
"description": "Each rendered tooth `<g>` carries its FDI id as `data-fdi`; selectable special-element slots carry their id
|
|
14930
|
+
"description": "Each rendered tooth `<g>` carries its FDI id as `data-fdi`, its first finding as `data-condition`, the full space-separated list as `data-conditions`, the finding count as `data-symbol-count` and the first finding's status as `data-status`; selectable special-element slots carry their id in `data-fdi` too (plus `data-special` naming the kind). Per-surface pick targets carry `data-zone`, per-root pick targets `data-root` (the anatomical root name). The `data-projection` / `data-view-mode` attributes on the root expose the side/plan/both view."
|
|
14455
14931
|
}
|
|
14456
14932
|
}
|
|
14457
14933
|
},
|
|
@@ -19120,41 +19596,6 @@
|
|
|
19120
19596
|
}
|
|
19121
19597
|
]
|
|
19122
19598
|
},
|
|
19123
|
-
{
|
|
19124
|
-
"kind": "pattern",
|
|
19125
|
-
"id": "practice-profile-hero",
|
|
19126
|
-
"composes": [
|
|
19127
|
-
{
|
|
19128
|
-
"component": "card",
|
|
19129
|
-
"as": "heroCard"
|
|
19130
|
-
},
|
|
19131
|
-
{
|
|
19132
|
-
"component": "avatar",
|
|
19133
|
-
"as": "practiceAvatar"
|
|
19134
|
-
},
|
|
19135
|
-
{
|
|
19136
|
-
"component": "rating",
|
|
19137
|
-
"as": "reviewSummary"
|
|
19138
|
-
},
|
|
19139
|
-
{
|
|
19140
|
-
"component": "badge",
|
|
19141
|
-
"as": "trustBadge",
|
|
19142
|
-
"entity": "practice"
|
|
19143
|
-
}
|
|
19144
|
-
],
|
|
19145
|
-
"workflows": [
|
|
19146
|
-
{
|
|
19147
|
-
"name": "view_profile",
|
|
19148
|
-
"safety": "read",
|
|
19149
|
-
"description": "Read the practice's public profile summary — name, tagline, average rating, review count, and trust badges.",
|
|
19150
|
-
"descriptionKey": "ui.agent.practiceProfileHero.workflows.viewProfile",
|
|
19151
|
-
"uiActions": [],
|
|
19152
|
-
"apiActions": [
|
|
19153
|
-
"practice.getProfile"
|
|
19154
|
-
]
|
|
19155
|
-
}
|
|
19156
|
-
]
|
|
19157
|
-
},
|
|
19158
19599
|
{
|
|
19159
19600
|
"kind": "pattern",
|
|
19160
19601
|
"id": "prenota",
|