@adminiumjs/app-clinic 1.0.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 (36) hide show
  1. package/customer/assets/App-DdIi94eM.js +1 -0
  2. package/customer/assets/embed-D9WnNWH8.js +1 -0
  3. package/customer/assets/icons-D7ArAIOl.js +1 -0
  4. package/customer/assets/index-CQI0fglh.css +1 -0
  5. package/customer/assets/index-re5HI07A.js +2 -0
  6. package/customer/assets/react-Ck9fDrdd.js +9 -0
  7. package/customer/assets/store-D7cmlyqr.js +1 -0
  8. package/customer/assets/surface-nav-6BkCPZCf.js +1 -0
  9. package/customer/assets/urlSync-DEafH1yc.js +1 -0
  10. package/customer/favicon.svg +18 -0
  11. package/customer/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
  12. package/customer/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  13. package/customer/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
  14. package/customer/fonts/manrope-latin-wght-normal.woff2 +0 -0
  15. package/customer/index.html +20 -0
  16. package/customer/surface.json +45 -0
  17. package/manifest.json +501 -0
  18. package/package.json +11 -0
  19. package/staff/assets/App-ijJtS1to.js +1 -0
  20. package/staff/assets/calendar-B59f3S_A.js +1 -0
  21. package/staff/assets/embed-D9WnNWH8.js +1 -0
  22. package/staff/assets/icons-BU1Aax3i.js +1 -0
  23. package/staff/assets/index-CqPaHjl7.js +8 -0
  24. package/staff/assets/index-DXzmd8KH.css +1 -0
  25. package/staff/assets/react-3MWIyadV.js +9 -0
  26. package/staff/assets/registry-EirlpZlW.js +1 -0
  27. package/staff/assets/store-D_4Keuh8.js +1 -0
  28. package/staff/assets/surface-nav-6BkCPZCf.js +1 -0
  29. package/staff/assets/urlSync-DqVGf0-x.js +1 -0
  30. package/staff/favicon.svg +18 -0
  31. package/staff/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
  32. package/staff/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  33. package/staff/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
  34. package/staff/fonts/manrope-latin-wght-normal.woff2 +0 -0
  35. package/staff/index.html +20 -0
  36. package/staff/surface.json +107 -0
@@ -0,0 +1,20 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/apps/clinic/customer/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <meta
8
+ name="description"
9
+ content="Clinic Desk — a demo appointment desk shipped with Adminium."
10
+ />
11
+ <title>Clinic Desk</title>
12
+ <script type="module" crossorigin src="/apps/clinic/customer/assets/index-re5HI07A.js"></script>
13
+ <link rel="modulepreload" crossorigin href="/apps/clinic/customer/assets/icons-D7ArAIOl.js">
14
+ <link rel="modulepreload" crossorigin href="/apps/clinic/customer/assets/react-Ck9fDrdd.js">
15
+ <link rel="stylesheet" crossorigin href="/apps/clinic/customer/assets/index-CQI0fglh.css">
16
+ </head>
17
+ <body>
18
+ <div id="root"></div>
19
+ </body>
20
+ </html>
@@ -0,0 +1,45 @@
1
+ {
2
+ "v": 1,
3
+ "appKey": "clinic",
4
+ "side": "customer",
5
+ "appLabels": {
6
+ "en-US": "Rowan Health",
7
+ "de-DE": "Rowan Health",
8
+ "fr-FR": "Rowan Health",
9
+ "cs-CZ": "Rowan Health",
10
+ "da-DK": "Rowan Health",
11
+ "zh-CN": "Rowan Health",
12
+ "zh-TW": "Rowan Health",
13
+ "ar-EG": "Rowan Health"
14
+ },
15
+ "nav": [
16
+ {
17
+ "id": "book",
18
+ "path": "",
19
+ "labels": {
20
+ "en-US": "Book",
21
+ "de-DE": "Termin buchen",
22
+ "fr-FR": "Prendre rendez-vous",
23
+ "cs-CZ": "Objednat se",
24
+ "da-DK": "Book tid",
25
+ "zh-CN": "预约",
26
+ "zh-TW": "預約",
27
+ "ar-EG": "احجز موعدًا"
28
+ }
29
+ },
30
+ {
31
+ "id": "myvisits",
32
+ "path": "my-visits",
33
+ "labels": {
34
+ "en-US": "My visits",
35
+ "de-DE": "Meine Termine",
36
+ "fr-FR": "Mes rendez-vous",
37
+ "cs-CZ": "Moje návštěvy",
38
+ "da-DK": "Mine besøg",
39
+ "zh-CN": "我的就诊",
40
+ "zh-TW": "我的就診",
41
+ "ar-EG": "زياراتي"
42
+ }
43
+ }
44
+ ]
45
+ }
package/manifest.json ADDED
@@ -0,0 +1,501 @@
1
+ {
2
+ "manifestVersion": 1,
3
+ "key": "clinic",
4
+ "name": "Clinic Desk",
5
+ "version": "1.0.0",
6
+ "publisher": {
7
+ "id": "adminium",
8
+ "name": "Adminium",
9
+ "url": "https://adminium.dev"
10
+ },
11
+ "license": "AGPL-3.0-only",
12
+ "description": {
13
+ "key": "mft.clinic.desc",
14
+ "fallback": "An appointment desk for a small practice: who is coming and when, checking them in, what they owe and who is due back — backed by your own database."
15
+ },
16
+ "categories": [
17
+ "operations"
18
+ ],
19
+ "compatibility": {
20
+ "minAdminiumVersion": "1.0.0",
21
+ "engines": [
22
+ "postgres",
23
+ "mysql",
24
+ "sqlite"
25
+ ],
26
+ "requires": [
27
+ "realtime"
28
+ ]
29
+ },
30
+ "requiredSchema": {
31
+ "tables": [
32
+ {
33
+ "ref": "clinicians",
34
+ "columns": [
35
+ {
36
+ "ref": "id",
37
+ "type": "int",
38
+ "role": "pk"
39
+ },
40
+ {
41
+ "ref": "name",
42
+ "type": "text"
43
+ },
44
+ {
45
+ "ref": "initials",
46
+ "type": "text"
47
+ },
48
+ {
49
+ "ref": "avatar",
50
+ "type": "text",
51
+ "semantic": "image"
52
+ },
53
+ {
54
+ "ref": "role",
55
+ "type": "enum",
56
+ "enum": [
57
+ "gp",
58
+ "physiotherapist",
59
+ "nurse"
60
+ ]
61
+ },
62
+ {
63
+ "ref": "color",
64
+ "type": "text"
65
+ },
66
+ {
67
+ "ref": "active",
68
+ "type": "bool"
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "ref": "clinician_hours",
74
+ "columns": [
75
+ {
76
+ "ref": "id",
77
+ "type": "int",
78
+ "role": "pk"
79
+ },
80
+ {
81
+ "ref": "clinician_id",
82
+ "type": "fk",
83
+ "references": "clinicians"
84
+ },
85
+ {
86
+ "ref": "weekday",
87
+ "type": "enum",
88
+ "enum": [
89
+ "mon",
90
+ "tue",
91
+ "wed",
92
+ "thu",
93
+ "fri",
94
+ "sat",
95
+ "sun"
96
+ ]
97
+ },
98
+ {
99
+ "ref": "opens",
100
+ "type": "text"
101
+ },
102
+ {
103
+ "ref": "closes",
104
+ "type": "text"
105
+ },
106
+ {
107
+ "ref": "break_start",
108
+ "type": "text"
109
+ },
110
+ {
111
+ "ref": "break_end",
112
+ "type": "text"
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ "ref": "visit_types",
118
+ "columns": [
119
+ {
120
+ "ref": "id",
121
+ "type": "int",
122
+ "role": "pk"
123
+ },
124
+ {
125
+ "ref": "name",
126
+ "type": "text"
127
+ },
128
+ {
129
+ "ref": "minutes",
130
+ "type": "int"
131
+ },
132
+ {
133
+ "ref": "fee",
134
+ "type": "money"
135
+ },
136
+ {
137
+ "ref": "color",
138
+ "type": "text"
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "ref": "patients",
144
+ "columns": [
145
+ {
146
+ "ref": "id",
147
+ "type": "int",
148
+ "role": "pk"
149
+ },
150
+ {
151
+ "ref": "name",
152
+ "type": "text"
153
+ },
154
+ {
155
+ "ref": "initials",
156
+ "type": "text"
157
+ },
158
+ {
159
+ "ref": "born_on",
160
+ "type": "date"
161
+ },
162
+ {
163
+ "ref": "phone",
164
+ "type": "text"
165
+ },
166
+ {
167
+ "ref": "email",
168
+ "type": "text",
169
+ "semantic": "email"
170
+ },
171
+ {
172
+ "ref": "allergies_note",
173
+ "type": "text"
174
+ },
175
+ {
176
+ "ref": "insurer",
177
+ "type": "text"
178
+ },
179
+ {
180
+ "ref": "policy_ref",
181
+ "type": "text"
182
+ },
183
+ {
184
+ "ref": "created_at",
185
+ "type": "timestamptz"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "ref": "appointments",
191
+ "columns": [
192
+ {
193
+ "ref": "id",
194
+ "type": "int",
195
+ "role": "pk"
196
+ },
197
+ {
198
+ "ref": "ref",
199
+ "type": "text"
200
+ },
201
+ {
202
+ "ref": "patient_id",
203
+ "type": "fk",
204
+ "references": "patients"
205
+ },
206
+ {
207
+ "ref": "clinician_id",
208
+ "type": "fk",
209
+ "references": "clinicians"
210
+ },
211
+ {
212
+ "ref": "visit_type_id",
213
+ "type": "fk",
214
+ "references": "visit_types"
215
+ },
216
+ {
217
+ "ref": "starts_at",
218
+ "type": "timestamptz"
219
+ },
220
+ {
221
+ "ref": "minutes",
222
+ "type": "int"
223
+ },
224
+ {
225
+ "ref": "reason",
226
+ "type": "text"
227
+ },
228
+ {
229
+ "ref": "desk_note",
230
+ "type": "text"
231
+ },
232
+ {
233
+ "ref": "status",
234
+ "type": "enum",
235
+ "enum": [
236
+ "booked",
237
+ "checked_in",
238
+ "roomed",
239
+ "with_clinician",
240
+ "ready",
241
+ "done",
242
+ "no_show",
243
+ "cancelled"
244
+ ]
245
+ },
246
+ {
247
+ "ref": "checked_in_at",
248
+ "type": "timestamptz"
249
+ },
250
+ {
251
+ "ref": "cancelled_at",
252
+ "type": "timestamptz"
253
+ },
254
+ {
255
+ "ref": "late_cancel",
256
+ "type": "bool"
257
+ },
258
+ {
259
+ "ref": "created_at",
260
+ "type": "timestamptz"
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "ref": "recalls",
266
+ "columns": [
267
+ {
268
+ "ref": "id",
269
+ "type": "int",
270
+ "role": "pk"
271
+ },
272
+ {
273
+ "ref": "patient_id",
274
+ "type": "fk",
275
+ "references": "patients"
276
+ },
277
+ {
278
+ "ref": "from_appointment_id",
279
+ "type": "fk",
280
+ "references": "appointments"
281
+ },
282
+ {
283
+ "ref": "due_on",
284
+ "type": "date"
285
+ },
286
+ {
287
+ "ref": "reason",
288
+ "type": "text"
289
+ },
290
+ {
291
+ "ref": "booked",
292
+ "type": "bool"
293
+ }
294
+ ]
295
+ },
296
+ {
297
+ "ref": "charges",
298
+ "columns": [
299
+ {
300
+ "ref": "id",
301
+ "type": "int",
302
+ "role": "pk"
303
+ },
304
+ {
305
+ "ref": "appointment_id",
306
+ "type": "fk",
307
+ "references": "appointments"
308
+ },
309
+ {
310
+ "ref": "amount",
311
+ "type": "money"
312
+ },
313
+ {
314
+ "ref": "created_at",
315
+ "type": "timestamptz"
316
+ }
317
+ ]
318
+ },
319
+ {
320
+ "ref": "payments",
321
+ "columns": [
322
+ {
323
+ "ref": "id",
324
+ "type": "int",
325
+ "role": "pk"
326
+ },
327
+ {
328
+ "ref": "charge_id",
329
+ "type": "fk",
330
+ "references": "charges"
331
+ },
332
+ {
333
+ "ref": "amount",
334
+ "type": "money"
335
+ },
336
+ {
337
+ "ref": "method",
338
+ "type": "enum",
339
+ "enum": [
340
+ "card",
341
+ "cash",
342
+ "transfer"
343
+ ]
344
+ },
345
+ {
346
+ "ref": "paid_at",
347
+ "type": "timestamptz"
348
+ }
349
+ ]
350
+ },
351
+ {
352
+ "ref": "closures",
353
+ "columns": [
354
+ {
355
+ "ref": "id",
356
+ "type": "int",
357
+ "role": "pk"
358
+ },
359
+ {
360
+ "ref": "clinician_id",
361
+ "type": "fk",
362
+ "references": "clinicians"
363
+ },
364
+ {
365
+ "ref": "on_date",
366
+ "type": "date"
367
+ },
368
+ {
369
+ "ref": "reason",
370
+ "type": "text"
371
+ }
372
+ ]
373
+ }
374
+ ]
375
+ },
376
+ "pages": [
377
+ {
378
+ "ref": "clinic-dashboard",
379
+ "template": "page-dashboard",
380
+ "title": {
381
+ "key": "mft.clinic.page.dashboard",
382
+ "fallback": "Dashboard"
383
+ },
384
+ "nav": {
385
+ "group": "manifest:clinic",
386
+ "icon": "layout-dashboard",
387
+ "order": 1
388
+ }
389
+ },
390
+ {
391
+ "ref": "clinic-day",
392
+ "template": "page-calendar",
393
+ "title": {
394
+ "key": "mft.clinic.page.day",
395
+ "fallback": "Day sheet"
396
+ },
397
+ "nav": {
398
+ "group": "manifest:clinic",
399
+ "icon": "calendar-days",
400
+ "order": 2
401
+ }
402
+ },
403
+ {
404
+ "ref": "clinic-patients",
405
+ "template": "page-crud",
406
+ "title": {
407
+ "key": "mft.clinic.page.patients",
408
+ "fallback": "Patients"
409
+ },
410
+ "nav": {
411
+ "group": "manifest:clinic",
412
+ "icon": "users",
413
+ "order": 3
414
+ }
415
+ },
416
+ {
417
+ "ref": "clinic-queue",
418
+ "template": "page-queue-inbox",
419
+ "title": {
420
+ "key": "mft.clinic.page.queue",
421
+ "fallback": "Waiting room"
422
+ },
423
+ "nav": {
424
+ "group": "manifest:clinic",
425
+ "icon": "armchair",
426
+ "order": 4
427
+ }
428
+ },
429
+ {
430
+ "ref": "clinic-accounts",
431
+ "template": "page-crud",
432
+ "title": {
433
+ "key": "mft.clinic.page.accounts",
434
+ "fallback": "Accounts"
435
+ },
436
+ "nav": {
437
+ "group": "manifest:clinic",
438
+ "icon": "receipt",
439
+ "order": 5
440
+ }
441
+ },
442
+ {
443
+ "ref": "clinic-recalls",
444
+ "template": "page-queue-inbox",
445
+ "title": {
446
+ "key": "mft.clinic.page.recalls",
447
+ "fallback": "Recalls"
448
+ },
449
+ "nav": {
450
+ "group": "manifest:clinic",
451
+ "icon": "calendar-clock",
452
+ "order": 6
453
+ }
454
+ }
455
+ ],
456
+ "capabilities": [
457
+ "payments",
458
+ "email-delivery",
459
+ "realtime"
460
+ ],
461
+ "kind": "app",
462
+ "frontends": [
463
+ {
464
+ "side": "staff",
465
+ "kind": "spa",
466
+ "entry": "index.html",
467
+ "env": {
468
+ "VITE_ADMINIUM_API_BASE_URL": {
469
+ "required": false,
470
+ "example": "https://admin.example.com"
471
+ },
472
+ "VITE_ADMINIUM_PUBLISHABLE_KEY": {
473
+ "required": false,
474
+ "example": "adm_pub_..."
475
+ }
476
+ },
477
+ "routes": {
478
+ "desk": "/"
479
+ }
480
+ },
481
+ {
482
+ "side": "customer",
483
+ "kind": "spa",
484
+ "entry": "index.html",
485
+ "env": {
486
+ "VITE_ADMINIUM_API_BASE_URL": {
487
+ "required": false,
488
+ "example": "https://admin.example.com"
489
+ },
490
+ "VITE_ADMINIUM_PUBLISHABLE_KEY": {
491
+ "required": false,
492
+ "example": "adm_pub_..."
493
+ }
494
+ },
495
+ "routes": {
496
+ "book": "/",
497
+ "visits": "/"
498
+ }
499
+ }
500
+ ]
501
+ }
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@adminiumjs/app-clinic",
3
+ "version": "1.0.0",
4
+ "description": "An appointment desk for a small practice: who is coming and when, checking them in, what they owe and who is due back — backed by your own database.",
5
+ "license": "AGPL-3.0-only",
6
+ "files": [
7
+ "manifest.json",
8
+ "staff",
9
+ "customer"
10
+ ]
11
+ }