1170 Commits

Author SHA1 Message Date
munawwirul_jamal bd48cc5907 feat/role-check: updat flow for input encounter 2025-12-15 12:10:04 +07:00
munawwirul_jamal 49ffad1dde feat/role-check: renew pnpm-lock 2025-12-14 21:50:35 +07:00
munawwirul_jamal 893a4a9b96 Merge branch 'dev' into feat/role-check 2025-12-14 15:38:29 +07:00
munawwirul_jamal 60f60b4187 feat/role-check: wip 2025-12-14 13:23:28 +07:00
Khafid Prayoga 51725d7f73 feat(patient): doc preview, integration to select ethnic and lang (#229)
* impl: opts for ethnic and lang

* fix: doc related for preview

fix: upload dokumen kk dan ktp

fix dokumen preview

fix: add preview doc on edit form
2025-12-12 16:12:24 +07:00
kusuma_ari 608c791cfc Merge branch 'dev' into integrasi_sso 2025-12-12 14:03:29 +07:00
Munawwirul Jamal b5f1ab7f88 Merge pull request #228 from dikstub-rssa/feat/patient-63-adjustment
Feat/patient 63 adjustment
2025-12-11 16:23:47 +07:00
Khafid Prayoga d78ad28607 adjust detail preview
feat(patient): add disability field and centralize disability codes

Move disability options to constants file and implement in both select component and patient preview

feat(patient-preview): add document section with skeleton loading

Add a new "Dokumen" section to the patient preview component that displays skeleton placeholders for KTP and KK documents. This improves the UI by showing loading states for document previews.
2025-12-11 15:57:38 +07:00
Khafid Prayoga 8c51cc2719 deprecated 2025-12-11 15:20:22 +07:00
Khafid Prayoga 80c558d284 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63-adjustment 2025-12-11 15:08:22 +07:00
Khafid Prayoga 3a4a2cc841 adjust form submit,list, and detail
refactor(patient-preview): comment out unused occupation field in patient preview
fix(handler): return success response from update operation in crud handler
fix search patient
add handle del search char for ease use
2025-12-11 14:54:18 +07:00
Munawwirul Jamal 82f4759571 Merge pull request #226 from dikstub-rssa/feat/role-check
Feat/role check
2025-12-11 10:14:34 +07:00
munawwirul_jamal 9bf7dacf55 feat/role-check: wip 2025-12-11 10:11:58 +07:00
Khafid Prayoga 8354d3819d fix(entry-form): clear disabilityType when disability is 'no'
Reset the disabilityType field when disability is set to 'no' to maintain data consistency
2025-12-10 20:38:54 +07:00
Khafid Prayoga 97d2b76ee3 refactor(person-relative): update schema and form components for family data
- Change value format in radio-parents-input from '1'/'0' to 'yes'/'no'
- Remove default labels from select-education and select-job components
- Update schema to make fields optional and add new fields
- Modify family-parents-form to use new schema and improve UI
- Update patient form and models to align with schema changes
2025-12-10 20:30:34 +07:00
Khafid Prayoga 3cac23ce8a fix edit form state
fix: id list for contacts and address list

fix warning

fix duplicate contacts responsible: true

fix edit family

fix nik required
2025-12-10 14:36:32 +07:00
munawwirul_jamal ee06f42c06 Merge branch 'dev' into feat/role-check 2025-12-10 10:47:04 +07:00
Khafid Prayoga 9918501f29 refactor(patient): extract age calculation logic to shared utility
Move age calculation logic from multiple components to a shared utility function in person model
Add age display to patient entry form and update preview component to use shared utility
Remove redundant age field from select-dob component
2025-12-10 09:49:30 +07:00
Khafid Prayoga e3680d183e Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63-adjustment 2025-12-10 09:49:04 +07:00
munawwirul_jamal ed3c83bbe4 dev: hotfix, menu structure 2025-12-10 07:26:12 +07:00
Munawwirul Jamal fc5055f28c Merge pull request #225 from dikstub-rssa/feat/assessment-adjustment-223
Feat/assessment adjustment 223
2025-12-10 07:20:05 +07:00
munawwirul_jamal 56e71ea693 feat/role-check: wip 2025-12-10 05:23:24 +07:00
Abizrh 8698cfac9b Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/assessment-adjustment-223 2025-12-09 23:26:37 +07:00
Abizrh ca492d4a8b fix (soapi): tidy up 2025-12-09 23:25:18 +07:00
Abizrh 6ba4b8ee6a enhance (soapi): get detail 2025-12-09 23:23:07 +07:00
Abizrh a8bf9c172d feat (soapi): adjust list 2025-12-09 22:33:50 +07:00
munawwirul_jamal ff19c022bb Merge branch 'dev' into feat/role-check 2025-12-09 21:05:02 +07:00
munawwirul_jamal bcfe566373 dev: hotfix, menu structure 2025-12-09 20:57:22 +07:00
munawwirul_jamal 9a7a951379 feat/role-check: wip 2025-12-09 20:57:04 +07:00
Khafid Prayoga 910b641750 form cleanup
feat(patient): add edit functionality to patient form

- Modify genPatientEntity to accept existing patient data for updates
- Add handleActionEdit handler for edit mode
- Update form to handle both create and edit modes
- Rename patient ref to patientDetail for clarity

refactor(patient): update marital status codes and job options mapping

- Change marital status enum values to standardized codes (S, M, D, W)
- Simplify job options and marital status options mapping using mapToComboboxOptList
- Add error handling in patient data loading

ajust styling text based on combobox

wip: edit patient redirect

refactor(models): update type definitions and form field handling

- Add field-name prop to SelectDob component for better form handling
- Update Person and Patient interfaces to use null for optional fields
- Add maritalStatus_code field to Person interface
- Improve type safety by replacing undefined with null for optional fields

fix casting radio str to boolean and parsing date error
2025-12-09 20:49:25 +07:00
Munawwirul Jamal fc0aa5274d Merge pull request #224 from dikstub-rssa/feat/adj-enc-list-199
Feat: Adjust Encounter
2025-12-09 18:19:15 +07:00
riefive f4501cf380 feat: add useEncounterEntry handler for managing encounter form data and logic. 2025-12-09 13:53:33 +07:00
riefive ad3f44c4a8 feat: Implement VClaim SEP integration with new components and handlers for encounter entry and supporting documents. 2025-12-09 13:31:23 +07:00
riefive 1b31b33406 feat: implement generic API proxy to forward requests, handle authentication, and manage vclaim routes. 2025-12-09 13:08:14 +07:00
riefive d5993ecbfe feat: Add default and ambulatory data table configurations for encounter lists. 2025-12-09 12:59:43 +07:00
riefive 9dc9c85fab feat: Introduce encounter list page with filtering, search, and action support, along with new handlers for encounter entries and supporting documents. 2025-12-09 12:50:11 +07:00
riefive 1634256bec feat: create encounter list view with filtering, CRUD actions, and document management. 2025-12-09 11:41:31 +07:00
riefive 69b047fce5 feat: Add encounter list view with filter form and data table configurations for encounter management. 2025-12-09 11:41:03 +07:00
munawwirul_jamal 816fe7cbf5 dev: hotfix, menu structure 2025-12-09 08:10:32 +07:00
Khafid Prayoga e967ee1cf0 refactor(role): rename PagePermission to RoleAccesses and fix base model id
Update type name from PagePermission to RoleAccesses across multiple files for consistency
Change mock id value from -1 to 0 in base model to match backend constraints
Enable RBAC middleware and fix patient edit page permissions
2025-12-08 18:57:35 +07:00
riefive 26b31a4d67 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/adj-enc-list-199 2025-12-08 16:10:33 +07:00
riefive 0a0461238c feat: add encounter list component with data display, filtering, and record management capabilities 2025-12-08 16:10:11 +07:00
riefive e33b23205a feat: Add encounter list with filtering, VClaim SEP/SIPP document management, and a new file field component. 2025-12-08 16:01:36 +07:00
Khafid Prayoga 1083bb5384 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63-adjustment 2025-12-08 15:38:14 +07:00
riefive b77646c9a6 feat: add encounter list component with filtering, CRUD actions, and document management capabilities. 2025-12-08 15:03:38 +07:00
riefive 356647f810 feat: Add encounter list page with filter form and document upload functionality. 2025-12-08 15:01:14 +07:00
riefive 4fc48d6131 feat: Implement encounter list with filtering and navigation components. 2025-12-08 14:51:38 +07:00
riefive 703d3f902a feat: Implement encounter list views with new configurations, vclaim SEP/SIPP document handling, and initial encounter entry forms. 2025-12-08 14:02:41 +07:00
munawwirul_jamal e4cd02f2ce dev: hotfix temp 2 2025-12-08 13:22:21 +07:00
riefive 53b40ec732 feat: Implement patient encounter management with entry form, SEP integration, and list views. 2025-12-08 13:02:14 +07:00
munawwirul_jamal 5db181fc16 dev: hotfix temp 2025-12-08 12:33:31 +07:00
Munawwirul Jamal d78e0b1ae7 Merge pull request #222 from dikstub-rssa/feat/education-assessment-79
Feat/education assessment 79
2025-12-08 12:25:42 +07:00
Khafid Prayoga ed915be269 Merge branch 'dev' into feat/education-assessment-79 2025-12-08 12:21:06 +07:00
Khafid Prayoga 52a6935d07 mbois gak rek? 2025-12-08 12:19:14 +07:00
Munawwirul Jamal 2700e8e0f0 Merge pull request #221 from dikstub-rssa/feat/ap-lab-order-52
Feat/ap lab order 52
2025-12-08 11:33:42 +07:00
Khafid Prayoga b5846adb7e composables: cherry-pick 2025-12-08 11:32:18 +07:00
Khafid Prayoga dcbc9682df wip: rename field to fields 2025-12-08 11:30:00 +07:00
Munawwirul Jamal db7839a9d2 Merge pull request #219 from dikstub-rssa/feat/adj-enc-list-199
Feat - Item + Item Price
2025-12-08 11:29:49 +07:00
Munawwirul Jamal 9198d91b57 Merge pull request #197 from dikstub-rssa/feat/laporan-tindakan-185
feat(treatment-report): ui & crud done
2025-12-08 11:29:30 +07:00
Khafid Prayoga 0d3cfbec47 wip: adjust form
- adjust rencana edukasi
- hide code on select items
2025-12-08 11:22:58 +07:00
riefive 1a7a69162d feat: Create encounter entry form component for patient, doctor, and SEP details. 2025-12-08 11:21:56 +07:00
Khafid Prayoga a5ec824f4d cherry-pick: pub components from feat/laporan-tindakan-185 2025-12-08 11:01:44 +07:00
Khafid Prayoga d3d68e7151 Merge branch 'dev' into feat/laporan-tindakan-185 2025-12-08 10:59:18 +07:00
Khafid Prayoga 5e3d0d7911 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/education-assessment-79 2025-12-08 10:18:40 +07:00
avsky0095 122b9c5fa5 feat/ap-lab-order-52: wip 2025-12-08 08:05:39 +07:00
munawwirul_jamal 2f257e6c8d Merge branch 'dev' into feat/ap-lab-order-52 2025-12-08 08:00:13 +07:00
munawwirul_jamal 108ec8e899 dev: hotfix, added my-ui/checkboxes 2025-12-08 07:59:56 +07:00
munawwirul_jamal fec5934a93 Merge branch 'dev' into feat/ap-lab-order-52 2025-12-06 18:44:57 +07:00
Munawwirul Jamal 008903efab Merge pull request #202 from dikstub-rssa/feat/rm-rajal-183
Feat/rm rajal 183
2025-12-06 15:50:47 +07:00
munawwirul_jamal c0401fd852 Merge branch 'dev' into feat/ap-lab-order-52 2025-12-06 15:10:21 +07:00
Munawwirul Jamal 6b69670c81 Merge pull request #214 from dikstub-rssa/feat/move-kai-ui-to-sidebar-195
Feat/move kai UI to sidebar 195
2025-12-06 14:06:47 +07:00
Khafid Prayoga 05e2f32197 edit-mode: unwrap detail data and use strict type
refactor(patient-form): simplify address synchronization logic

- Extract address sync logic into helper functions
- Remove unused schema imports
- Streamline mounted hook with new loadInitData function
- Consolidate watchers into single efficient watcher

feat(forms): add readonly support across all form components

Implement readonly state handling for patient, relative, contact, and address forms
Add isDisabled prop to all form fields to support readonly mode
Update form components to respect isReadonly prop from parent

refactor(patient-form): reorganize imports and improve type usage

- Group related imports and move type imports to the top
- Replace genPatient with genPatientEntity for better type safety
- Remove console.log statement
- Fix formatting and indentation issues
2025-12-06 10:52:35 +07:00
Abizrh c26edd7085 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/rm-rajal-183 2025-12-06 09:31:18 +07:00
Khafid Prayoga 1f6ca8a7f9 wip: adjust strict form data
person-relative: schema bind strict typed
person-contact: strict schema type
person-families: strict schema type
person-address-relative: strict schema type
patient: strict schema type
person-address: strict schema type
2025-12-06 08:54:37 +07:00
riefive a61407a0a6 fix: change payment 2025-12-06 04:47:18 +07:00
riefive 7c4f08780c fix: update encounter payment method 2025-12-06 04:32:08 +07:00
Khafid Prayoga 8754c7c062 cherry-pick 2025-12-05 20:00:46 +07:00
Khafid Prayoga 41985ea89f feat(patient): enhance patient detail view with accordion and timezone support
- Add date-fns-tz for timezone-aware date formatting
- Refactor patient detail view to use accordion components
- Improve date display formatting with locale support
- Update navigation handling for edit and back actions
- Extend ClickType enum to include 'edit' action
2025-12-05 19:24:40 +07:00
Khafid Prayoga d848e5bd07 cherrry-pick 2025-12-05 18:51:14 +07:00
riefive 41062a5805 wip: encounter edit 2025-12-05 18:00:05 +07:00
riefive db10a8b194 fix: select for item price 2025-12-05 16:42:28 +07:00
riefive a0d54c062a fix: encounter conflict solve 2025-12-05 16:38:36 +07:00
riefive f4079c58fa fix: item update form 2025-12-05 15:03:52 +07:00
riefive 4715e5330a feat: Implement item management module and add encounter initialization handler. 2025-12-05 14:53:31 +07:00
Hasyim Kai 75b9618a26 Squashed commit of the following:
commit 9f5ede3aea
Merge: 16858dc dbe8e34
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Dec 5 09:26:33 2025 +0700

    Merge pull request #213 from dikstub-rssa/feat/things-munaja

    Feat/things munaja

commit dbe8e34d07
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Dec 5 09:26:00 2025 +0700

    feat/things-munaja: fix enc status

commit 786107ddd9
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 22:57:33 2025 +0700

    feat/things-munaja: content switcher

commit 4450cb943e
Merge: 9136093 16858dc
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 19:31:30 2025 +0700

    Merge branch 'dev' into feat/things-munaja

commit 9136093fd6
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 18:02:14 2025 +0700

    feat/things-munaja: cleaning

commit 16858dc2a0
Merge: 82e33c6 67a5154
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 14:30:35 2025 +0700

    Merge pull request #212 from dikstub-rssa/feat/encounter-adjustment-163

    Enhancement SEP

commit 67a515478c
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 13:39:36 2025 +0700

    fix: save sep

commit 82e33c6dbf
Merge: f96cbdb eba740a
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 13:21:37 2025 +0700

    Merge pull request #209 from dikstub-rssa/feat/move-kai-ui-to-sidebar-195

    Feat/move kai UI to sidebar 195

commit e6b74a4949
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:36:53 2025 +0700

    fix: encounter update form

commit 434f8471ce
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:20:07 2025 +0700

    fix: update save again

commit bae087aa6d
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 12:19:37 2025 +0700

    fix: update save

commit f96cbdb173
Merge: 5de0057 62556a5
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:25 2025 +0700

    Merge pull request #210 from dikstub-rssa/feat/procedure-room-order

    Feat/procedure room order

commit 62556a5c7d
Merge: 93a294d 5de0057
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:18 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 5da439720f
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 11:59:37 2025 +0700

    feat: implement encounter entry form for patient, doctor, payment, and SEP management

commit 5de0057278
Merge: 71ca7f9 782034c
Author: Andsky <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:56:31 2025 +0700

    Merge pull request #211 from dikstub-rssa/feat/micro-lab-order-50

    Feat/micro lab order 50

commit 93a294d8d0
Merge: 6c26367 26365bb
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:49 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 26365bbd2e
Merge: b6b56d1 e7cab6c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:33 2025 +0700

    Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev

commit 6c26367c1d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:51:40 2025 +0700

    feat/procedure-room-order: added item

commit d2ceda37bf
Author: riefive <rie.five@gmail.com>
Date:   Thu Dec 4 10:58:16 2025 +0700

    feat: Implement encounter list management with search, date range filtering, and record actions.

commit a0dfd214e5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:50 2025 +0700

    feat/procedure-room-order: finishing

commit acb573e279
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:35 2025 +0700

    feat/procedure-room-order: adjust procedure-room-order

commit 9adb77d10b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:24:52 2025 +0700

    feat/procedure-room-order: adjust material-package

commit 52454a019e
Merge: 0a0fb73 b6b56d1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:23:14 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit b6b56d186d
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 10:17:16 2025 +0700

    dev: hotfix, cleaning some pubs

commit acc45b205f
Author: riefive <rie.five@gmail.com>
Date:   Wed Dec 3 16:25:15 2025 +0700

    fix: upload sep + sipp file

commit 0a0fb73483
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Dec 3 14:33:13 2025 +0700

    feat/procedure-room-order: flow for procedure room

commit 7b4b4eecf9
Merge: 9f72e1d b172125
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:18:15 2025 +0700

    Merge branch 'feat/mcu-order' into feat/procedure-room-order

commit 782034c2b1
Merge: bae0a22 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:16:45 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 9f72e1df47
Merge: fa0ae98 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:02:57 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit fa0ae9866e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:44:33 2025 +0700

    feat/procedure-room-order: wip #3

commit ce93f996d9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:43:36 2025 +0700

    feat/procedure-room-order: wip #2
    + procedure-room

commit 4444e87cb3
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:42:31 2025 +0700

    feat/procedure-room-order: wip #1

    + material-package
    + material-package-item

commit b172125d99
Merge: b2d3c14 9b7a719
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 20:41:58 2025 +0700

    Merge branch 'feat/page-cleaning' into feat/mcu-order

commit bae0a222b8
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:51:04 2025 +0700

    feat/micro-lab-order-50: adjust for antibiotic

commit 1ee0f39e7d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:50:39 2025 +0700

    feat/micro-lab-order-50: added antibiotic

commit 95e27a8b6f
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 13:00:04 2025 +0700

    feat/micro-lab-order-50: wip

commit a002ef6c6e
Merge: fb2f01b b2d3c14
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:50:31 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit b2d3c14ddc
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:48:11 2025 +0700

    feat/mcu-order: adjustment

commit fb2f01bd36
Merge: 9a481fe 5c92f8b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:43:11 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit 5c92f8b946
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:30:19 2025 +0700

    feat/mcu-order: added the components

commit 9a481fec14
Merge: 4251239 78fc289
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:18:10 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 4251239f7c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:17:18 2025 +0700

    feat/micro-lab-order-50: wip

commit cf5789549e
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Nov 23 15:56:31 2025 +0700

    feat/mcu: improved wip

commit a40eac35f8
Merge: 3211972 baf6ab1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:23:18 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit 3211972a84
Merge: e3fc1e4 ccabe01
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:15:07 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit e3fc1e4ab9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:14:38 2025 +0700

    feat/radiology-order-54: adjust wip
2025-12-05 14:16:05 +07:00
Hasyim Kai 3e812db8eb Fix: refactor Kai CRUD UI to no redirect 2025-12-05 14:15:54 +07:00
riefive 615a7c4485 feat: Implement item management with CRUD operations, forms, and listing pages. 2025-12-05 13:54:53 +07:00
Khafid Prayoga d84a13272c Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63-adjustment 2025-12-05 13:40:02 +07:00
Khafid Prayoga ac240e52dd Merge branch 'dev' into feat/laporan-tindakan-185 2025-12-05 13:37:33 +07:00
Munawwirul Jamal 9f5ede3aea Merge pull request #213 from dikstub-rssa/feat/things-munaja
Feat/things munaja
2025-12-05 09:26:33 +07:00
munawwirul_jamal dbe8e34d07 feat/things-munaja: fix enc status 2025-12-05 09:26:00 +07:00
Khafid Prayoga 3279aeac70 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/laporan-tindakan-185 2025-12-05 08:35:15 +07:00
munawwirul_jamal 786107ddd9 feat/things-munaja: content switcher 2025-12-04 22:57:33 +07:00
munawwirul_jamal 4450cb943e Merge branch 'dev' into feat/things-munaja 2025-12-04 19:31:30 +07:00
munawwirul_jamal 9136093fd6 feat/things-munaja: cleaning 2025-12-04 18:02:14 +07:00
riefive 864979aa15 feat: Implement item price CRUD service and handlers, and item CRUD handlers. 2025-12-04 14:57:36 +07:00
riefive 413a3c2b29 feat: Add item and item price list components with their respective configurations. 2025-12-04 14:40:59 +07:00
riefive ff22ce6848 feat: Add entry forms and schemas for item, item price, and encounter management. 2025-12-04 14:36:04 +07:00
Munawwirul Jamal 16858dc2a0 Merge pull request #212 from dikstub-rssa/feat/encounter-adjustment-163
Enhancement SEP
2025-12-04 14:30:35 +07:00
Hasyim Kai 89b6163da8 Squashed commit of the following:
commit 82e33c6dbf
Merge: f96cbdb eba740a
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 13:21:37 2025 +0700

    Merge pull request #209 from dikstub-rssa/feat/move-kai-ui-to-sidebar-195

    Feat/move kai UI to sidebar 195

commit f96cbdb173
Merge: 5de0057 62556a5
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:25 2025 +0700

    Merge pull request #210 from dikstub-rssa/feat/procedure-room-order

    Feat/procedure room order

commit 62556a5c7d
Merge: 93a294d 5de0057
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Dec 4 12:07:18 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 5de0057278
Merge: 71ca7f9 782034c
Author: Andsky <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:56:31 2025 +0700

    Merge pull request #211 from dikstub-rssa/feat/micro-lab-order-50

    Feat/micro lab order 50

commit 93a294d8d0
Merge: 6c26367 26365bb
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:49 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit 26365bbd2e
Merge: b6b56d1 e7cab6c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 11:18:33 2025 +0700

    Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev

commit 6c26367c1d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:51:40 2025 +0700

    feat/procedure-room-order: added item

commit a0dfd214e5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:50 2025 +0700

    feat/procedure-room-order: finishing

commit acb573e279
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:25:35 2025 +0700

    feat/procedure-room-order: adjust procedure-room-order

commit 9adb77d10b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:24:52 2025 +0700

    feat/procedure-room-order: adjust material-package

commit 52454a019e
Merge: 0a0fb73 b6b56d1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Dec 4 10:23:14 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit b6b56d186d
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Dec 4 10:17:16 2025 +0700

    dev: hotfix, cleaning some pubs

commit 0a0fb73483
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Dec 3 14:33:13 2025 +0700

    feat/procedure-room-order: flow for procedure room

commit 7b4b4eecf9
Merge: 9f72e1d b172125
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:18:15 2025 +0700

    Merge branch 'feat/mcu-order' into feat/procedure-room-order

commit 782034c2b1
Merge: bae0a22 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:16:45 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 9f72e1df47
Merge: fa0ae98 b80ee5a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 10:02:57 2025 +0700

    Merge branch 'dev' into feat/procedure-room-order

commit fa0ae9866e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:44:33 2025 +0700

    feat/procedure-room-order: wip #3

commit ce93f996d9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:43:36 2025 +0700

    feat/procedure-room-order: wip #2
    + procedure-room

commit 4444e87cb3
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Dec 3 09:42:31 2025 +0700

    feat/procedure-room-order: wip #1

    + material-package
    + material-package-item

commit b172125d99
Merge: b2d3c14 9b7a719
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 20:41:58 2025 +0700

    Merge branch 'feat/page-cleaning' into feat/mcu-order

commit bae0a222b8
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:51:04 2025 +0700

    feat/micro-lab-order-50: adjust for antibiotic

commit 1ee0f39e7d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Dec 1 01:50:39 2025 +0700

    feat/micro-lab-order-50: added antibiotic

commit 95e27a8b6f
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 13:00:04 2025 +0700

    feat/micro-lab-order-50: wip

commit a002ef6c6e
Merge: fb2f01b b2d3c14
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:50:31 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit b2d3c14ddc
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:48:11 2025 +0700

    feat/mcu-order: adjustment

commit fb2f01bd36
Merge: 9a481fe 5c92f8b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:43:11 2025 +0700

    Merge branch 'feat/mcu-order' into feat/micro-lab-order-50

commit 5c92f8b946
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 30 12:30:19 2025 +0700

    feat/mcu-order: added the components

commit 9a481fec14
Merge: 4251239 78fc289
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:18:10 2025 +0700

    Merge branch 'dev' into feat/micro-lab-order-50

commit 4251239f7c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Nov 28 21:17:18 2025 +0700

    feat/micro-lab-order-50: wip

commit cf5789549e
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Nov 23 15:56:31 2025 +0700

    feat/mcu: improved wip

commit a40eac35f8
Merge: 3211972 baf6ab1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:23:18 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit 3211972a84
Merge: e3fc1e4 ccabe01
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:15:07 2025 +0700

    Merge branch 'dev' into feat/radiology-order-54

commit e3fc1e4ab9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:14:38 2025 +0700

    feat/radiology-order-54: adjust wip
2025-12-04 13:57:03 +07:00
riefive 952a3490da Merge branch 'feat/encounter-adjustment-163' into feat/adj-enc-list-199 2025-12-04 13:45:47 +07:00
riefive 67a515478c fix: save sep 2025-12-04 13:39:36 +07:00
Munawwirul Jamal 82e33c6dbf Merge pull request #209 from dikstub-rssa/feat/move-kai-ui-to-sidebar-195
Feat/move kai UI to sidebar 195
2025-12-04 13:21:37 +07:00
riefive e6b74a4949 fix: encounter update form 2025-12-04 12:36:53 +07:00
riefive 434f8471ce fix: update save again 2025-12-04 12:20:07 +07:00
riefive bae087aa6d fix: update save 2025-12-04 12:19:37 +07:00
Munawwirul Jamal f96cbdb173 Merge pull request #210 from dikstub-rssa/feat/procedure-room-order
Feat/procedure room order
2025-12-04 12:07:25 +07:00
Munawwirul Jamal 62556a5c7d Merge branch 'dev' into feat/procedure-room-order 2025-12-04 12:07:18 +07:00
riefive 5da439720f feat: implement encounter entry form for patient, doctor, payment, and SEP management 2025-12-04 11:59:37 +07:00
Andsky 5de0057278 Merge pull request #211 from dikstub-rssa/feat/micro-lab-order-50
Feat/micro lab order 50
2025-12-04 11:56:31 +07:00
Muhammad Hasyim Chaidir Ali eba740a893 Merge branch 'dev' into feat/move-kai-ui-to-sidebar-195 2025-12-04 11:53:23 +07:00
Hasyim Kai d743d31607 Fix: debug process pages import bug 2025-12-04 11:51:52 +07:00
Munawwirul Jamal 71ca7f9d97 Merge pull request #201 from dikstub-rssa/feat/kajian-awal-keperawatan-184
Feat/kajian awal keperawatan 184
2025-12-04 11:51:49 +07:00
Munawwirul Jamal c9b10c93c2 Merge pull request #200 from dikstub-rssa/feat/encounter-adjustment-163
Feat: Encounter Adjustment
2025-12-04 11:51:35 +07:00
Andrian Roshandy 5b05a109de Merge branch 'dev' into feat/ap-lab-order-52 2025-12-04 11:47:48 +07:00
Hasyim Kai 3413e882de Feat: add UIs to sidebar 2025-12-04 11:41:43 +07:00
munawwirul_jamal 56e34119d5 dev: hotfix again, suddenly useQueryCRUD was missing 2025-12-04 11:36:22 +07:00
Andrian Roshandy 93a294d8d0 Merge branch 'dev' into feat/procedure-room-order 2025-12-04 11:18:49 +07:00
Andrian Roshandy 26365bbd2e Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev 2025-12-04 11:18:33 +07:00
munawwirul_jamal e7cab6caed dev: hotfix, cleaning some pubs 2025-12-04 11:17:44 +07:00
Andrian Roshandy 6c26367c1d feat/procedure-room-order: added item 2025-12-04 11:05:09 +07:00
riefive d2ceda37bf feat: Implement encounter list management with search, date range filtering, and record actions. 2025-12-04 10:58:16 +07:00
Andrian Roshandy a0dfd214e5 feat/procedure-room-order: finishing 2025-12-04 10:25:50 +07:00
Andrian Roshandy acb573e279 feat/procedure-room-order: adjust procedure-room-order 2025-12-04 10:25:35 +07:00
Andrian Roshandy 9adb77d10b feat/procedure-room-order: adjust material-package 2025-12-04 10:24:52 +07:00
Andrian Roshandy 52454a019e Merge branch 'dev' into feat/procedure-room-order 2025-12-04 10:23:14 +07:00
munawwirul_jamal b6b56d186d dev: hotfix, cleaning some pubs 2025-12-04 10:17:16 +07:00
Hasyim Kai 32972bd9db Squashed commit of the following:
commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 20 16:14:03 2025 +0700

    Feat: UI control letter history

commit f11f97f936447bdb225918abb43313f8db540d67
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 20 15:18:25 2025 +0700

    Squashed commit of the following:

    commit dab6adc4a9
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 18 11:19:48 2025 +0700

        Fix: add role authorization in Resume

    commit c28fc8f7aa
    Merge: 7ed1cc8 bcfb4c1
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Tue Nov 18 09:02:16 2025 +0700

        Merge branch 'dev' into feat/resume-81

    commit 7ed1cc83bf
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 17 15:04:01 2025 +0700

        Feat: add doc preview in Resume List

    commit bcfb4c1456
    Merge: 1cbde57 975c87d
    Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
    Date:   Mon Nov 17 11:15:14 2025 +0700

        Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

        Feat: Integration Rehab Medik - Surat Kontrol

    commit 15ab43c1b1
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 17 10:38:21 2025 +0700

        Feat: add verification capthca and form adjustment

    commit 53bd8e7f6e
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Fri Nov 7 08:55:23 2025 +0700

        Fix: refactor rehab medik - Resume UI

    commit fc308809b8
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Wed Oct 29 14:57:19 2025 +0700

        Feat: add UI Rehab Medik > Proses > Resume

    commit 9b383a5437
    Merge: a4dc7d7 831749a
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Wed Oct 29 13:32:47 2025 +0700

        Merge pull request #139 from dikstub-rssa/dev

        Update branch feat/resume-81

commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 11:20:51 2025 +0700

    Fix: Typo in Control Letter

commit 808e91527cf95de2a47387bb792a3af2e16d907b
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 10:59:50 2025 +0700

    Fix: add role authorization in Control Letter
2025-12-04 09:57:18 +07:00
Hasyim Kai 44863c200a Squashed commit of the following:
commit 1a5cf194cd0d6eec85bbb8bf1c199df82aa79d4f
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Dec 2 10:30:51 2025 +0700

    Squashed commit of the following:

    commit ec24dd8383e3a9c7cb7190b7ed9864ae7225805f
    Merge: 17cd42e 7319cbc
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Tue Dec 2 10:18:33 2025 +0700

        Merge branch 'dev' into feat/data-vaksin-192

    commit 17cd42ef03d1cda15a8f85831e747723fbb2c0a5
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Dec 1 16:41:06 2025 +0700

        Feat: UI Data Vaksin

    commit 1ced91229792420daca732256d535d100570d5bc
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Dec 1 14:10:27 2025 +0700

        Squashed commit of the following:

        commit 8e6a6b3fd1a8ed6c19099b52f5d7fc38f6a1a39a
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Fri Nov 28 14:32:47 2025 +0700

            Feat: UI PRB

        commit 4f2da6cd1e077598fb7f3cdede8d771e9b39b2d7
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Thu Nov 27 19:41:18 2025 +0700

            Squashed commit of the following:

            commit 4a465f3992
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Mon Nov 24 13:40:22 2025 +0700

                progress

            commit 7811f051a5
            Merge: f060ed3 8aac6c4
            Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
            Date:   Mon Nov 24 10:25:15 2025 +0700

                Merge branch 'dev' into feat/kfr-kemoterapi-174

            commit f060ed33d2
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Mon Nov 24 10:21:20 2025 +0700

                Feat: UI KFR

            commit 399c3cbaee
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Thu Nov 20 11:19:03 2025 +0700

                Squashed commit of the following:

                commit 72ce2260c50597f782f07d29db3985607ecc2f34
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 17 15:19:36 2025 +0700

                    Feat: add doc preview in Therpay protocol List

                commit 7032cd2409a660d40899ffd421137e4158cfde4a
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Wed Nov 12 15:34:30 2025 +0700

                    Fix: prepare API integration protokol terapi verification

                commit dbf6f78d00afc818baf2b34d128ee2153814cc88
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Wed Nov 12 14:09:28 2025 +0700

                    Feat: add basic CRUD therapy protocol

                commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 11 15:57:54 2025 +0700

                    Fix: Prepare protokol terapi API Integration

                commit 4674090566727cebd947e50e2c06c44e8c7afa7e
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:33:22 2025 +0700

                    Fix: hotfix style add protokol terapi

                commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:17:14 2025 +0700

                    Fix: Typo drpodown-action-p in protokol-terapi

                commit e21d30eacf1a08118e289d4bb64889e708d5023a
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:14:33 2025 +0700

                    Fix: add diagnose & procedure dialog picker in add protokol terapi

                commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 4 10:21:24 2025 +0700

                    Fix: Add Schema therapy protocol rehab medik

                commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 4 09:30:55 2025 +0700

                    Fix: refactor Actions Btn ba-dr-su

                commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 3 17:08:20 2025 +0700

                    Feat: UI protokol terapi in Rehab medik

                commit 63010f69ff30532bb8ac91443112f31d4942b221
                Author: Khafid Prayoga <khafidp@pm.me>
                Date:   Tue Oct 21 09:54:13 2025 +0700

                    wip: list protokol terapi

                commit 44eedc298680a5255fee0ee8feee3e24beda93dd
                Author: Khafid Prayoga <khafidp@pm.me>
                Date:   Mon Oct 20 12:54:01 2025 +0700

                    feat(therapy-protocol): init form entry

                    feat(therapy-protocol): init page routes

                    wip: init entry form

                    wip: form entry protokol terapi

                    todo: table procedure, and diagnose  picker

                    wip: schema form new entry

                    todo: picker/modal yang relateds ke form entry

        commit b2a6cdee0b7beb775830c4dceb69ff12c01d3ca4
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Wed Nov 26 14:44:57 2025 +0700

            Squashed commit of the following:

            commit 39b778ab78
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Tue Nov 25 14:39:41 2025 +0700

                Feat: UI Laporan Operasi

            commit f6ae61849d
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Tue Nov 25 14:09:25 2025 +0700

                Squashed commit of the following:

                commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Thu Nov 20 16:14:03 2025 +0700

                    Feat: UI control letter history

                commit f11f97f936447bdb225918abb43313f8db540d67
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Thu Nov 20 15:18:25 2025 +0700

                    Squashed commit of the following:

                    commit dab6adc4a9
                    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                    Date:   Tue Nov 18 11:19:48 2025 +0700

                        Fix: add role authorization in Resume

                    commit c28fc8f7aa
                    Merge: 7ed1cc8 bcfb4c1
                    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
                    Date:   Tue Nov 18 09:02:16 2025 +0700

                        Merge branch 'dev' into feat/resume-81

                    commit 7ed1cc83bf
                    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                    Date:   Mon Nov 17 15:04:01 2025 +0700

                        Feat: add doc preview in Resume List

                    commit bcfb4c1456
                    Merge: 1cbde57 975c87d
                    Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
                    Date:   Mon Nov 17 11:15:14 2025 +0700

                        Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

                        Feat: Integration Rehab Medik - Surat Kontrol

                    commit 15ab43c1b1
                    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                    Date:   Mon Nov 17 10:38:21 2025 +0700

                        Feat: add verification capthca and form adjustment

                    commit 53bd8e7f6e
                    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                    Date:   Fri Nov 7 08:55:23 2025 +0700

                        Fix: refactor rehab medik - Resume UI

                    commit fc308809b8
                    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                    Date:   Wed Oct 29 14:57:19 2025 +0700

                        Feat: add UI Rehab Medik > Proses > Resume

                    commit 9b383a5437
                    Merge: a4dc7d7 831749a
                    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
                    Date:   Wed Oct 29 13:32:47 2025 +0700

                        Merge pull request #139 from dikstub-rssa/dev

                        Update branch feat/resume-81

                commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 18 11:20:51 2025 +0700

                    Fix: Typo in Control Letter

                commit 808e91527cf95de2a47387bb792a3af2e16d907b
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 18 10:59:50 2025 +0700

                    Fix: add role authorization in Control Letter

            commit 1dd8e8e7b3
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Tue Nov 25 09:23:57 2025 +0700

                Squashed commit of the following:

                commit 72ce2260c50597f782f07d29db3985607ecc2f34
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 17 15:19:36 2025 +0700

                    Feat: add doc preview in Therpay protocol List

                commit 7032cd2409a660d40899ffd421137e4158cfde4a
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Wed Nov 12 15:34:30 2025 +0700

                    Fix: prepare API integration protokol terapi verification

                commit dbf6f78d00afc818baf2b34d128ee2153814cc88
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Wed Nov 12 14:09:28 2025 +0700

                    Feat: add basic CRUD therapy protocol

                commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 11 15:57:54 2025 +0700

                    Fix: Prepare protokol terapi API Integration

                commit 4674090566727cebd947e50e2c06c44e8c7afa7e
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:33:22 2025 +0700

                    Fix: hotfix style add protokol terapi

                commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:17:14 2025 +0700

                    Fix: Typo drpodown-action-p in protokol-terapi

                commit e21d30eacf1a08118e289d4bb64889e708d5023a
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 10 15:14:33 2025 +0700

                    Fix: add diagnose & procedure dialog picker in add protokol terapi

                commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 4 10:21:24 2025 +0700

                    Fix: Add Schema therapy protocol rehab medik

                commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Tue Nov 4 09:30:55 2025 +0700

                    Fix: refactor Actions Btn ba-dr-su

                commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
                Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
                Date:   Mon Nov 3 17:08:20 2025 +0700

                    Feat: UI protokol terapi in Rehab medik

                commit 63010f69ff30532bb8ac91443112f31d4942b221
                Author: Khafid Prayoga <khafidp@pm.me>
                Date:   Tue Oct 21 09:54:13 2025 +0700

                    wip: list protokol terapi

                commit 44eedc298680a5255fee0ee8feee3e24beda93dd
                Author: Khafid Prayoga <khafidp@pm.me>
                Date:   Mon Oct 20 12:54:01 2025 +0700

                    feat(therapy-protocol): init form entry

                    feat(therapy-protocol): init page routes

                    wip: init entry form

                    wip: form entry protokol terapi

                    todo: table procedure, and diagnose  picker

                    wip: schema form new entry

                    todo: picker/modal yang relateds ke form entry

            commit 3e5c03148b
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Tue Nov 25 09:17:11 2025 +0700

                progress

commit a89c480474c025fb683383693e6a6808baa1d0d6
Merge: 8e6a6b3 7319cbc
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Tue Dec 2 10:27:07 2025 +0700

    Merge branch 'dev' into feat/prb-189

commit 8e6a6b3fd1a8ed6c19099b52f5d7fc38f6a1a39a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 28 14:32:47 2025 +0700

    Feat: UI PRB

commit 4f2da6cd1e077598fb7f3cdede8d771e9b39b2d7
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 27 19:41:18 2025 +0700

    Squashed commit of the following:

    commit 4a465f3992
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 24 13:40:22 2025 +0700

        progress

    commit 7811f051a5
    Merge: f060ed3 8aac6c4
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Mon Nov 24 10:25:15 2025 +0700

        Merge branch 'dev' into feat/kfr-kemoterapi-174

    commit f060ed33d2
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 24 10:21:20 2025 +0700

        Feat: UI KFR

    commit 399c3cbaee
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Thu Nov 20 11:19:03 2025 +0700

        Squashed commit of the following:

        commit 72ce2260c50597f782f07d29db3985607ecc2f34
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 17 15:19:36 2025 +0700

            Feat: add doc preview in Therpay protocol List

        commit 7032cd2409a660d40899ffd421137e4158cfde4a
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Wed Nov 12 15:34:30 2025 +0700

            Fix: prepare API integration protokol terapi verification

        commit dbf6f78d00afc818baf2b34d128ee2153814cc88
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Wed Nov 12 14:09:28 2025 +0700

            Feat: add basic CRUD therapy protocol

        commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 11 15:57:54 2025 +0700

            Fix: Prepare protokol terapi API Integration

        commit 4674090566727cebd947e50e2c06c44e8c7afa7e
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:33:22 2025 +0700

            Fix: hotfix style add protokol terapi

        commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:17:14 2025 +0700

            Fix: Typo drpodown-action-p in protokol-terapi

        commit e21d30eacf1a08118e289d4bb64889e708d5023a
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:14:33 2025 +0700

            Fix: add diagnose & procedure dialog picker in add protokol terapi

        commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 4 10:21:24 2025 +0700

            Fix: Add Schema therapy protocol rehab medik

        commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 4 09:30:55 2025 +0700

            Fix: refactor Actions Btn ba-dr-su

        commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 3 17:08:20 2025 +0700

            Feat: UI protokol terapi in Rehab medik

        commit 63010f69ff30532bb8ac91443112f31d4942b221
        Author: Khafid Prayoga <khafidp@pm.me>
        Date:   Tue Oct 21 09:54:13 2025 +0700

            wip: list protokol terapi

        commit 44eedc298680a5255fee0ee8feee3e24beda93dd
        Author: Khafid Prayoga <khafidp@pm.me>
        Date:   Mon Oct 20 12:54:01 2025 +0700

            feat(therapy-protocol): init form entry

            feat(therapy-protocol): init page routes

            wip: init entry form

            wip: form entry protokol terapi

            todo: table procedure, and diagnose  picker

            wip: schema form new entry

            todo: picker/modal yang relateds ke form entry

commit b2a6cdee0b7beb775830c4dceb69ff12c01d3ca4
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 26 14:44:57 2025 +0700

    Squashed commit of the following:

    commit 39b778ab78
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 25 14:39:41 2025 +0700

        Feat: UI Laporan Operasi

    commit f6ae61849d
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 25 14:09:25 2025 +0700

        Squashed commit of the following:

        commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Thu Nov 20 16:14:03 2025 +0700

            Feat: UI control letter history

        commit f11f97f936447bdb225918abb43313f8db540d67
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Thu Nov 20 15:18:25 2025 +0700

            Squashed commit of the following:

            commit dab6adc4a9
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Tue Nov 18 11:19:48 2025 +0700

                Fix: add role authorization in Resume

            commit c28fc8f7aa
            Merge: 7ed1cc8 bcfb4c1
            Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
            Date:   Tue Nov 18 09:02:16 2025 +0700

                Merge branch 'dev' into feat/resume-81

            commit 7ed1cc83bf
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Mon Nov 17 15:04:01 2025 +0700

                Feat: add doc preview in Resume List

            commit bcfb4c1456
            Merge: 1cbde57 975c87d
            Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
            Date:   Mon Nov 17 11:15:14 2025 +0700

                Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

                Feat: Integration Rehab Medik - Surat Kontrol

            commit 15ab43c1b1
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Mon Nov 17 10:38:21 2025 +0700

                Feat: add verification capthca and form adjustment

            commit 53bd8e7f6e
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Fri Nov 7 08:55:23 2025 +0700

                Fix: refactor rehab medik - Resume UI

            commit fc308809b8
            Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
            Date:   Wed Oct 29 14:57:19 2025 +0700

                Feat: add UI Rehab Medik > Proses > Resume

            commit 9b383a5437
            Merge: a4dc7d7 831749a
            Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
            Date:   Wed Oct 29 13:32:47 2025 +0700

                Merge pull request #139 from dikstub-rssa/dev

                Update branch feat/resume-81

        commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 18 11:20:51 2025 +0700

            Fix: Typo in Control Letter

        commit 808e91527cf95de2a47387bb792a3af2e16d907b
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 18 10:59:50 2025 +0700

            Fix: add role authorization in Control Letter

    commit 1dd8e8e7b3
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 25 09:23:57 2025 +0700

        Squashed commit of the following:

        commit 72ce2260c50597f782f07d29db3985607ecc2f34
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 17 15:19:36 2025 +0700

            Feat: add doc preview in Therpay protocol List

        commit 7032cd2409a660d40899ffd421137e4158cfde4a
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Wed Nov 12 15:34:30 2025 +0700

            Fix: prepare API integration protokol terapi verification

        commit dbf6f78d00afc818baf2b34d128ee2153814cc88
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Wed Nov 12 14:09:28 2025 +0700

            Feat: add basic CRUD therapy protocol

        commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 11 15:57:54 2025 +0700

            Fix: Prepare protokol terapi API Integration

        commit 4674090566727cebd947e50e2c06c44e8c7afa7e
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:33:22 2025 +0700

            Fix: hotfix style add protokol terapi

        commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:17:14 2025 +0700

            Fix: Typo drpodown-action-p in protokol-terapi

        commit e21d30eacf1a08118e289d4bb64889e708d5023a
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 10 15:14:33 2025 +0700

            Fix: add diagnose & procedure dialog picker in add protokol terapi

        commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 4 10:21:24 2025 +0700

            Fix: Add Schema therapy protocol rehab medik

        commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Tue Nov 4 09:30:55 2025 +0700

            Fix: refactor Actions Btn ba-dr-su

        commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
        Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
        Date:   Mon Nov 3 17:08:20 2025 +0700

            Feat: UI protokol terapi in Rehab medik

        commit 63010f69ff30532bb8ac91443112f31d4942b221
        Author: Khafid Prayoga <khafidp@pm.me>
        Date:   Tue Oct 21 09:54:13 2025 +0700

            wip: list protokol terapi

        commit 44eedc298680a5255fee0ee8feee3e24beda93dd
        Author: Khafid Prayoga <khafidp@pm.me>
        Date:   Mon Oct 20 12:54:01 2025 +0700

            feat(therapy-protocol): init form entry

            feat(therapy-protocol): init page routes

            wip: init entry form

            wip: form entry protokol terapi

            todo: table procedure, and diagnose  picker

            wip: schema form new entry

            todo: picker/modal yang relateds ke form entry

    commit 3e5c03148b
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 25 09:17:11 2025 +0700

        progress
2025-12-04 09:46:11 +07:00
Abizrh fae522f5e3 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/rm-rajal-183 2025-12-03 22:30:39 +07:00
Abizrh 15db237f30 feat (summary-medic): implement summary medic entry form 2025-12-03 22:26:32 +07:00
Khafid Prayoga c0c80c7bff style(detail-row): adjust grid layout and spacing for better responsiveness
Update the grid template columns and gap spacing to improve mobile and desktop layouts. Hide colon separator on mobile views to reduce clutter.
2025-12-03 21:09:17 +07:00
Abizrh 572b1642af Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/kajian-awal-keperawatan-184 2025-12-03 20:44:18 +07:00
Khafid Prayoga 6d8b4e9a78 fix warning
submenu.vue:39 [Vue warn]: Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with markRaw or using shallowRef instead of ref.
2025-12-03 17:57:56 +07:00
Khafid Prayoga da26790513 mv treatment-report to action-report based on encounter menu id list 2025-12-03 17:49:48 +07:00
Khafid Prayoga 8fa1f61b19 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/laporan-tindakan-185 2025-12-03 17:16:32 +07:00
riefive acc45b205f fix: upload sep + sipp file 2025-12-03 16:25:15 +07:00
riefive f94e8df57f fix: reload doctor fetch 2025-12-03 15:54:57 +07:00
riefive 5059f24c60 fix: reload object encounter 2025-12-03 15:37:39 +07:00
riefive 3b6a6e5bf1 fix: page checker to avoid error 2025-12-03 15:26:00 +07:00
riefive e1c4c585b1 fix: page encounter main 2025-12-03 15:06:58 +07:00
munawwirul_jamal 0a0fb73483 feat/procedure-room-order: flow for procedure room 2025-12-03 14:33:13 +07:00
riefive 5cb03ea3d7 fix: update page ambulatory, inpatient + emergency 2025-12-03 14:20:18 +07:00
riefive 04efd22f85 fix: update link item filtering logic for registration group 2025-12-03 13:51:13 +07:00
riefive 75e0e8ac18 feat: enhance filter navigation with role-based visibility and active position handling 2025-12-03 13:36:14 +07:00
riefive 4c670701c4 feat: enhance filter navigation with role-based visibility and active position handling 2025-12-03 13:22:25 +07:00
riefive 6a27c1f346 feat: update payment handling and remove unused code in entry forms 2025-12-03 12:05:23 +07:00
Andrian Roshandy 7b4b4eecf9 Merge branch 'feat/mcu-order' into feat/procedure-room-order 2025-12-03 10:18:15 +07:00
Andrian Roshandy 782034c2b1 Merge branch 'dev' into feat/micro-lab-order-50 2025-12-03 10:16:45 +07:00
Andrian Roshandy e8d654b4ae Merge branch 'dev' into feat/ap-lab-order-52 2025-12-03 10:11:47 +07:00
riefive 42bb79554f fix: solve entry on encounter 2025-12-03 10:06:51 +07:00
Andrian Roshandy 9f72e1df47 Merge branch 'dev' into feat/procedure-room-order 2025-12-03 10:02:57 +07:00
riefive e8c15e189f fix: solve edit + add pages 2025-12-03 09:55:35 +07:00
munawwirul_jamal b80ee5a55e dev: hotfix, my-ui/combobox v-model 2025-12-03 09:46:40 +07:00
Andrian Roshandy fa0ae9866e feat/procedure-room-order: wip #3 2025-12-03 09:44:33 +07:00
Andrian Roshandy ce93f996d9 feat/procedure-room-order: wip #2
+ procedure-room
2025-12-03 09:43:36 +07:00
Andrian Roshandy 4444e87cb3 feat/procedure-room-order: wip #1
+ material-package
+ material-package-item
2025-12-03 09:42:31 +07:00
riefive f0d3de26be feat: remove file type validation from file upload component 2025-12-03 09:41:41 +07:00
Abizrh 3038448f4a feat (initial-nursing): add initial nursing entry form and preview 2025-12-02 16:48:24 +07:00
riefive f95d8f3009 feat: modify file upload component 2025-12-02 16:08:41 +07:00
Khafid Prayoga 723b439c97 bind to new encounter init 2025-12-02 16:06:26 +07:00
Khafid Prayoga a011e3a2eb Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/laporan-tindakan-185 2025-12-02 15:06:56 +07:00
munawwirul_jamal 9a8ee9d90f dev: hotfix, consultation 2025-12-02 14:50:10 +07:00
Abizrh ff4aefa593 🐛 fix (api): correct type code parameter name in api requests 2025-12-02 14:46:53 +07:00
Abizrh a1a2a92ebd ⚙️ chore (initial-nursing): remove unused functions and adjust type code 2025-12-02 14:45:51 +07:00
Abizrh b24a33c802 🐛 fix (initial-nursing): correct typecode value 2025-12-02 14:27:41 +07:00
riefive ebac2244ac feat: enhance error handling in CRUD operations and adjust encounterId type in SEP creation 2025-12-02 14:24:08 +07:00
Khafid Prayoga 45e3d60618 done delete row on list laporan tindakan 2025-12-02 14:23:22 +07:00
Khafid Prayoga dfc25f0048 feat(encounter): laporan tindakan cru
feat(treatment-report): add view mode for treatment reports

- Introduce new View component for displaying treatment report details
- Extend useQueryCRUDMode to support 'view' mode
- Update List component to handle view actions
- Implement navigation between list, entry and view modes

refactor(treatment-report): improve navigation flow between views

- Add fromView flag to track navigation origin
- Implement smart back navigation (goBack) that returns to previous view
- Update edit handlers to pass navigation context
- Clean up unused back handlers in form component

cleanup

set responsive details
2025-12-02 13:48:43 +07:00
riefive 64efb0dee7 feat: update role permissions and clean up access checks in encounter edit and add pages 2025-12-02 13:41:27 +07:00
riefive 38ecb5fa08 feat: add encounterId handling in SEP entry and update validation logic in integration schema 2025-12-02 13:31:17 +07:00
riefive 32a6c27375 feat: remove unused VClaim configuration and clean up validation logic in integration schema 2025-12-02 13:11:49 +07:00
riefive a058fd6659 feat: add new encounter entry form and handler with VClaim SEP and member validation. 2025-12-02 12:50:14 +07:00
riefive 4df67ed979 feat: Implement encounter add/edit forms for inpatient, outpatient, and emergency features, and remove outdated documentation. 2025-12-02 12:09:48 +07:00
Khafid Prayoga be1b86141f impl: form entry with source of add,edit
feat(treatment-report): add history list component and dialog integration

- Create new list-history.vue component for displaying treatment report history
- Add configuration file for history list data table
- Integrate history list into main treatment report view with dialog
- Replace simple filter button with action buttons including history view

feat(treatment-report): implement crud navigation and form actions

- Add new entry component for treatment report with list and form views
- Implement back navigation using useQueryCRUDMode
- Replace form submit button with action footer component
- Update dropdown action component for detail view

refactor(treatment-report): restructure form components and update mode handling

- Rename 'add.vue' to 'form.vue' for better clarity
- Update form mode types from 'create|update|view' to 'add|edit|view'
- Implement proper reactive state handling for form modes
- Add new form component with loading states and mock data
- Enhance list component with action handlers and navigation

fix default calculated hours
2025-12-02 11:49:40 +07:00
riefive cfecd72d49 feat: implement encounter edit mode with GET/PATCH endpoints and comprehensive testing documentation 2025-12-02 11:38:16 +07:00
riefive 748004e0a1 feat: add support for removing old SEP data and refactor remove function 2025-12-02 11:20:04 +07:00
riefive 297e16eaee feat: update API paths to v1 and remove old path references for consistency 2025-12-02 11:06:48 +07:00
munawwirul_jamal e6ac4bbadd dev: hotfix, blocking error on build removal 2025-12-02 10:34:30 +07:00
Andsky 7319cbcfd0 Merge pull request #194 from dikstub-rssa/feat/page-cleaning
Feat/page cleaning
2025-12-02 10:02:35 +07:00
Andrian Roshandy 88a2dc5aba feat/page-cleaning: adjust add encounter 2025-12-02 10:02:00 +07:00
Andrian Roshandy d221203bd5 Merge branch 'dev' into feat/page-cleaning 2025-12-02 03:23:36 +07:00
Andrian Roshandy 5659aba875 feat/page-cleaning: adjust encounter quick info 2025-12-02 03:23:26 +07:00
Abizrh e5a227989b feat (encounter): add initial nursing study feature 2025-12-01 22:53:42 +07:00
Munawwirul Jamal fe47ba51b2 Merge pull request #181 from dikstub-rssa/feat/kfr-kemoterapi-174
Feat/kfr kemoterapi 174
2025-12-01 20:48:45 +07:00
Munawwirul Jamal 37c70608ac Merge pull request #186 from dikstub-rssa/feat/laporan-operasi-182
Feat/laporan operasi
2025-12-01 20:48:12 +07:00
munawwirul_jamal d34557522b Merge branch 'dev' into feat/kfr-kemoterapi-174 2025-12-01 20:47:45 +07:00
munawwirul_jamal 44e349a2f5 Merge branch 'dev' into feat/laporan-operasi-182 2025-12-01 20:46:27 +07:00
Andrian Roshandy b172125d99 Merge branch 'feat/page-cleaning' into feat/mcu-order 2025-12-01 20:41:58 +07:00
Munawwirul Jamal 8024389ff5 Merge pull request #191 from dikstub-rssa/feat/page-cleaning
Feat/page cleaning
2025-12-01 20:14:22 +07:00
riefive be3f5c9d40 feat: debug xfetch 2025-12-01 15:09:28 +07:00
riefive 4dc7aa2fe9 feat: add diagnosis name handling and update SEP title in integration pages 2025-12-01 14:53:09 +07:00
riefive 8a954a8c00 feat: update API paths to v1 and add fallback to old paths for backward compatibility 2025-12-01 13:53:25 +07:00
riefive 6d3dc0e426 feat: enhance SEP entry form and detail handling with conditional disabling and improved data filtering 2025-12-01 12:02:26 +07:00
riefive 4536ca2ef9 feat: enhance SEP entry form and handling with new readonly mode and improved data fetching 2025-12-01 11:42:32 +07:00
Andrian Roshandy 9b7a7192a0 feat/page-cleaning: menu adjustment 2025-12-01 08:31:14 +07:00
Andrian Roshandy bae0a222b8 feat/micro-lab-order-50: adjust for antibiotic 2025-12-01 01:51:04 +07:00
Andrian Roshandy 1ee0f39e7d feat/micro-lab-order-50: added antibiotic 2025-12-01 01:50:39 +07:00
Andrian Roshandy 95e27a8b6f feat/micro-lab-order-50: wip 2025-11-30 13:00:04 +07:00
Andrian Roshandy a002ef6c6e Merge branch 'feat/mcu-order' into feat/micro-lab-order-50 2025-11-30 12:50:31 +07:00
Andrian Roshandy b2d3c14ddc feat/mcu-order: adjustment 2025-11-30 12:49:38 +07:00
Andrian Roshandy fb2f01bd36 Merge branch 'feat/mcu-order' into feat/micro-lab-order-50 2025-11-30 12:43:11 +07:00
Andrian Roshandy 5c92f8b946 feat/mcu-order: added the components 2025-11-30 12:30:50 +07:00
Andrian Roshandy 9a481fec14 Merge branch 'dev' into feat/micro-lab-order-50 2025-11-28 21:18:10 +07:00
Andrian Roshandy 4251239f7c feat/micro-lab-order-50: wip 2025-11-28 21:17:18 +07:00
Munawwirul Jamal 78fc28922d Merge pull request #191 from dikstub-rssa/feat/page-cleaning
Feat/page cleaning
2025-11-28 19:20:57 +07:00
Andrian Roshandy afb3738e5b feat/page-cleaning: finished 2025-11-28 18:39:46 +07:00
Khafid Prayoga 1b4d3af909 done: edit, detail report
fix: parsing err datetime on edit mode

todo: koordinasi dengan tim be terkait datetime iso

impl edit form

feat(treatment-report): add detail view and preview components

- Implement treatment report detail page with RBAC checks
- Create preview component with accordion layout
- Extract mock data to shared sample file
- Enhance procedure picker with preview mode
- Update schema to make procedure id required
- Improve detail row styling and layout

feat(treatment-report): update page titles and enhance preview component

- Update page titles for treatment report pages to be more descriptive
- Implement date formatting in treatment report preview
- Add router navigation for edit functionality
- Enhance preview component with detailed operation data sections
- Add support for tissue notes display in preview
2025-11-28 16:53:55 +07:00
riefive 6c8ebb8192 feat: enhance SEP entry form 2025-11-28 16:35:40 +07:00
riefive bd30d19beb feat: enhance SEP handling by adding source path to navigation and initializing form data 2025-11-28 16:28:10 +07:00
riefive 973931ec2f feat: enhance SEP entry and detail handling with new link mode and save functionality 2025-11-28 16:02:11 +07:00
riefive e9ed2a3715 feat: implement SEP search functionality and enhance history management 2025-11-28 14:48:29 +07:00
Khafid Prayoga ccefb69f0c adjustment on picker dialog procedure
refactor(procedure-picker): improve component structure and add readonly support

- Reorganize imports and add type imports section
- Replace custom Button with ButtonAction component
- Add readonly state handling for fields and buttons
- Improve type safety with ProcedureSrc type casting

feat(usePaginatedList): add syncToUrl option for nested components

Add syncToUrl option to disable URL synchronization when used in modals or nested components to prevent overriding parent page URL. Default remains true for backward compatibility.

Also includes minor formatting improvements in procedure-list.vue template.
2025-11-28 12:45:45 +07:00
riefive a2e8f04304 feat: add validation for SEP number and member input in encounter entry 2025-11-28 12:45:41 +07:00
riefive 7605493d09 feat: create integration-sep file 2025-11-27 16:09:37 +07:00
Abizrh 409e8fd1ed feat (encounter): add summary medic feature 2025-11-27 15:49:31 +07:00
munawwirul_jamal 851f71ae66 feat/page-cleaning: adjust role var naming 2025-11-27 14:42:32 +07:00
Khafid Prayoga 1fbd20d9ae done: form entry laporan tindakan
todo: manage state readonly ke komponen app prosedur

pager-nav: scroll x on small screen

form-schema: catatan opsional

feat(treatment-report): add datetime validation and duration calculation
- Change operator team fields from IDs to names in schema and form
- Modify blood input schema to use type-based amount selection
- Update form fields to match new schema structure
- Simplify radio bloods component logic and styling
- Add validation for ISO datetime format in treatment report schema
- Implement duration calculation for operation and anesthesia times
- Update input fields to use datetime-local type
- Add disabled state for radio bloods component
2025-11-27 14:39:29 +07:00
riefive d8f2e30bd6 feat: add member validation and enhance encounter entry form with additional fields 2025-11-27 14:19:58 +07:00
riefive b38487e41f feat: enhance encounter entry forms with mode handling and default date setup 2025-11-27 11:46:06 +07:00
munawwirul_jamal 9755686e14 Merge branch 'dev' into feat/page-cleaning 2025-11-27 04:51:14 +07:00
munawwirul_jamal 3bb10bc556 merge dev 2025-11-27 04:50:07 +07:00
munawwirul_jamal c4ab408a09 dev: hotfixes
+ show main menu on enc list
+ content-header default exporter
2025-11-27 04:48:45 +07:00
munawwirul_jamal 4d16ce0f25 Merge branch 'dev' into feat/page-cleaning 2025-11-27 04:40:35 +07:00
munawwirul_jamal b2305f2279 dev: hotfix, show main menu on enc list 2025-11-27 04:25:33 +07:00
Munawwirul Jamal b3e3b76cb9 Merge pull request #166 from dikstub-rssa/feat/encounter-adjustment-163
Feat: Encounter Adjustment
2025-11-26 18:14:23 +07:00
munawwirul_jamal 9bc999afc7 feat/encounter-adjustment: adjust menu 2025-11-26 18:06:32 +07:00
riefive 3a4822d5cf feat: refactor payload structure in encounter entry handler for improved clarity and functionality 2025-11-26 15:54:46 +07:00
riefive a780818412 feat: add vclaimReference handling and update payload structure in encounter entry 2025-11-26 15:40:21 +07:00
riefive fe3630fcee feat: refactor encounter entry form and handler 2025-11-26 14:52:42 +07:00
Khafid Prayoga 71c2833bf2 impl: blood calc, prosedur picker
wip:
radio bloods(note. masih crash dan modelValue ga bisa liftup)

Picker Prosedur
- cherry-pick
- done:  integrasi prosedur w/ therapy-protocol-
2025-11-26 14:33:14 +07:00
riefive e9ce5927bd feat: recreated index SEP page with updated permissions and structure 2025-11-26 13:59:34 +07:00
Khafid Prayoga 5ad286a44e wip: add form data pelaksanaan operasi
todo: blood input section

* ui: patch focus ring state
* layouts-pages: fix width layout calculation

feat(treatment-report): add fill-notes component and validation messages
- Add new FillNotes component for tissue notes input with dynamic fields
- Update schema validation with required error messages for operation and specimen fields
- Adjust form layout to include new FillNotes component and improve field organization

cherry-pick arrangement procedure from feat/protokol-terapi-116
2025-11-26 13:05:44 +07:00
riefive 9a539a60f9 feat: update BPJS links to use 'bpjs-vclaim' and add new vclaim pages 2025-11-26 13:02:43 +07:00
riefive 9c53899842 feat: update chemotherapy encounter pages to use 'chemo' subclass code + simplify sep 2025-11-26 12:58:34 +07:00
riefive 13b7d6b411 feat: add chemo page 2025-11-26 11:18:01 +07:00
Andrian Roshandy 1690e849e9 Merge branch 'dev' into feat/page-cleaning 2025-11-26 09:04:11 +07:00
Munawwirul Jamal f81ef2b1b0 Merge pull request #188 from dikstub-rssa/feat/things-munaja
feat/things-munaja: adjust content header
2025-11-26 08:54:57 +07:00
munawwirul_jamal 7347e127a4 feat/things-munaja: adjust content header 2025-11-26 08:54:06 +07:00
Andrian Roshandy b5228aa6fd Merge branch 'dev' into feat/page-cleaning 2025-11-26 08:24:02 +07:00
Munawwirul Jamal eacb0534ef Merge pull request #187 from dikstub-rssa/feat/things-munaja
feat/things-munaja: added content header
2025-11-26 08:19:02 +07:00
munawwirul_jamal 4bf69eb46c feat/things-munaja: added content header 2025-11-26 08:16:58 +07:00
Khafid Prayoga f5704536d1 feat(treatment-report): add error handling and toast notification
Implement error handling in treatment report form submission and display toast notifications when errors occur. The form now emits error events and prevents default form submission behavior.
2025-11-25 21:12:18 +07:00
Khafid Prayoga 6a29fdfd50 refactor(glob:form): update form handling and type definitions
- Migrate from Form component to vee-validate useForm
- Update combobox component to support number values
- Modify base model ID type for mock data
- Improve type safety in treatment report schema
- Add proper form submission handling
2025-11-25 20:46:53 +07:00
Khafid Prayoga 3fbcdf9e2a refactor(treatment-report): restructure treatment report form and components
- Replace SelectDPJP with SelectDoctor component
- Update schema naming from ActionReport to TreatmentReport
- Add doctor selection functionality to treatment report form
- Improve form layout and field organization
- Update related model imports to use single quotes
- add fragment for better form grouping
- cherry pick form field from another branch
2025-11-25 17:15:00 +07:00
Khafid Prayoga 7ee6f40196 init: treatment report
feat(treatment-report): add treatment report component with sample data

Implement new treatment report feature including list view component, sample data, and configuration. The component supports pagination, filtering by date range, and search functionality. Also integrates with encounter process and home views.

wip: init form and schema
2025-11-25 15:27:50 +07:00
riefive b01510707c feat: add patient info components and update navigation for encounter details 2025-11-25 14:59:59 +07:00
hasyim_kai 39b778ab78 Feat: UI Laporan Operasi 2025-11-25 14:39:41 +07:00
hasyim_kai f6ae61849d Squashed commit of the following:
commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 20 16:14:03 2025 +0700

    Feat: UI control letter history

commit f11f97f936447bdb225918abb43313f8db540d67
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 20 15:18:25 2025 +0700

    Squashed commit of the following:

    commit dab6adc4a9
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 18 11:19:48 2025 +0700

        Fix: add role authorization in Resume

    commit c28fc8f7aa
    Merge: 7ed1cc8 bcfb4c1
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Tue Nov 18 09:02:16 2025 +0700

        Merge branch 'dev' into feat/resume-81

    commit 7ed1cc83bf
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 17 15:04:01 2025 +0700

        Feat: add doc preview in Resume List

    commit bcfb4c1456
    Merge: 1cbde57 975c87d
    Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
    Date:   Mon Nov 17 11:15:14 2025 +0700

        Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

        Feat: Integration Rehab Medik - Surat Kontrol

    commit 15ab43c1b1
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 17 10:38:21 2025 +0700

        Feat: add verification capthca and form adjustment

    commit 53bd8e7f6e
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Fri Nov 7 08:55:23 2025 +0700

        Fix: refactor rehab medik - Resume UI

    commit fc308809b8
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Wed Oct 29 14:57:19 2025 +0700

        Feat: add UI Rehab Medik > Proses > Resume

    commit 9b383a5437
    Merge: a4dc7d7 831749a
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Wed Oct 29 13:32:47 2025 +0700

        Merge pull request #139 from dikstub-rssa/dev

        Update branch feat/resume-81

commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 11:20:51 2025 +0700

    Fix: Typo in Control Letter

commit 808e91527cf95de2a47387bb792a3af2e16d907b
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 10:59:50 2025 +0700

    Fix: add role authorization in Control Letter
2025-11-25 14:09:25 +07:00
riefive 59a84d948a fix: solve injection component error 2025-11-25 14:04:40 +07:00
riefive d0ca67386f refactor: change props to encounter data 2025-11-25 13:15:37 +07:00
riefive 0ceaa9c222 refactor: change page component on emergency, inpatient, outpatient 2025-11-25 12:38:58 +07:00
kusuma_ari 616c15c87c update BF 2025-11-25 11:06:51 +07:00
kusuma_ari 6ee33d2525 update BF login sso outsite login 2025-11-25 10:27:13 +07:00
kusuma_ari 5d54157391 Merge branch 'dev' into integrasi_sso 2025-11-25 09:42:31 +07:00
hasyim_kai 1dd8e8e7b3 Squashed commit of the following:
commit 72ce2260c50597f782f07d29db3985607ecc2f34
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 15:19:36 2025 +0700

    Feat: add doc preview in Therpay protocol List

commit 7032cd2409a660d40899ffd421137e4158cfde4a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 15:34:30 2025 +0700

    Fix: prepare API integration protokol terapi verification

commit dbf6f78d00afc818baf2b34d128ee2153814cc88
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 14:09:28 2025 +0700

    Feat: add basic CRUD therapy protocol

commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 15:57:54 2025 +0700

    Fix: Prepare protokol terapi API Integration

commit 4674090566727cebd947e50e2c06c44e8c7afa7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:33:22 2025 +0700

    Fix: hotfix style add protokol terapi

commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:17:14 2025 +0700

    Fix: Typo drpodown-action-p in protokol-terapi

commit e21d30eacf1a08118e289d4bb64889e708d5023a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:14:33 2025 +0700

    Fix: add diagnose & procedure dialog picker in add protokol terapi

commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 10:21:24 2025 +0700

    Fix: Add Schema therapy protocol rehab medik

commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 09:30:55 2025 +0700

    Fix: refactor Actions Btn ba-dr-su

commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 3 17:08:20 2025 +0700

    Feat: UI protokol terapi in Rehab medik

commit 63010f69ff30532bb8ac91443112f31d4942b221
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Tue Oct 21 09:54:13 2025 +0700

    wip: list protokol terapi

commit 44eedc298680a5255fee0ee8feee3e24beda93dd
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Mon Oct 20 12:54:01 2025 +0700

    feat(therapy-protocol): init form entry

    feat(therapy-protocol): init page routes

    wip: init entry form

    wip: form entry protokol terapi

    todo: table procedure, and diagnose  picker

    wip: schema form new entry

    todo: picker/modal yang relateds ke form entry
2025-11-25 09:23:57 +07:00
hasyim_kai 3e5c03148b progress 2025-11-25 09:17:11 +07:00
Khafid Prayoga e6795a02ef fix switch toggle on wording data parents 2025-11-24 16:59:50 +07:00
Khafid Prayoga 32654b0b11 wip: ui fix layout
fix(patient-form): add error handling in patient submission and simplify family form

- Wrap patient submission in try-catch to show appropriate error messages
- Simplify family parents form by removing conditional rendering and adding disabled state
- Update form fields to use consistent labels and disable when not sharing family data

feat(family-form): improve family data form handling and UI

- Add edit mode detection to conditionally set default family data
- Restructure form fields display based on shareFamilyData value
- Show disabled placeholder fields when family data is not shared
2025-11-24 16:37:33 +07:00
riefive 3a2ad11a0e feat: enhance encounter process with user data logging and component integration 2025-11-24 14:47:00 +07:00
Khafid Prayoga f3474eb0b5 refactor(patient-contact): improve contact form components and validation
- Remove hardcoded contact limit and use prop instead
- Add ButtonAction component to form exports
- Enhance contact schema validation with better error messages
- Refactor contact type select component to use doc-entry components
- Improve form layout and consistency between contact and relative forms
2025-11-24 14:08:01 +07:00
riefive 1053d794a0 fix: update sub-class-code binding in encounter components and log user data 2025-11-24 14:05:19 +07:00
hasyim_kai 4a465f3992 progress 2025-11-24 13:40:22 +07:00
Khafid Prayoga 96a7ada059 feat(form): add validation error styling to form components
Add error state handling and styling for form inputs and select components using vee-validate. Also adjust delete button alignment in person-relative form.
2025-11-24 13:34:49 +07:00
Khafid Prayoga 6c63d15b9e refactor(person-relative): update contact form fields and conditional label
- Change form field names from medicines to contacts
- Update default contact object structure
- Make label in select-relations conditional
- Improve delete button title with contact number
2025-11-24 13:02:56 +07:00
munawwirul_jamal c91713fce2 Merge branch 'dev' into feat/page-cleaning 2025-11-24 12:52:58 +07:00
Khafid Prayoga 044de2d965 refactor(form): migrate form components to use doc-entry pattern
- Replace FieldGroup/Field/Label with DE.Cell/DE.Field/DE.Label components
- Add ButtonAction component with preset styling for common form actions
- Simplify form layouts using doc-entry grid system
- Add support for disabled/readonly states in form fields
2025-11-24 12:45:03 +07:00
Khafid Prayoga 857478cd65 refactor(patient/fields): deduplicate religion options using Map
Use Map to ensure unique values in religion options array to prevent duplicate entries in the dropdown
2025-11-24 12:12:42 +07:00
Khafid Prayoga bc517c15d9 feat(person-relative): restructure contact relation components
Move select-relations component to fields directory and update imports
Add new table-head component for consistent styling
2025-11-24 12:08:57 +07:00
Khafid Prayoga cd57dc6243 refactor(patient): rename entry component to add and clean up form error props
Remove FormErrors type imports and error props from all form components
Move content from entry.vue to add.vue with updated title styling
2025-11-24 12:03:53 +07:00
riefive 3d8378deac Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/encounter-adjustment-163 2025-11-24 12:00:01 +07:00
Munawwirul Jamal a2323e0827 Merge pull request #165 from dikstub-rssa/feat/cprj-146
 feat (cprj): implement cprj (patient note) functionality
2025-11-24 11:57:53 +07:00
Munawwirul Jamal 9b09627cd9 Merge pull request #179 from dikstub-rssa/feat/uploads-85-after-reset
Fix: debug Uplaod Doc List table
2025-11-24 11:57:20 +07:00
riefive 4ac3e3c579 refactor: clean up role permission handling in encounter process pages 2025-11-24 10:53:11 +07:00
Muhammad Hasyim Chaidir Ali 7811f051a5 Merge branch 'dev' into feat/kfr-kemoterapi-174 2025-11-24 10:25:15 +07:00
hasyim_kai f060ed33d2 Feat: UI KFR 2025-11-24 10:21:20 +07:00
riefive 125a2dff1a fix: solve conflict after merge page-cleaning 2025-11-24 10:14:02 +07:00
Andrian Roshandy c9bac11029 feat/page-cleaning: adjust content/encounter consumers 2025-11-24 09:02:18 +07:00
Andrian Roshandy 001a36233c feat/page-cleaning: moved human-src/specialist-intern/* to human-src/intern 2025-11-24 08:28:36 +07:00
Andrian Roshandy 401b46ade2 feat/page-cleaning: moved service-src to infra-src 2025-11-24 08:17:07 +07:00
Andrian Roshandy 9368530ee3 feat/page-cleaning: dropped unnecessary pages 2025-11-24 08:16:40 +07:00
Andrian Roshandy 33abc5b50c feat/page-claning: moved some consts from lib 2025-11-24 08:11:50 +07:00
Munawwirul Jamal 8aac6c4318 Merge pull request #180 from dikstub-rssa/feat/adjustment-org-to-the-be-153
Fix: typo in Unit Position Model
2025-11-23 16:36:41 +07:00
munawwirul_jamal cf5789549e feat/mcu: improved wip 2025-11-23 15:56:31 +07:00
Khafid Prayoga 5c60e4e570 mv common to fields 2025-11-21 17:14:04 +07:00
Khafid Prayoga f33e9a0f9a adjust common fields import 2025-11-21 17:03:10 +07:00
Khafid Prayoga 89bc67680e mv my-ui form 2025-11-21 17:00:33 +07:00
Khafid Prayoga 6c37f226e9 mv person common to fields 2025-11-21 16:56:14 +07:00
Khafid Prayoga 2138ffcb9d rename common to fields on patient 2025-11-21 16:53:51 +07:00
Abizrh 6e42bb5283 feat (soapi): display encounter class code in soapi list 2025-11-21 16:00:52 +07:00
kusuma_ari 87121d00fd update merge dan set cookies 2025-11-21 15:57:09 +07:00
Abizrh 4f8407f978 🐛 fix (cprj): fix encounter-id prop for getlist function 2025-11-21 15:43:27 +07:00
Abizrh 2da2961f03 enhance (soapi): adjust type-code 2025-11-21 15:34:48 +07:00
kusuma_ari fd8385650c Merge branch 'dev' into integrasi_sso 2025-11-21 15:33:12 +07:00
kusuma_ari 674a4be4ce update 2025-11-21 15:19:22 +07:00
riefive 5adf9d3c75 feat(encounter): update sub menu 2025-11-21 15:00:33 +07:00
kusuma_ari f40d25042b update bug fix 2025-11-21 15:00:24 +07:00
riefive 8eeeba26b2 feat(encounter): update missing emergency process 2025-11-21 14:47:01 +07:00
riefive 9429ad4d46 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/encounter-adjustment-163 2025-11-21 14:44:33 +07:00
riefive 87a125f5c7 feat(encounter): update encounter pages 2025-11-21 14:44:29 +07:00
kusuma_ari 9ce103f38e update 2025-11-21 14:43:08 +07:00
riefive 534880eb2e fix: update component process 2025-11-21 14:40:13 +07:00
Abizrh 671390f159 ⚠️ refactor (cprj): rename cprj list to soapi list 2025-11-21 14:29:57 +07:00
Abizrh f2b274c6bf Merge branch 'feat/cprj-146' of https://github.com/dikstub-rssa/simrs-fe into feat/cprj-146 2025-11-21 14:26:52 +07:00
Abizrh 02ea844f8e Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/cprj-146 2025-11-21 14:14:53 +07:00
Abizrh bc55c490ba Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/cprj-146 2025-11-21 14:14:17 +07:00
hasyim_kai f818c726c8 Fix: typo in Unit Position Model 2025-11-21 14:09:54 +07:00
Munawwirul Jamal f70f9f24d8 Merge pull request #178 from dikstub-rssa/feat/adjustment-org-to-the-be-153
Feat/adjustment org to the be 153
2025-11-21 14:06:13 +07:00
munawwirul_jamal e4b0b3437f dev: hotfix, rigid consts + minor data table 2025-11-21 14:02:13 +07:00
riefive 9eea12a503 feat(encounter): update encounter init 2025-11-21 13:48:13 +07:00
hasyim_kai 29db4c8cf1 Fix: debug for PR to "dev" 2025-11-21 10:35:47 +07:00
riefive a1eb419588 fix: resolve conflict 2025-11-21 10:33:45 +07:00
hasyim_kai c4eaa72aec Fix: debug Uplaod Doc List table 2025-11-21 10:20:23 +07:00
hasyim_kai 7bd743ce35 Merge branch 'dev' into feat/adjustment-org-to-the-be-153 2025-11-21 10:11:39 +07:00
hasyim_kai e47401577f Squashed commit of the following:
commit b9f910cc5f
Merge: ba3e70c 064f341
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 08:55:22 2025 +0700

    Merge pull request #177 from dikstub-rssa/feat/prescription

    Feat/prescription

commit 064f34177c
Merge: 88d89f2 ba3e70c
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 21 08:52:24 2025 +0700

    Merge branch 'dev' into feat/prescription

commit ba3e70c854
Merge: d75b32c d6c4a1e
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 08:46:33 2025 +0700

    Merge pull request #176 from dikstub-rssa/feat/device-order

    Feat/device order

commit d6c4a1ebb4
Merge: a8a71d8 d75b32c
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 21 08:42:09 2025 +0700

    Merge branch 'dev' into feat/device-order

commit d75b32cc08
Merge: 79d8bfa 2e48f11
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 08:38:51 2025 +0700

    Merge pull request #172 from dikstub-rssa/feat/uploads-85-after-reset

    Fix: debug Uplaod Doc after reset

commit 2e48f11f9c
Merge: c3f1f99 79d8bfa
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 21 08:38:37 2025 +0700

    Merge branch 'dev' into feat/uploads-85-after-reset

commit 79d8bfa782
Merge: f375724 cffaa2b
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 08:19:55 2025 +0700

    Merge pull request #170 from dikstub-rssa/feat/medicine-form-167

    Feat/medicine form 167

commit cffaa2b855
Merge: ac5fd26 f375724
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 21 08:17:43 2025 +0700

    Merge branch 'dev' into feat/medicine-form-167

commit f375724be1
Merge: 2c07b9c 6780a65
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 07:43:22 2025 +0700

    Merge pull request #152 from dikstub-rssa/feat/general-consent-145

     feat (encounter): implement general consent feature

commit 6780a65f04
Merge: 1f3ca6f 2c07b9c
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 21 07:43:08 2025 +0700

    Merge branch 'dev' into feat/general-consent-145

commit 2c07b9cde8
Merge: baf6ab1 dab6adc
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Fri Nov 21 07:31:13 2025 +0700

    Merge pull request #148 from dikstub-rssa/feat/resume-81

    Feat: UI Rehab Medik - Resume

commit 1f3ca6f19b
Author: Abizrh <abizarah857@gmail.com>
Date:   Thu Nov 20 13:43:19 2025 +0700

    🐛 fix (general-consent): fix type error when create encounter

commit b379a9bc94
Author: Abizrh <abizarah857@gmail.com>
Date:   Thu Nov 20 13:04:27 2025 +0700

     feat (general-consent): display file url in diagnose dialog

commit f1307980ff
Author: Abizrh <abizarah857@gmail.com>
Date:   Thu Nov 20 00:35:25 2025 +0700

    🐛 fix (general-consent): fix mapping data from api

commit 0d821cbe31
Author: Abizrh <abizarah857@gmail.com>
Date:   Thu Nov 20 00:13:44 2025 +0700

    ⚙️ chore (general-consent): adjust general consent list and form component

commit cf4f5574d3
Author: Abizrh <abizarah857@gmail.com>
Date:   Wed Nov 19 23:46:21 2025 +0700

     feat (generate-file): add generate file schema

commit 6e34e175e7
Merge: e62ee1b baf6ab1
Author: Abizrh <abizarah857@gmail.com>
Date:   Wed Nov 19 23:12:38 2025 +0700

    Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/general-consent-145

commit a8a71d8978
Merge: bfbe72b baf6ab1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:22:03 2025 +0700

    Merge branch 'dev' into feat/device-order

commit 88d89f2a2d
Merge: 512f8e8 391469e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:21:36 2025 +0700

    Merge branch 'feat/prescription' of github.com:dikstub-rssa/simrs-fe into feat/prescription

commit 512f8e8c91
Merge: f41a51d baf6ab1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 22:19:45 2025 +0700

    Merge branch 'dev' into feat/prescription

commit baf6ab1fda
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Nov 19 20:09:19 2025 +0700

    dev: hotfix, pubs
    + my-ui/confirmation/confirmation noTrueSlot from record-confirmation
    + my-ui/confirmation/confirmation additional message
    + my-ui/confirmation/record-confirmation  supplies noTrueSlot
    + my-ui/modal/modal text size
    + my-ui/doc-entry semicolon export

commit f41a51d9d0
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 10:58:26 2025 +0700

    feat/prescription: cleaning

commit c3f1f997b3
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 19 10:22:12 2025 +0700

    Fix: refactor upload API url

commit bfbe72be94
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 19 03:36:24 2025 +0700

    feat/device-order: final

commit 0a68dbf3a6
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 15:31:04 2025 +0700

    Fix: debug after reset

commit ac5fd26399
Merge: 94e4ead bcfb4c1
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Tue Nov 18 13:33:09 2025 +0700

    Merge branch 'dev' into feat/medicine-form-167

commit 94e4ead8fe
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 13:13:52 2025 +0700

    Fix: debug updaate medicine master

commit c98018bb4e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 12:58:58 2025 +0700

    Squashed commit of the following:

    commit bcfb4c1456
    Merge: 1cbde57 975c87d
    Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
    Date:   Mon Nov 17 11:15:14 2025 +0700

        Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

        Feat: Integration Rehab Medik - Surat Kontrol

    commit 975c87d99a
    Merge: f582090 1cbde57
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Nov 17 10:58:10 2025 +0700

        Merge branch 'dev' into feat/surat-kontrol-135

    commit f582090d18
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Thu Nov 13 11:56:21 2025 +0700

        Fix: Refactor surat kontrol

    commit a14c4a5d3c
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 11 14:21:58 2025 +0700

        Fix: Refactor Surat Kontrol CRUD {id} to {code}

    commit 24313adef6
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Fri Nov 7 10:35:46 2025 +0700

        Fix: debug back btn in add, edit, detail content page

    commit 59b44b5729
    Merge: 99a61a0 db15ec9
    Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
    Date:   Fri Nov 7 09:11:10 2025 +0700

        Merge branch 'dev' into feat/surat-kontrol-135

    commit 99a61a0bf2
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Thu Nov 6 08:06:01 2025 +0700

        Feat: add right & bottom label in input base component

    commit db48919325
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Wed Nov 5 13:53:43 2025 +0700

        Feat: add banner in List if requirement not met

    commit bd57250f7e
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Wed Nov 5 13:26:48 2025 +0700

        Fix: refactor getDetail url param

    commit a361922e32
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Wed Nov 5 13:19:07 2025 +0700

        Feat: Add & integrate add, edit, detail page

    commit 331f4a6b20
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Tue Nov 4 16:56:08 2025 +0700

        Feat: Integrate Control Letter

    commit 2275f4dc99
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Oct 27 14:01:58 2025 +0700

        Feat: add UI BPJS > Surat Kontrol

    commit 89e0e7a2c8
    Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
    Date:   Mon Oct 27 10:21:59 2025 +0700

        Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses

commit dab6adc4a9
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 18 11:19:48 2025 +0700

    Fix: add role authorization in Resume

commit c28fc8f7aa
Merge: 7ed1cc8 bcfb4c1
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Tue Nov 18 09:02:16 2025 +0700

    Merge branch 'dev' into feat/resume-81

commit 7ed1cc83bf
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 15:04:01 2025 +0700

    Feat: add doc preview in Resume List

commit bcfb4c1456
Merge: 1cbde57 975c87d
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Mon Nov 17 11:15:14 2025 +0700

    Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

    Feat: Integration Rehab Medik - Surat Kontrol

commit 975c87d99a
Merge: f582090 1cbde57
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 10:58:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit 15ab43c1b1
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 10:38:21 2025 +0700

    Feat: add verification capthca and form adjustment

commit dc0bcc3606
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 09:26:29 2025 +0700

    Feat: integration Medicine Form

commit dfb2c305ca
Merge: 1cbde57 d0aa69d
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 09:18:47 2025 +0700

    Merge remote-tracking branch 'origin/feat/uploads-85' into feat/medicine-form-167

commit 468c6a164f
Merge: 7253272 1cbde57
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Nov 17 07:12:38 2025 +0700

    Merge branch 'dev' into feat/device-order

commit 20649c5917
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 16 19:52:22 2025 +0700

    feat/prescription: finalize #1
    + integration
    + non mix entry

commit 0da8701a6c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 16 08:15:19 2025 +0700

    feat/prescription: added group and flat list

commit 7253272681
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 16 11:21:02 2025 +0700

    feat/device-order: adjustment wip

commit 391469e633
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 16 08:15:19 2025 +0700

    feat/prescription: added group and flat list

commit b1dbae7928
Merge: b847886 1cbde57
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Nov 16 08:14:09 2025 +0700

    Merge branch 'dev' into feat/prescription

commit 1cbde57cf9
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Nov 16 00:44:53 2025 +0700

    dev: hotfix

    comps/pub/myui
    + updated data/types
    + updated data-table
    + updated nav-header
    + added toggle

    comps/pub/ui
    + updated button
    + updated toggle

commit b847886601
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 22:40:23 2025 +0700

    feat/prescription: more adjustment

commit 83cdd070ed
Merge: 224bc7c ccabe01
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:15:18 2025 +0700

    Merge branch 'dev' into feat/prescription

commit 224bc7cd61
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Nov 15 20:13:15 2025 +0700

    feat/prescription: integrated non-mix

commit ccabe0177b
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 14 16:39:21 2025 +0700

    dev: hotfix, added combobox objectsToItems

commit d0aa69d9a1
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 14 17:12:17 2025 +0700

    Fix: debug table typo Uplaod Doc

commit bb0017ffcb
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 14 15:47:11 2025 +0700

    Fix: refactor constList Uplaod Doc

commit 60c13649d9
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 14 14:55:32 2025 +0700

    Fix: debug Uplaod Doc

commit 1d03258f44
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 14 14:08:47 2025 +0700

    Fix: Typo uplaod doc type

commit 56109564cb
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 13 16:16:26 2025 +0700

    Feat: API Integration supporting doc upload

commit cbe1883c9f
Merge: 7f3fe81 0d97ba9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Nov 13 13:42:44 2025 +0700

    Merge branch 'dev' into feat/device-order-x

commit f582090d18
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 13 11:56:21 2025 +0700

    Fix: Refactor surat kontrol

commit 0d97ba9d25
Merge: 02508b2 bb8df3d
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Nov 13 11:52:23 2025 +0700

    Merge pull request #164 from dikstub-rssa/feeat/pendaftaran-kemoterapi-141

    Feat: Pendaftaran Kemoterapi

commit 16626a2fee
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Nov 13 11:49:28 2025 +0700

    feat/prescription: added submit

commit bb8df3d53a
Merge: a592a0b 02508b2
Author: riefive <rie.five@gmail.com>
Date:   Thu Nov 13 10:14:17 2025 +0700

    Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feeat/pendaftaran-kemoterapi-141

commit 02508b22de
Merge: 6b933de 295bb81
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Nov 13 07:56:31 2025 +0700

    Merge pull request #162 from dikstub-rssa/fe-prescription-56

    Fe prescription 56

commit 295bb8120f
Merge: 8462eba 6b933de
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Nov 13 07:45:48 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 6b933de212
Merge: f2e98fc 471c846
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:13:11 2025 +0700

    Merge pull request #156 from dikstub-rssa/feat/cp-lab-order-48

    Feat/cp lab order 48

commit f2e98fc732
Merge: 2e899c6 9b281de
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:12:40 2025 +0700

    Merge pull request #158 from dikstub-rssa/feat/menu-structure

    Feat/menu structure

commit 471c846045
Merge: f676c8a 2e899c6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 07:11:46 2025 +0700

    Merge branch 'dev' into feat/cp-lab-order-48

commit 9b281de00b
Merge: 80383a5 2e899c6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 07:08:29 2025 +0700

    Merge branch 'dev' into feat/menu-structure

commit 2e899c6022
Merge: 8effefb b7d4fcf
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:04:47 2025 +0700

    Merge pull request #157 from dikstub-rssa/feat/encounter-status-107

    Feat/encounter status 107

commit 8effefb5ad
Merge: 3f63f19 8e7f9b1
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:04:17 2025 +0700

    Merge pull request #155 from dikstub-rssa/feat/radiology-order-54

    Feat/radiology order 54

commit 80383a5f0a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:52:31 2025 +0700

    feat/menu-structure: adjust page rehab

commit 93c9e74d08
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:52:14 2025 +0700

    feat/menu-structure: adjust menu items all roles

commit f0d2bc4de1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:51:37 2025 +0700

    feat/menu-structure: update access control

commit 02c14089f1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:51:03 2025 +0700

    feat/menu-structure: update role switcher

commit a14c4a5d3c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 14:21:58 2025 +0700

    Fix: Refactor Surat Kontrol CRUD {id} to {code}

commit e9e0e21d1b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Nov 11 12:30:43 2025 +0700

    feat/menu-structure: wip

commit e62ee1b37e
Author: Abizrh <abizarah857@gmail.com>
Date:   Tue Nov 11 08:57:49 2025 +0700

     feat (encounter): implement general consent feature

commit 8e7f9b19e3
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Nov 10 23:17:49 2025 +0700

    feat/radiology-order-54: upgraded mcu-order/list

commit b2a512314b
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 7 14:02:54 2025 +0700

    Feat: UI uplaod doc pendukung

commit 24313adef6
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 7 10:35:46 2025 +0700

    Fix: debug back btn in add, edit, detail content page

commit 59b44b5729
Merge: 99a61a0 db15ec9
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Fri Nov 7 09:11:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit 53bd8e7f6e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 7 08:55:23 2025 +0700

    Fix: refactor rehab medik - Resume UI

commit 99a61a0bf2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 6 08:06:01 2025 +0700

    Feat: add right & bottom label in input base component

commit 8462eba94b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 5 21:23:04 2025 +0700

    feat/prescription-56: wip

commit db48919325
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:53:43 2025 +0700

    Feat: add banner in List if requirement not met

commit bd57250f7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:26:48 2025 +0700

    Fix: refactor getDetail url param

commit a361922e32
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:19:07 2025 +0700

    Feat: Add & integrate add, edit, detail page

commit 331f4a6b20
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 16:56:08 2025 +0700

    Feat: Integrate Control Letter

commit a592a0be36
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 15:15:38 2025 +0700

    feat(cemo): add home encounter

commit be0a761170
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 13:23:52 2025 +0700

    feat(cemo): change flow admin

commit 64fe2524fb
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 12:02:31 2025 +0700

    feat(cemo): enhance admin mode functionality and update series handling

commit fb7731188d
Author: riefive <rie.five@gmail.com>
Date:   Mon Nov 3 15:52:35 2025 +0700

    feat(cemo): add mode adm + series

commit 89b2fb9cd9
Author: riefive <rie.five@gmail.com>
Date:   Mon Nov 3 15:03:56 2025 +0700

    feat(chemo): add page process and modify components

commit f676c8a4b9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Nov 3 08:11:02 2025 +0700

    feat/cp-lab-order-48: wip

commit 69ffe6bd49
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:39 2025 +0700

    feat/radiology-order: added the page

commit d1369d513b
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 16:08:22 2025 +0700

    feat(cemo): add list verification

commit a9ab75fd98
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:05 2025 +0700

    feat/readiology-order: added mcu

commit 71d68e5a0e
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 14:49:21 2025 +0700

    feat(cemo): add dialog verification and list register

commit f8d906b6c2
Merge: 66872c9 5f9e441
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:48:21 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 40d78a999a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:05 2025 +0700

    feat/readiology-order: added mcu

commit b3502df0f8
Merge: 831749a 7119f67
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 13:12:11 2025 +0700

    Merge branch 'feat/fe-kemoterapi' into feeat/pendaftaran-kemoterapi-141

commit 7119f67402
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 13:09:59 2025 +0700

    feat(cemo): modify schema

commit 66872c95f8
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Oct 31 07:56:36 2025 +0700

    feat/prescription-56: wip

commit 45cc019ec1
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 30 15:43:50 2025 +0700

    feat(cemo): layouting form

commit e866c0cf2a
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 30 14:41:52 2025 +0700

    feat(cemo): layouting protocol

commit dc4edc1dc0
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 29 15:58:52 2025 +0700

    feat(cemo): show list cemo

commit 3234853473
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 29 15:39:55 2025 +0700

    feat(cemo): add list of cemo

commit fc308809b8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Oct 29 14:57:19 2025 +0700

    Feat: add UI Rehab Medik > Proses > Resume

commit 9b383a5437
Merge: a4dc7d7 831749a
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Wed Oct 29 13:32:47 2025 +0700

    Merge pull request #139 from dikstub-rssa/dev

    Update branch feat/resume-81

commit 67ee129f4b
Merge: 9919b4b 9e82d17
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 28 16:20:17 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 2275f4dc99
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 14:01:58 2025 +0700

    Feat: add UI BPJS > Surat Kontrol

commit 89e0e7a2c8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 10:21:59 2025 +0700

    Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses

commit 9919b4b896
Merge: 19a43bd e93e72a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 15:36:29 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit b7d4fcf939
Merge: eaac4aa e93e72a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 15:31:30 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 19a43bd291
Merge: d90e400 3558672
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 05:02:57 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit eaac4aab85
Merge: 72e8d43 3558672
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 05:01:45 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit d90e40043c
Merge: 0c9f9de b90f0c1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 24 12:40:59 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 0c9f9deb7e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 24 12:38:02 2025 +0700

    fe-prescription-56: wip

commit 729474a2a0
Merge: 7159bd6 ddd35d6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Oct 23 14:16:52 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 7f3fe813c5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Oct 23 14:09:01 2025 +0700

    feat/device-order: wip

commit 72e8d431d6
Merge: 3f77d92 2a9b78a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Oct 22 07:17:41 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 1b1fac7695
Merge: 0b44206 27ab7c2
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Oct 22 04:28:31 2025 +0700

    Merge branch 'dev' into feat/device-order-x

commit 3f77d927b6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 21 22:48:34 2025 +0700

    feat/encounter: done

commit d8c861d60c
Merge: 6bdee66 27ab7c2
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 21 00:15:01 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 0b4420620d
Merge: 39af605 02b2b76
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 20 13:35:00 2025 +0700

    Merge branch 'dev' into feat/device-order-58

commit 02b2b7657c
Merge: 7ddb14a e1942d1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 20 11:24:54 2025 +0700

    Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev

commit 39af6052e7
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 20 11:22:54 2025 +0700

    feat/device-order-58: wip

commit 7ddb14accc
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Oct 13 16:38:23 2025 +0700

    dev: hotfix, added userQueryCRUD

commit 7159bd6566
Merge: ccc9b0b be5768b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 07:45:15 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ccc9b0bda3
Merge: f94ccd7 cad7ac6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:29:03 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 6bdee66cc6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:26:30 2025 +0700

    feat/encounter: wip

commit f7c53fc4e5
Merge: a7c7ef6 cad7ac6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:24:45 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit a7c7ef6dd8
Merge: 89b051b f52e516
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 13:27:06 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 89b051b883
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 13:18:46 2025 +0700

    feat/encounter-status-107: wip

commit 743c38804a
Merge: d6d60e3 f7b66d2
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:53:03 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit d6d60e38d0
Merge: 9530cdd 18e00bf
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:49:49 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 18e00bf89a
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Oct 12 11:40:53 2025 +0700

    dev: hotfix, text-size standardization

commit 9530cdd4f9
Merge: 0820cb6 0d1e469
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:41:49 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 0d1e469ece
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Oct 12 11:40:53 2025 +0700

    dev: hotfix, text-size standardization

commit 0820cb653c
Merge: fff1ce0 867c1b4
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 11 00:38:10 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit fff1ce0eb7
Merge: 1a3edd5 3a4b2aa
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 11 00:35:16 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 3a4b2aa6fb
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sat Oct 11 00:25:44 2025 +0700

    dev: hotfix, moved combobox and datepicker

commit 1a3edd5a1e
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Oct 10 23:58:44 2025 +0700

    dev: hotfix, moved combobox and datepicker

commit f94ccd707b
Merge: 0647675 51d1221
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Oct 8 08:00:01 2025 +0700

    Merge branch 'feat/consultation-82' into fe-prescription-56

commit 06476756fb
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Oct 8 07:58:48 2025 +0700

    fe-prescription-56: wip

commit fdbcfed87f
Merge: 4da896a bd66a88
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 7 03:10:19 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit bd66a8887d
Merge: 19e00fa ba61d05
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Tue Oct 7 03:07:46 2025 +0700

    Merge pull request #103 from dikstub-rssa/feat/fe-integrasi-org-src-72

    Feat - Integrasi Org Src

commit ba61d05257
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 12:42:08 2025 +0700

    fix: adjustment division app + flow

commit 8601d4a4fd
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:07:05 2025 +0700

    fix: remove shared handlers

commit fff5f2c11d
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:06:29 2025 +0700

    fix: update content list of specialist, subspecialist, etc

commit 301cb82803
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:00:14 2025 +0700

    fix: update list medicine

commit 3003ec9d80
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:45:15 2025 +0700

    fix: update list division + equipment

commit d1bcd6e66c
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:38:10 2025 +0700

    fix: update some service

commit 78ae8a8aa0
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:26:25 2025 +0700

    fix: medicine method and group

commit 8eaf95dd3e
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:20:05 2025 +0700

    fix: update service for unit and uom

commit 58c0dde377
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:14:51 2025 +0700

    fix: update handler for unit and uom

commit fe23c75aca
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:09:24 2025 +0700

    fix: update some service and handlers

commit 4da896a242
Merge: 285c3ee 19e00fa
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 09:55:24 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ecdc5d80d9
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:51:31 2025 +0700

    fix: update device service and handler

commit 45ea70d415
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:44:48 2025 +0700

    fix: update crud base

commit 51ddb9d8b5
Merge: 42a54bb 19e00fa
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:40:22 2025 +0700

    fix: resolve conflict

commit 19e00fa143
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Oct 6 08:26:08 2025 +0700

    dev: hotfix, moved encounter to pub/component

commit 285c3ee4e5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 07:56:29 2025 +0700

    Merged Stash

commit 421159971e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:41:21 2025 +0700

    feat/prescription-56: wip

commit 3a45de413d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:31:08 2025 +0700

    Merge from Stash

commit e959c3ae61
Merge: 32c69af ad4695c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:21:06 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ad4695c867
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Oct 6 04:18:55 2025 +0700

    dev: hotfix, encounter content back nav

commit 42a54bbb3b
Merge: a7cbbee 55559a4
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 09:07:03 2025 +0700

    fix: solve conflict after pull

commit a7cbbeeda9
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 09:05:28 2025 +0700

    feat(division): fixing logic treeview

commit 71e0615ee1
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 08:49:38 2025 +0700

    feat(division): restructure division parent

commit f02903e756
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 15:00:10 2025 +0700

    feat(division): change parent id to number before integrate

commit 2e8667a780
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 14:47:02 2025 +0700

    feat(division): parent id to default null

commit e65e562690
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 12:45:05 2025 +0700

    feat(division): change form attribute

commit 9407501c49
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 11:03:19 2025 +0700

    feat(division): change compoent combobox to tree select

commit c5ba07a226
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 10:54:35 2025 +0700

    feat(division): create tree item converter for division

commit 8e7ce771b0
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 15:31:27 2025 +0700

    test: call division position

commit 7edab33427
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:49:55 2025 +0700

    fix: handler reset state

commit ce59eac86c
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:37:17 2025 +0700

    fix: list unit

commit 39d2869ffb
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:34:19 2025 +0700

    fix: list with params error

commit 3c046a4d82
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:12:10 2025 +0700

    fix: list integration

commit 6feb480a51
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:16:23 2025 +0700

    fix: change get encounter class to constants

commit d7d984810e
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:00:05 2025 +0700

    remove previous list + form from any features

commit a6377ef943
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:24:54 2025 +0700

    fix: includes for unit

commit b00b9b198e
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:17:31 2025 +0700

    fix: includes for medicine list

commit 4908f16770
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:56:11 2025 +0700

    fix: search on list file

commit 41405ae113
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:36:48 2025 +0700

    fix: resolve list organization source

commit 6b69e48bd6
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:05:36 2025 +0700

    feat(installation): add encounter list

commit 59847dce34
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:01:24 2025 +0700

    chore: add shared handlers

commit e78342829e
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 12:38:04 2025 +0700

    feat(installation): integrate api installation

commit 55559a4683
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 15:00:10 2025 +0700

    feat(division): change parent id to number before integrate

commit 2d8c751788
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 14:47:02 2025 +0700

    feat(division): parent id to default null

commit f374f9ef5b
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 12:45:05 2025 +0700

    feat(division): change form attribute

commit 1837afce6c
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 11:03:19 2025 +0700

    feat(division): change compoent combobox to tree select

commit 539a1cefb0
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 10:54:35 2025 +0700

    feat(division): create tree item converter for division

commit 32c69af4e1
Merge: 0752855 10bbee9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 3 06:05:35 2025 +0700

    Merge branch 'feat/layout-cleaning' into fe-prescription-56

commit 757b8c0444
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 15:31:27 2025 +0700

    test: call division position

commit 378e6773b8
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:49:55 2025 +0700

    fix: handler reset state

commit 0e115eed5e
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:37:17 2025 +0700

    fix: list unit

commit d544d031c3
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:34:19 2025 +0700

    fix: list with params error

commit 693d8225bf
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:12:10 2025 +0700

    fix: list integration

commit 0752855808
Merge: f83dbfe c0557cc
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Oct 2 12:46:54 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit fc3bda14f4
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:16:23 2025 +0700

    fix: change get encounter class to constants

commit 9603915fd7
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:00:05 2025 +0700

    remove previous list + form from any features

commit 546423bdfb
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:24:54 2025 +0700

    fix: includes for unit

commit db48233f6c
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:17:31 2025 +0700

    fix: includes for medicine list

commit 54a5aaa78f
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:56:11 2025 +0700

    fix: search on list file

commit cc41118570
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:36:48 2025 +0700

    fix: resolve list organization source

commit 6a7a9cda80
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:05:36 2025 +0700

    feat(installation): add encounter list

commit c96d738379
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:01:24 2025 +0700

    chore: add shared handlers

commit a48f375018
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 12:38:04 2025 +0700

    feat(installation): integrate api installation

commit f83dbfeae3
Merge: ba77ed1 f29eb38
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Oct 1 04:02:05 2025 +0700

    Merge branch 'feat/layout-cleaning' into fe-prescription-56

commit ba77ed1bb5
Merge: 4fbd8ee 97d36f1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Sep 29 08:27:01 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 4fbd8ee757
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Sep 28 07:10:32 2025 +0700

    feat/prescription-56: merapikan models
2025-11-21 10:04:48 +07:00
Munawwirul Jamal b9f910cc5f Merge pull request #177 from dikstub-rssa/feat/prescription
Feat/prescription
2025-11-21 08:55:22 +07:00
munawwirul_jamal 064f34177c Merge branch 'dev' into feat/prescription 2025-11-21 08:52:24 +07:00
Munawwirul Jamal ba3e70c854 Merge pull request #176 from dikstub-rssa/feat/device-order
Feat/device order
2025-11-21 08:46:33 +07:00
munawwirul_jamal d6c4a1ebb4 Merge branch 'dev' into feat/device-order 2025-11-21 08:42:09 +07:00
Munawwirul Jamal d75b32cc08 Merge pull request #172 from dikstub-rssa/feat/uploads-85-after-reset
Fix: debug Uplaod Doc after reset
2025-11-21 08:38:51 +07:00
munawwirul_jamal 2e48f11f9c Merge branch 'dev' into feat/uploads-85-after-reset 2025-11-21 08:38:37 +07:00
Munawwirul Jamal 79d8bfa782 Merge pull request #170 from dikstub-rssa/feat/medicine-form-167
Feat/medicine form 167
2025-11-21 08:19:55 +07:00
munawwirul_jamal cffaa2b855 Merge branch 'dev' into feat/medicine-form-167 2025-11-21 08:17:43 +07:00
munawwirul_jamal 3f44463db8 Merge branch 'dev' into feat/cprj-146 2025-11-21 07:50:08 +07:00
Munawwirul Jamal f375724be1 Merge pull request #152 from dikstub-rssa/feat/general-consent-145
 feat (encounter): implement general consent feature
2025-11-21 07:43:22 +07:00
munawwirul_jamal 6780a65f04 Merge branch 'dev' into feat/general-consent-145 2025-11-21 07:43:08 +07:00
Munawwirul Jamal 2c07b9cde8 Merge pull request #148 from dikstub-rssa/feat/resume-81
Feat: UI Rehab Medik - Resume
2025-11-21 07:31:13 +07:00
kusuma_ari bbdaeee304 update 2025-11-20 16:25:35 +07:00
riefive eb20d3a930 fix: add encounter init 2025-11-20 15:20:34 +07:00
riefive 53a7d41373 fix: refactor page process on outpatient, inpatient, emergency 2025-11-20 14:54:17 +07:00
riefive bbdc79f7f5 fix: refactor process content 2025-11-20 14:16:21 +07:00
Abizrh 1f3ca6f19b 🐛 fix (general-consent): fix type error when create encounter 2025-11-20 13:43:19 +07:00
Abizrh b379a9bc94 feat (general-consent): display file url in diagnose dialog 2025-11-20 13:04:27 +07:00
hasyim_kai 399c3cbaee Squashed commit of the following:
commit 72ce2260c50597f782f07d29db3985607ecc2f34
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 15:19:36 2025 +0700

    Feat: add doc preview in Therpay protocol List

commit 7032cd2409a660d40899ffd421137e4158cfde4a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 15:34:30 2025 +0700

    Fix: prepare API integration protokol terapi verification

commit dbf6f78d00afc818baf2b34d128ee2153814cc88
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 14:09:28 2025 +0700

    Feat: add basic CRUD therapy protocol

commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 15:57:54 2025 +0700

    Fix: Prepare protokol terapi API Integration

commit 4674090566727cebd947e50e2c06c44e8c7afa7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:33:22 2025 +0700

    Fix: hotfix style add protokol terapi

commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:17:14 2025 +0700

    Fix: Typo drpodown-action-p in protokol-terapi

commit e21d30eacf1a08118e289d4bb64889e708d5023a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:14:33 2025 +0700

    Fix: add diagnose & procedure dialog picker in add protokol terapi

commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 10:21:24 2025 +0700

    Fix: Add Schema therapy protocol rehab medik

commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 09:30:55 2025 +0700

    Fix: refactor Actions Btn ba-dr-su

commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 3 17:08:20 2025 +0700

    Feat: UI protokol terapi in Rehab medik

commit 63010f69ff30532bb8ac91443112f31d4942b221
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Tue Oct 21 09:54:13 2025 +0700

    wip: list protokol terapi

commit 44eedc298680a5255fee0ee8feee3e24beda93dd
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Mon Oct 20 12:54:01 2025 +0700

    feat(therapy-protocol): init form entry

    feat(therapy-protocol): init page routes

    wip: init entry form

    wip: form entry protokol terapi

    todo: table procedure, and diagnose  picker

    wip: schema form new entry

    todo: picker/modal yang relateds ke form entry
2025-11-20 11:19:03 +07:00
Abizrh f1307980ff 🐛 fix (general-consent): fix mapping data from api 2025-11-20 00:35:25 +07:00
Abizrh 0d821cbe31 ⚙️ chore (general-consent): adjust general consent list and form component 2025-11-20 00:13:44 +07:00
Abizrh cf4f5574d3 feat (generate-file): add generate file schema 2025-11-19 23:46:21 +07:00
Abizrh 6e34e175e7 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/general-consent-145 2025-11-19 23:12:38 +07:00
Andrian Roshandy a40eac35f8 Merge branch 'dev' into feat/radiology-order-54 2025-11-19 22:23:18 +07:00
Andrian Roshandy a8a71d8978 Merge branch 'dev' into feat/device-order 2025-11-19 22:22:03 +07:00
Andrian Roshandy 88d89f2a2d Merge branch 'feat/prescription' of github.com:dikstub-rssa/simrs-fe into feat/prescription 2025-11-19 22:21:36 +07:00
Andrian Roshandy 512f8e8c91 Merge branch 'dev' into feat/prescription 2025-11-19 22:19:45 +07:00
munawwirul_jamal baf6ab1fda dev: hotfix, pubs
+ my-ui/confirmation/confirmation noTrueSlot from record-confirmation
+ my-ui/confirmation/confirmation additional message
+ my-ui/confirmation/record-confirmation  supplies noTrueSlot
+ my-ui/modal/modal text size
+ my-ui/doc-entry semicolon export
2025-11-19 20:09:19 +07:00
kusuma_ari 5166229d06 update env 2025-11-19 16:55:48 +07:00
kusuma_ari 98910563b8 update integrasi 2025-11-19 16:47:23 +07:00
riefive 3c546e19a6 fix: change items encounter for roles 2025-11-19 14:59:49 +07:00
riefive 3ac1ec3a02 fix: improve role classification logic and future scalability 2025-11-19 14:50:35 +07:00
riefive 3e4931cda2 fix: remove sep 2025-11-19 12:38:41 +07:00
riefive 05cc75fa95 refactor: move list sep logic to handlers 2025-11-19 12:23:03 +07:00
Andrian Roshandy f41a51d9d0 feat/prescription: cleaning 2025-11-19 10:58:26 +07:00
hasyim_kai c3f1f997b3 Fix: refactor upload API url 2025-11-19 10:22:12 +07:00
Andrian Roshandy bfbe72be94 feat/device-order: final 2025-11-19 03:47:06 +07:00
riefive 34d4b85e16 fix: adds Excel export support for SEP list data 2025-11-18 16:08:57 +07:00
hasyim_kai 0a68dbf3a6 Fix: debug after reset 2025-11-18 15:31:04 +07:00
riefive 97b6d8fccd fix: improves SEP removal error handling and removes dummy response 2025-11-18 15:13:48 +07:00
riefive 96c561e86e fix: add function download 2025-11-18 14:54:00 +07:00
riefive 2ccdb14999 fix: add comments 2025-11-18 14:43:14 +07:00
riefive 7606afdac4 fix: add download csv function 2025-11-18 14:41:37 +07:00
riefive a6ff2499ee fix: adjust payload sep 2025-11-18 14:32:25 +07:00
Muhammad Hasyim Chaidir Ali ac5fd26399 Merge branch 'dev' into feat/medicine-form-167 2025-11-18 13:33:09 +07:00
hasyim_kai 9d93afed2b Squashed commit of the following:
commit bcfb4c1456
Merge: 1cbde57 975c87d
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Mon Nov 17 11:15:14 2025 +0700

    Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

    Feat: Integration Rehab Medik - Surat Kontrol

commit 975c87d99a
Merge: f582090 1cbde57
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 10:58:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit 1cbde57cf9
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Nov 16 00:44:53 2025 +0700

    dev: hotfix

    comps/pub/myui
    + updated data/types
    + updated data-table
    + updated nav-header
    + added toggle

    comps/pub/ui
    + updated button
    + updated toggle

commit ccabe0177b
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Nov 14 16:39:21 2025 +0700

    dev: hotfix, added combobox objectsToItems

commit f582090d18
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 13 11:56:21 2025 +0700

    Fix: Refactor surat kontrol

commit 0d97ba9d25
Merge: 02508b2 bb8df3d
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Nov 13 11:52:23 2025 +0700

    Merge pull request #164 from dikstub-rssa/feeat/pendaftaran-kemoterapi-141

    Feat: Pendaftaran Kemoterapi

commit bb8df3d53a
Merge: a592a0b 02508b2
Author: riefive <rie.five@gmail.com>
Date:   Thu Nov 13 10:14:17 2025 +0700

    Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feeat/pendaftaran-kemoterapi-141

commit 02508b22de
Merge: 6b933de 295bb81
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Thu Nov 13 07:56:31 2025 +0700

    Merge pull request #162 from dikstub-rssa/fe-prescription-56

    Fe prescription 56

commit 295bb8120f
Merge: 8462eba 6b933de
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Thu Nov 13 07:45:48 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 6b933de212
Merge: f2e98fc 471c846
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:13:11 2025 +0700

    Merge pull request #156 from dikstub-rssa/feat/cp-lab-order-48

    Feat/cp lab order 48

commit f2e98fc732
Merge: 2e899c6 9b281de
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:12:40 2025 +0700

    Merge pull request #158 from dikstub-rssa/feat/menu-structure

    Feat/menu structure

commit 471c846045
Merge: f676c8a 2e899c6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 07:11:46 2025 +0700

    Merge branch 'dev' into feat/cp-lab-order-48

commit 9b281de00b
Merge: 80383a5 2e899c6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 07:08:29 2025 +0700

    Merge branch 'dev' into feat/menu-structure

commit 2e899c6022
Merge: 8effefb b7d4fcf
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:04:47 2025 +0700

    Merge pull request #157 from dikstub-rssa/feat/encounter-status-107

    Feat/encounter status 107

commit 8effefb5ad
Merge: 3f63f19 8e7f9b1
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Wed Nov 12 07:04:17 2025 +0700

    Merge pull request #155 from dikstub-rssa/feat/radiology-order-54

    Feat/radiology order 54

commit 80383a5f0a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:52:31 2025 +0700

    feat/menu-structure: adjust page rehab

commit 93c9e74d08
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:52:14 2025 +0700

    feat/menu-structure: adjust menu items all roles

commit f0d2bc4de1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:51:37 2025 +0700

    feat/menu-structure: update access control

commit 02c14089f1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 12 06:51:03 2025 +0700

    feat/menu-structure: update role switcher

commit a14c4a5d3c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 14:21:58 2025 +0700

    Fix: Refactor Surat Kontrol CRUD {id} to {code}

commit e9e0e21d1b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Nov 11 12:30:43 2025 +0700

    feat/menu-structure: wip

commit 8e7f9b19e3
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Nov 10 23:17:49 2025 +0700

    feat/radiology-order-54: upgraded mcu-order/list

commit 24313adef6
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 7 10:35:46 2025 +0700

    Fix: debug back btn in add, edit, detail content page

commit 59b44b5729
Merge: 99a61a0 db15ec9
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Fri Nov 7 09:11:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit 99a61a0bf2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 6 08:06:01 2025 +0700

    Feat: add right & bottom label in input base component

commit 8462eba94b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Nov 5 21:23:04 2025 +0700

    feat/prescription-56: wip

commit db48919325
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:53:43 2025 +0700

    Feat: add banner in List if requirement not met

commit bd57250f7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:26:48 2025 +0700

    Fix: refactor getDetail url param

commit a361922e32
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:19:07 2025 +0700

    Feat: Add & integrate add, edit, detail page

commit 331f4a6b20
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 16:56:08 2025 +0700

    Feat: Integrate Control Letter

commit a592a0be36
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 15:15:38 2025 +0700

    feat(cemo): add home encounter

commit be0a761170
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 13:23:52 2025 +0700

    feat(cemo): change flow admin

commit 64fe2524fb
Author: riefive <rie.five@gmail.com>
Date:   Tue Nov 4 12:02:31 2025 +0700

    feat(cemo): enhance admin mode functionality and update series handling

commit fb7731188d
Author: riefive <rie.five@gmail.com>
Date:   Mon Nov 3 15:52:35 2025 +0700

    feat(cemo): add mode adm + series

commit 89b2fb9cd9
Author: riefive <rie.five@gmail.com>
Date:   Mon Nov 3 15:03:56 2025 +0700

    feat(chemo): add page process and modify components

commit f676c8a4b9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Nov 3 08:11:02 2025 +0700

    feat/cp-lab-order-48: wip

commit 69ffe6bd49
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:39 2025 +0700

    feat/radiology-order: added the page

commit d1369d513b
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 16:08:22 2025 +0700

    feat(cemo): add list verification

commit a9ab75fd98
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:05 2025 +0700

    feat/readiology-order: added mcu

commit 71d68e5a0e
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 14:49:21 2025 +0700

    feat(cemo): add dialog verification and list register

commit f8d906b6c2
Merge: 66872c9 5f9e441
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:48:21 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 40d78a999a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 31 14:35:05 2025 +0700

    feat/readiology-order: added mcu

commit b3502df0f8
Merge: 831749a 7119f67
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 13:12:11 2025 +0700

    Merge branch 'feat/fe-kemoterapi' into feeat/pendaftaran-kemoterapi-141

commit 7119f67402
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 31 13:09:59 2025 +0700

    feat(cemo): modify schema

commit 66872c95f8
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Oct 31 07:56:36 2025 +0700

    feat/prescription-56: wip

commit 45cc019ec1
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 30 15:43:50 2025 +0700

    feat(cemo): layouting form

commit e866c0cf2a
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 30 14:41:52 2025 +0700

    feat(cemo): layouting protocol

commit dc4edc1dc0
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 29 15:58:52 2025 +0700

    feat(cemo): show list cemo

commit 3234853473
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 29 15:39:55 2025 +0700

    feat(cemo): add list of cemo

commit 67ee129f4b
Merge: 9919b4b 9e82d17
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 28 16:20:17 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 2275f4dc99
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 14:01:58 2025 +0700

    Feat: add UI BPJS > Surat Kontrol

commit 89e0e7a2c8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 10:21:59 2025 +0700

    Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses

commit 9919b4b896
Merge: 19a43bd e93e72a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 15:36:29 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit b7d4fcf939
Merge: eaac4aa e93e72a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 15:31:30 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 19a43bd291
Merge: d90e400 3558672
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 05:02:57 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit eaac4aab85
Merge: 72e8d43 3558672
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 25 05:01:45 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit d90e40043c
Merge: 0c9f9de b90f0c1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 24 12:40:59 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 0c9f9deb7e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 24 12:38:02 2025 +0700

    fe-prescription-56: wip

commit 729474a2a0
Merge: 7159bd6 ddd35d6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Oct 23 14:16:52 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 72e8d431d6
Merge: 3f77d92 2a9b78a
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Oct 22 07:17:41 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 3f77d927b6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 21 22:48:34 2025 +0700

    feat/encounter: done

commit d8c861d60c
Merge: 6bdee66 27ab7c2
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 21 00:15:01 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 7159bd6566
Merge: ccc9b0b be5768b
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 07:45:15 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ccc9b0bda3
Merge: f94ccd7 cad7ac6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:29:03 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 6bdee66cc6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:26:30 2025 +0700

    feat/encounter: wip

commit f7c53fc4e5
Merge: a7c7ef6 cad7ac6
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 13 06:24:45 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit a7c7ef6dd8
Merge: 89b051b f52e516
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 13:27:06 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 89b051b883
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 13:18:46 2025 +0700

    feat/encounter-status-107: wip

commit 743c38804a
Merge: d6d60e3 f7b66d2
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:53:03 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit d6d60e38d0
Merge: 9530cdd 18e00bf
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:49:49 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 18e00bf89a
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Oct 12 11:40:53 2025 +0700

    dev: hotfix, text-size standardization

commit 9530cdd4f9
Merge: 0820cb6 0d1e469
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Oct 12 11:41:49 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 0d1e469ece
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sun Oct 12 11:40:53 2025 +0700

    dev: hotfix, text-size standardization

commit 0820cb653c
Merge: fff1ce0 867c1b4
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 11 00:38:10 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit fff1ce0eb7
Merge: 1a3edd5 3a4b2aa
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sat Oct 11 00:35:16 2025 +0700

    Merge branch 'dev' into feat/encounter-status-107

commit 3a4b2aa6fb
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Sat Oct 11 00:25:44 2025 +0700

    dev: hotfix, moved combobox and datepicker

commit 1a3edd5a1e
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Fri Oct 10 23:58:44 2025 +0700

    dev: hotfix, moved combobox and datepicker

commit f94ccd707b
Merge: 0647675 51d1221
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Oct 8 08:00:01 2025 +0700

    Merge branch 'feat/consultation-82' into fe-prescription-56

commit 06476756fb
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Wed Oct 8 07:58:48 2025 +0700

    fe-prescription-56: wip

commit fdbcfed87f
Merge: 4da896a bd66a88
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Tue Oct 7 03:10:19 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit bd66a8887d
Merge: 19e00fa ba61d05
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Tue Oct 7 03:07:46 2025 +0700

    Merge pull request #103 from dikstub-rssa/feat/fe-integrasi-org-src-72

    Feat - Integrasi Org Src

commit ba61d05257
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 12:42:08 2025 +0700

    fix: adjustment division app + flow

commit 8601d4a4fd
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:07:05 2025 +0700

    fix: remove shared handlers

commit fff5f2c11d
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:06:29 2025 +0700

    fix: update content list of specialist, subspecialist, etc

commit 301cb82803
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 11:00:14 2025 +0700

    fix: update list medicine

commit 3003ec9d80
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:45:15 2025 +0700

    fix: update list division + equipment

commit d1bcd6e66c
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:38:10 2025 +0700

    fix: update some service

commit 78ae8a8aa0
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:26:25 2025 +0700

    fix: medicine method and group

commit 8eaf95dd3e
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:20:05 2025 +0700

    fix: update service for unit and uom

commit 58c0dde377
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:14:51 2025 +0700

    fix: update handler for unit and uom

commit fe23c75aca
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 10:09:24 2025 +0700

    fix: update some service and handlers

commit 4da896a242
Merge: 285c3ee 19e00fa
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 09:55:24 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ecdc5d80d9
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:51:31 2025 +0700

    fix: update device service and handler

commit 45ea70d415
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:44:48 2025 +0700

    fix: update crud base

commit 51ddb9d8b5
Merge: 42a54bb 19e00fa
Author: riefive <rie.five@gmail.com>
Date:   Mon Oct 6 09:40:22 2025 +0700

    fix: resolve conflict

commit 19e00fa143
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Oct 6 08:26:08 2025 +0700

    dev: hotfix, moved encounter to pub/component

commit 285c3ee4e5
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 07:56:29 2025 +0700

    Merged Stash

commit 421159971e
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:41:21 2025 +0700

    feat/prescription-56: wip

commit 3a45de413d
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:31:08 2025 +0700

    Merge from Stash

commit e959c3ae61
Merge: 32c69af ad4695c
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Oct 6 04:21:06 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit ad4695c867
Author: Munawwirul Jamal <munawwirul.jamal@gmail.com>
Date:   Mon Oct 6 04:18:55 2025 +0700

    dev: hotfix, encounter content back nav

commit 42a54bbb3b
Merge: a7cbbee 55559a4
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 09:07:03 2025 +0700

    fix: solve conflict after pull

commit a7cbbeeda9
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 09:05:28 2025 +0700

    feat(division): fixing logic treeview

commit 71e0615ee1
Author: riefive <rie.five@gmail.com>
Date:   Sat Oct 4 08:49:38 2025 +0700

    feat(division): restructure division parent

commit f02903e756
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 15:00:10 2025 +0700

    feat(division): change parent id to number before integrate

commit 2e8667a780
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 14:47:02 2025 +0700

    feat(division): parent id to default null

commit e65e562690
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 12:45:05 2025 +0700

    feat(division): change form attribute

commit 9407501c49
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 11:03:19 2025 +0700

    feat(division): change compoent combobox to tree select

commit c5ba07a226
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 10:54:35 2025 +0700

    feat(division): create tree item converter for division

commit 8e7ce771b0
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 15:31:27 2025 +0700

    test: call division position

commit 7edab33427
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:49:55 2025 +0700

    fix: handler reset state

commit ce59eac86c
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:37:17 2025 +0700

    fix: list unit

commit 39d2869ffb
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:34:19 2025 +0700

    fix: list with params error

commit 3c046a4d82
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:12:10 2025 +0700

    fix: list integration

commit 6feb480a51
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:16:23 2025 +0700

    fix: change get encounter class to constants

commit d7d984810e
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:00:05 2025 +0700

    remove previous list + form from any features

commit a6377ef943
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:24:54 2025 +0700

    fix: includes for unit

commit b00b9b198e
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:17:31 2025 +0700

    fix: includes for medicine list

commit 4908f16770
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:56:11 2025 +0700

    fix: search on list file

commit 41405ae113
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:36:48 2025 +0700

    fix: resolve list organization source

commit 6b69e48bd6
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:05:36 2025 +0700

    feat(installation): add encounter list

commit 59847dce34
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:01:24 2025 +0700

    chore: add shared handlers

commit e78342829e
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 12:38:04 2025 +0700

    feat(installation): integrate api installation

commit 55559a4683
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 15:00:10 2025 +0700

    feat(division): change parent id to number before integrate

commit 2d8c751788
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 14:47:02 2025 +0700

    feat(division): parent id to default null

commit f374f9ef5b
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 12:45:05 2025 +0700

    feat(division): change form attribute

commit 1837afce6c
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 11:03:19 2025 +0700

    feat(division): change compoent combobox to tree select

commit 539a1cefb0
Author: riefive <rie.five@gmail.com>
Date:   Fri Oct 3 10:54:35 2025 +0700

    feat(division): create tree item converter for division

commit 32c69af4e1
Merge: 0752855 10bbee9
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Fri Oct 3 06:05:35 2025 +0700

    Merge branch 'feat/layout-cleaning' into fe-prescription-56

commit 757b8c0444
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 15:31:27 2025 +0700

    test: call division position

commit 378e6773b8
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:49:55 2025 +0700

    fix: handler reset state

commit 0e115eed5e
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:37:17 2025 +0700

    fix: list unit

commit d544d031c3
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:34:19 2025 +0700

    fix: list with params error

commit 693d8225bf
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 14:12:10 2025 +0700

    fix: list integration

commit 0752855808
Merge: f83dbfe c0557cc
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Thu Oct 2 12:46:54 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit fc3bda14f4
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:16:23 2025 +0700

    fix: change get encounter class to constants

commit 9603915fd7
Author: riefive <rie.five@gmail.com>
Date:   Thu Oct 2 11:00:05 2025 +0700

    remove previous list + form from any features

commit 546423bdfb
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:24:54 2025 +0700

    fix: includes for unit

commit db48233f6c
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 15:17:31 2025 +0700

    fix: includes for medicine list

commit 54a5aaa78f
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:56:11 2025 +0700

    fix: search on list file

commit cc41118570
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 14:36:48 2025 +0700

    fix: resolve list organization source

commit 6a7a9cda80
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:05:36 2025 +0700

    feat(installation): add encounter list

commit c96d738379
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 13:01:24 2025 +0700

    chore: add shared handlers

commit a48f375018
Author: riefive <rie.five@gmail.com>
Date:   Wed Oct 1 12:38:04 2025 +0700

    feat(installation): integrate api installation

commit f83dbfeae3
Merge: ba77ed1 f29eb38
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Wed Oct 1 04:02:05 2025 +0700

    Merge branch 'feat/layout-cleaning' into fe-prescription-56

commit ba77ed1bb5
Merge: 4fbd8ee 97d36f1
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Mon Sep 29 08:27:01 2025 +0700

    Merge branch 'dev' into fe-prescription-56

commit 4fbd8ee757
Author: Andrian Roshandy <andrianovsky95@gmail.com>
Date:   Sun Sep 28 07:10:32 2025 +0700

    feat/prescription-56: merapikan models
2025-11-18 13:26:58 +07:00
hasyim_kai 94e4ead8fe Fix: debug updaate medicine master 2025-11-18 13:13:52 +07:00
hasyim_kai c98018bb4e Squashed commit of the following:
commit bcfb4c1456
Merge: 1cbde57 975c87d
Author: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Date:   Mon Nov 17 11:15:14 2025 +0700

    Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135

    Feat: Integration Rehab Medik - Surat Kontrol

commit 975c87d99a
Merge: f582090 1cbde57
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 10:58:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit f582090d18
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 13 11:56:21 2025 +0700

    Fix: Refactor surat kontrol

commit a14c4a5d3c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 14:21:58 2025 +0700

    Fix: Refactor Surat Kontrol CRUD {id} to {code}

commit 24313adef6
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Fri Nov 7 10:35:46 2025 +0700

    Fix: debug back btn in add, edit, detail content page

commit 59b44b5729
Merge: 99a61a0 db15ec9
Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com>
Date:   Fri Nov 7 09:11:10 2025 +0700

    Merge branch 'dev' into feat/surat-kontrol-135

commit 99a61a0bf2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Thu Nov 6 08:06:01 2025 +0700

    Feat: add right & bottom label in input base component

commit db48919325
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:53:43 2025 +0700

    Feat: add banner in List if requirement not met

commit bd57250f7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:26:48 2025 +0700

    Fix: refactor getDetail url param

commit a361922e32
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 5 13:19:07 2025 +0700

    Feat: Add & integrate add, edit, detail page

commit 331f4a6b20
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 16:56:08 2025 +0700

    Feat: Integrate Control Letter

commit 2275f4dc99
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 14:01:58 2025 +0700

    Feat: add UI BPJS > Surat Kontrol

commit 89e0e7a2c8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Oct 27 10:21:59 2025 +0700

    Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses
2025-11-18 12:58:58 +07:00
riefive a41df17d86 fix: get control letter of doctor 2025-11-18 12:40:58 +07:00
kusuma_ari d1fd8bb194 update format func 2025-11-18 11:50:01 +07:00
kusuma_ari 806cfad6a8 update 2025-11-18 11:31:57 +07:00
hasyim_kai dab6adc4a9 Fix: add role authorization in Resume 2025-11-18 11:19:48 +07:00
Muhammad Hasyim Chaidir Ali c28fc8f7aa Merge branch 'dev' into feat/resume-81 2025-11-18 09:02:16 +07:00
Abizrh a8696284d7 ⚠️ refactor (soapi): refactor form component to use usequerycrudmode and update api call 2025-11-17 20:57:13 +07:00
riefive 411d83523e fix: error in lib date 2025-11-17 17:10:14 +07:00
riefive f748fc2d7e fix: resolve conflict in lib date 2025-11-17 17:08:58 +07:00
hasyim_kai 7ed1cc83bf Feat: add doc preview in Resume List 2025-11-17 15:04:01 +07:00
riefive edf21ef5fb fix: adjust service base 2025-11-17 14:44:09 +07:00
riefive 9f6f07a987 fix: adjust filter for sep 2025-11-17 14:41:21 +07:00
riefive 272842e31c fix: refactors date range selection to use a reactive calendar 2025-11-17 14:01:30 +07:00
riefive 4ef0156181 fix: refactors date range handling to use a formatted, reactive approach 2025-11-17 13:16:01 +07:00
Munawwirul Jamal bcfb4c1456 Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135
Feat: Integration Rehab Medik - Surat Kontrol
2025-11-17 11:15:14 +07:00
hasyim_kai 975c87d99a Merge branch 'dev' into feat/surat-kontrol-135 2025-11-17 10:58:10 +07:00
hasyim_kai 15ab43c1b1 Feat: add verification capthca and form adjustment 2025-11-17 10:38:21 +07:00
riefive d6d1efe61f fix: hide error validation 2025-11-17 10:12:38 +07:00
hasyim_kai dc0bcc3606 Feat: integration Medicine Form 2025-11-17 09:26:29 +07:00
hasyim_kai dfb2c305ca Merge remote-tracking branch 'origin/feat/uploads-85' into feat/medicine-form-167 2025-11-17 09:18:47 +07:00
Abizrh 6ca03f562d 🐛 fix (cprj): update default type code to dev-record 2025-11-17 08:46:01 +07:00
Andrian Roshandy 468c6a164f Merge branch 'dev' into feat/device-order 2025-11-17 07:12:38 +07:00
Andrian Roshandy 20649c5917 feat/prescription: finalize #1
+ integration
+ non mix entry
2025-11-16 19:52:22 +07:00
Andrian Roshandy 0da8701a6c feat/prescription: added group and flat list 2025-11-16 11:24:24 +07:00
Andrian Roshandy 7253272681 feat/device-order: adjustment wip 2025-11-16 11:21:02 +07:00
Andrian Roshandy 391469e633 feat/prescription: added group and flat list 2025-11-16 08:18:55 +07:00
Andrian Roshandy b1dbae7928 Merge branch 'dev' into feat/prescription 2025-11-16 08:14:09 +07:00
munawwirul_jamal 1cbde57cf9 dev: hotfix
comps/pub/myui
+ updated data/types
+ updated data-table
+ updated nav-header
+ added toggle

comps/pub/ui
+ updated button
+ updated toggle
2025-11-16 00:44:53 +07:00
Andrian Roshandy b847886601 feat/prescription: more adjustment 2025-11-15 22:40:23 +07:00
Andrian Roshandy 83cdd070ed Merge branch 'dev' into feat/prescription 2025-11-15 20:15:18 +07:00
Andrian Roshandy 3211972a84 Merge branch 'dev' into feat/radiology-order-54 2025-11-15 20:15:07 +07:00
Andrian Roshandy e3fc1e4ab9 feat/radiology-order-54: adjust wip 2025-11-15 20:14:38 +07:00
Andrian Roshandy 224bc7cd61 feat/prescription: integrated non-mix 2025-11-15 20:13:42 +07:00
riefive ec0997805c fix(encounter): fixing typo text 2025-11-15 08:39:47 +07:00
riefive a43e2feb98 fix(encounter): updates BPJS menu icon to image and tweaks style 2025-11-15 08:38:39 +07:00
riefive de81af9844 fix(encounter): menu activation logic by syncing active 2025-11-15 08:21:06 +07:00
riefive 979d73cca3 fix(encounter): add history menu 2025-11-15 08:07:12 +07:00
riefive 66ecb000f1 fix(encounter): add guard for encounter home 2025-11-15 07:21:24 +07:00
riefive d24596a83e fix(encounter): modify dropdown action 2025-11-15 07:06:08 +07:00
munawwirul_jamal ccabe0177b dev: hotfix, added combobox objectsToItems 2025-11-15 01:27:06 +07:00
hasyim_kai d0aa69d9a1 Fix: debug table typo Uplaod Doc 2025-11-14 17:12:17 +07:00
hasyim_kai bb0017ffcb Fix: refactor constList Uplaod Doc 2025-11-14 15:47:11 +07:00
riefive 7fe66b1f40 fix(encounter): unifies grid layout for patient info display 2025-11-14 15:18:46 +07:00
riefive 840efeba8c fix: improves encounter detail rendering and data mapping 2025-11-14 15:02:49 +07:00
hasyim_kai 60c13649d9 Fix: debug Uplaod Doc 2025-11-14 14:55:32 +07:00
riefive 0d4accc281 refactor(encounter): remove unused patient-note tab from encounter home 2025-11-14 14:27:28 +07:00
hasyim_kai 1d03258f44 Fix: Typo uplaod doc type 2025-11-14 14:08:47 +07:00
riefive e8bccf3e5a fix(encounter): add component menu 2025-11-14 13:45:31 +07:00
riefive bf69c80072 fix(role): update role of encounter 2025-11-14 11:11:09 +07:00
Abizrh f629546f13 feat (cprj): implement cprj (patient note) functionality 2025-11-13 21:29:16 +07:00
hasyim_kai 56109564cb Feat: API Integration supporting doc upload 2025-11-13 16:16:26 +07:00
riefive 8547373a17 fix: adjust logic to filter tabs 2025-11-13 15:54:22 +07:00
Andrian Roshandy cbe1883c9f Merge branch 'dev' into feat/device-order-x 2025-11-13 15:54:14 +07:00
riefive 5af84a8dc2 fix(role): add role in encounter home 2025-11-13 15:36:31 +07:00
riefive 8bb57de4cc fix: bring back page entry sep 2025-11-13 13:16:58 +07:00
riefive a3ddbac0af fix: conflict after rebase 2025-11-13 13:16:47 +07:00
riefive 8e0f6a52d8 feat(sep): make default value for destination clinic 2025-11-13 13:15:23 +07:00
riefive 90abcf78a3 feat(sep): avoid duplicate get patinet 2025-11-13 13:15:23 +07:00
riefive 8f8cc0c815 feat(sep): integrate letter control 2025-11-13 13:15:23 +07:00
riefive 487f3e92f9 feat(encounter): update status badges 2025-11-13 13:15:23 +07:00
riefive a477829f4a feat(encounter): update ui cancellation + integration 2025-11-13 13:15:23 +07:00
riefive 3b75c06c4b fix: sep searching 2025-11-13 13:15:23 +07:00
riefive 5b1c69fd77 feat(encounter): implement letter data mapping for SEP form submission and enhance referral handling 2025-11-13 13:15:23 +07:00
riefive 4439a88b37 feat(encounter): provide cancel of encounter 2025-11-13 13:15:22 +07:00
hasyim_kai f582090d18 Fix: Refactor surat kontrol 2025-11-13 11:56:21 +07:00
Munawwirul Jamal 0d97ba9d25 Merge pull request #164 from dikstub-rssa/feeat/pendaftaran-kemoterapi-141
Feat: Pendaftaran Kemoterapi
2025-11-13 11:52:23 +07:00
Andrian Roshandy 16626a2fee feat/prescription: added submit 2025-11-13 11:49:28 +07:00
riefive bb8df3d53a Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feeat/pendaftaran-kemoterapi-141 2025-11-13 10:14:17 +07:00
Munawwirul Jamal 02508b22de Merge pull request #162 from dikstub-rssa/fe-prescription-56
Fe prescription 56
2025-11-13 07:56:31 +07:00
munawwirul_jamal 295bb8120f Merge branch 'dev' into fe-prescription-56 2025-11-13 07:45:48 +07:00
Munawwirul Jamal 6b933de212 Merge pull request #156 from dikstub-rssa/feat/cp-lab-order-48
Feat/cp lab order 48
2025-11-12 07:13:11 +07:00
Munawwirul Jamal f2e98fc732 Merge pull request #158 from dikstub-rssa/feat/menu-structure
Feat/menu structure
2025-11-12 07:12:40 +07:00
Andrian Roshandy 471c846045 Merge branch 'dev' into feat/cp-lab-order-48 2025-11-12 07:11:46 +07:00
Andrian Roshandy 9b281de00b Merge branch 'dev' into feat/menu-structure 2025-11-12 07:08:29 +07:00
Munawwirul Jamal 2e899c6022 Merge pull request #157 from dikstub-rssa/feat/encounter-status-107
Feat/encounter status 107
2025-11-12 07:04:47 +07:00
Munawwirul Jamal 8effefb5ad Merge pull request #155 from dikstub-rssa/feat/radiology-order-54
Feat/radiology order 54
2025-11-12 07:04:17 +07:00
Andrian Roshandy 80383a5f0a feat/menu-structure: adjust page rehab 2025-11-12 06:52:31 +07:00
Andrian Roshandy 93c9e74d08 feat/menu-structure: adjust menu items all roles 2025-11-12 06:52:14 +07:00
Andrian Roshandy f0d2bc4de1 feat/menu-structure: update access control 2025-11-12 06:51:37 +07:00
Andrian Roshandy 02c14089f1 feat/menu-structure: update role switcher 2025-11-12 06:51:03 +07:00
hasyim_kai a14c4a5d3c Fix: Refactor Surat Kontrol CRUD {id} to {code} 2025-11-11 14:21:58 +07:00
hasyim_kai 270869b928 Fix: Refactor Organization CRUD {id} to {code} 2025-11-11 14:07:46 +07:00
Andrian Roshandy e9e0e21d1b feat/menu-structure: wip 2025-11-11 12:30:43 +07:00
Abizrh e62ee1b37e feat (encounter): implement general consent feature 2025-11-11 08:57:49 +07:00
Munawwirul Jamal 3f63f195d0 Merge pull request #143 from dikstub-rssa/feat/org-position-134
feat(org-position): impl all orgs position related
2025-11-11 08:15:15 +07:00
munawwirul_jamal 337083de3d Merge branch 'dev' into feat/org-position-134 2025-11-11 08:14:34 +07:00
munawwirul_jamal 3822a9aa5f Merge branch 'dev' into feat/org-position-134 2025-11-11 08:13:30 +07:00
munawwirul_jamal 8e7f9b19e3 feat/radiology-order-54: upgraded mcu-order/list 2025-11-10 23:17:49 +07:00
Munawwirul Jamal d8015d87b5 Merge pull request #138 from dikstub-rssa/feat/fe-sep-113
Feat: Integration Vclaim Sep
2025-11-10 23:14:25 +07:00
riefive 498a4c1fe5 feat(encounter): enhance form submission handling with detailed logging and fallback mechanism 2025-11-10 13:58:58 +07:00
riefive 1cdcd80383 feat(encounter): add SEP validation and handling in entry form 2025-11-10 13:51:46 +07:00
riefive 6c542e5a54 refactor(encounter): improve form field synchronization and enhance loading state management 2025-11-10 13:23:03 +07:00
riefive b52f438b23 feat(encounter): implement encounter detail loading and update handling in entry form 2025-11-10 12:44:27 +07:00
riefive a8bc3647a1 refactor(encounter): streamline navigation logic and reintroduce patient list fetching on mount 2025-11-09 19:17:13 +07:00
riefive df110912b8 feat(filter): update date range to use current date and one month ago for filtering 2025-11-09 19:08:58 +07:00
riefive 2bb9b04cf9 refactor(encounter): comment out navigation logic and update class code for ContentEncounterList 2025-11-09 19:06:35 +07:00
riefive 6dcc9e6c30 feat(encounter): add outpatient class and implement record deletion confirmation 2025-11-09 18:58:05 +07:00
riefive 5e309801ed feat(encounter): update encounter permissions and enhance entry form handling 2025-11-09 18:36:15 +07:00
riefive 9fad8f4123 refactor(encounter): reorganize imports and update data fetching method for encounter list 2025-11-09 17:47:11 +07:00
riefive 79e1d54710 feat(encounter): enhance entry form with submit method and save functionality 2025-11-09 17:43:55 +07:00
riefive 5b15f86acb fix(sep): add external mapper for member 2025-11-07 15:49:55 +07:00
riefive c9f38b44f8 fix(encounter): change params resource value 2025-11-07 15:39:36 +07:00
riefive 630cda65af feat(sep): search member through vclaim 2025-11-07 15:37:45 +07:00
riefive 25b5ef0e87 feat(encounter): adjust component encounter list 2025-11-07 14:39:23 +07:00
riefive 8cc260f5c3 feat(encounter): adjust content of encounter and add page encounter for inpatient, emergency, outpatient 2025-11-07 14:15:35 +07:00
hasyim_kai b2a512314b Feat: UI uplaod doc pendukung 2025-11-07 14:02:54 +07:00
riefive ca687911f5 feat(sep): modify item tree specialist 2025-11-07 13:45:14 +07:00
hasyim_kai 24313adef6 Fix: debug back btn in add, edit, detail content page 2025-11-07 10:35:46 +07:00
Muhammad Hasyim Chaidir Ali 59b44b5729 Merge branch 'dev' into feat/surat-kontrol-135 2025-11-07 09:11:10 +07:00
hasyim_kai 53bd8e7f6e Fix: refactor rehab medik - Resume UI 2025-11-07 08:55:23 +07:00
riefive daf9c8f46c feat(sep): adjust entry form of sep 2025-11-06 15:50:29 +07:00
riefive 7eecdc67ec feat(sep): implement debounced search for patient identifiers and enhance entry form functionality 2025-11-06 14:45:24 +07:00
Munawwirul Jamal db15ec9445 Merge pull request #140 from dikstub-rssa/feat/integrasi-assessment-medis-114
Feat/integrasi assessment medis 114
2025-11-06 14:30:41 +07:00
riefive 48b8ee5d2c feat(encounter): add patientId to formValues and reset recSelectId on add-sep event 2025-11-06 14:30:38 +07:00
riefive d5c06add1d feat(sep): adjust entry in encounter 2025-11-06 14:16:20 +07:00
hasyim_kai 99a61a0bf2 Feat: add right & bottom label in input base component 2025-11-06 08:06:01 +07:00
Andrian Roshandy 8462eba94b feat/prescription-56: wip 2025-11-05 21:23:04 +07:00
riefive ff3b616742 refactor(sep): update vclaim visit service 2025-11-05 14:38:19 +07:00
riefive 4b6247ef79 refactor(sep): update data structure and types for SEP components 2025-11-05 14:16:21 +07:00
hasyim_kai db48919325 Feat: add banner in List if requirement not met 2025-11-05 13:53:43 +07:00
hasyim_kai bd57250f7e Fix: refactor getDetail url param 2025-11-05 13:26:48 +07:00
hasyim_kai a361922e32 Feat: Add & integrate add, edit, detail page 2025-11-05 13:19:07 +07:00
riefive 6840dfd5ac feat(vclaim-monitoring): enhance getList function to return dummy response on failure 2025-11-05 13:06:45 +07:00
Abizrh 013c18d746 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/integrasi-assessment-medis-114 2025-11-05 10:04:26 +07:00
Abizrh 3cfa07149c feat (soapi): parse and display main complaint and diagnoses from json data 2025-11-05 10:04:15 +07:00
hasyim_kai 331f4a6b20 Feat: Integrate Control Letter 2025-11-04 16:56:08 +07:00
riefive a592a0be36 feat(cemo): add home encounter 2025-11-04 15:15:38 +07:00
riefive be0a761170 feat(cemo): change flow admin 2025-11-04 13:23:52 +07:00
riefive 64fe2524fb feat(cemo): enhance admin mode functionality and update series handling 2025-11-04 12:02:31 +07:00
Khafid Prayoga 3ae81c29fd feat(subspecialist): enhance specialist details with unit and installation info
- Update Unit interface to allow null installation
- Include specialist.Unit and specialist.Unit.Installation in API includes
- Add Unit and Installation fields to subspecialist detail view
- Simplify list configuration headers and update keys for specialist name
2025-11-04 09:23:26 +07:00
riefive fb7731188d feat(cemo): add mode adm + series 2025-11-03 15:52:35 +07:00
riefive 89b2fb9cd9 feat(chemo): add page process and modify components 2025-11-03 15:03:56 +07:00
Andrian Roshandy f676c8a4b9 feat/cp-lab-order-48: wip 2025-11-03 08:11:02 +07:00
Abizrh 6bb881d248 feat (soapi): implement soapi entry with form and list 2025-11-02 23:20:38 +07:00
Andrian Roshandy 69ffe6bd49 feat/radiology-order: added the page 2025-11-02 14:49:09 +07:00
riefive d1369d513b feat(cemo): add list verification 2025-10-31 16:08:22 +07:00
Andrian Roshandy a9ab75fd98 feat/readiology-order: added mcu 2025-10-31 16:07:35 +07:00
Khafid Prayoga 581eee41f4 feat(subspecialist): add detail view and position management
- Implement detail view for subspecialist with specialist relation
- Add position management functionality including CRUD operations
- Create new components for detail display and position listing
- Update service to handle position-related requests
- Include employee selection for position assignments
2025-10-31 15:57:41 +07:00
Khafid Prayoga ba0ac753b2 feat(subspecialist-position): implement crud operations for subspecialist positions
- Add new handler, service, and schema files for subspecialist position
- Update list configuration and entry form components
- Modify list view to display subspecialist position data
- Include subspecialist relation in position model
2025-10-31 14:57:45 +07:00
riefive 71d68e5a0e feat(cemo): add dialog verification and list register 2025-10-31 14:49:21 +07:00
Andrian Roshandy f8d906b6c2 Merge branch 'dev' into fe-prescription-56 2025-10-31 14:48:21 +07:00
Andrian Roshandy 40d78a999a feat/readiology-order: added mcu 2025-10-31 14:35:05 +07:00
munawwirul_jamal 5f9e441147 dev: hotfix
- chore, .gitignore
- feat, ok button for my-ui/nav-footer
2025-10-31 14:30:19 +07:00
Khafid Prayoga d3090d04ef feat(specialist): add unit info to specialist detail view
- Extend getDetail function to accept optional params
- Include unit data when fetching specialist details
- Display unit code alongside name in detail view
2025-10-31 13:34:45 +07:00
riefive b3502df0f8 Merge branch 'feat/fe-kemoterapi' into feeat/pendaftaran-kemoterapi-141 2025-10-31 13:12:11 +07:00
riefive 7119f67402 feat(cemo): modify schema 2025-10-31 13:09:59 +07:00
Khafid Prayoga a4f8e1a64f feat(specialist): add specialist detail page with position management
- Add specialist detail page with unit relation
- Implement position management including CRUD operations
- Update specialist model to include unit relation
- Add list and detail components for specialist positions
- Create entry form for specialist positions
- Implement pagination and search for positions
- Add confirmation dialogs for delete operations
2025-10-31 11:18:00 +07:00
Khafid Prayoga c340de3114 feat(specialist-position): implement crud operations for specialist positions
add handler, service, schema and update components for specialist position management
update list configuration and form to handle specialist relations
2025-10-31 10:55:45 +07:00
munawwirul_jamal 66872c95f8 feat/prescription-56: wip 2025-10-31 07:56:36 +07:00
Abizrh da80d1a206 feat (soapi): integrate icd selection 2025-10-30 20:47:11 +07:00
Abizrh 2ea51c4ffb enhance (icd): get provide data 2025-10-30 20:46:36 +07:00
Abizrh 608a0ce6c1 enhance (pub): adjust data-table toggleSelection 2025-10-30 20:45:46 +07:00
riefive 45cc019ec1 feat(cemo): layouting form 2025-10-30 15:43:50 +07:00
riefive e866c0cf2a feat(cemo): layouting protocol 2025-10-30 14:41:52 +07:00
Khafid Prayoga bf441ff714 refactor(components): change ID types from string to number and update related components
- Update installation and unit detail components to use number type for IDs
- Modify route parameter handling to pass numbers instead of strings
- Add new unit position entry detail component with proper type handling
2025-10-30 14:10:40 +07:00
Khafid Prayoga 343d1d21cb refactor(installation): rename component and ensure installationId is number
Rename AppInstallationPositionEntry to AppInstallationPositionEntryDetail for better clarity and ensure installationId is properly typed as number. The new component includes form handling for installation position details.
2025-10-30 13:56:14 +07:00
Khafid Prayoga 61d3db3a12 feat(unit): add unit detail page with position management
- Create new unit detail page with route and navigation
- Add unit detail component to display basic unit information
- Implement position list management with pagination and actions
- Include position creation, editing and deletion functionality
- Update unit model to include installation relationship
2025-10-30 12:56:28 +07:00
Khafid Prayoga b073fb60d1 feat(models): add employee relation to position interfaces
Add optional Employee type to specialist, installation and subspecialist position interfaces to support employee relation in the data model.
2025-10-30 12:16:51 +07:00
Khafid Prayoga 1dc42be406 feat(unit-position): implement crud operations and update ui components
- Add new handler, service, and schema files for unit-position
- Update list configuration and entry form components
- Modify page title and integrate employee relation
- Implement CRUD operations with proper validation
2025-10-30 12:14:32 +07:00
Khafid Prayoga 59f1def565 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/org-position-134 2025-10-30 11:03:48 +07:00
riefive dc4edc1dc0 feat(cemo): show list cemo 2025-10-29 15:58:52 +07:00
riefive 3234853473 feat(cemo): add list of cemo 2025-10-29 15:39:55 +07:00
hasyim_kai fc308809b8 Feat: add UI Rehab Medik > Proses > Resume 2025-10-29 14:57:19 +07:00
Muhammad Hasyim Chaidir Ali 9b383a5437 Merge pull request #139 from dikstub-rssa/dev
Update branch feat/resume-81
2025-10-29 13:32:47 +07:00
Muhammad Hasyim Chaidir Ali 831749a55e Merge branch 'feat/resume-81' into dev 2025-10-29 13:32:23 +07:00
riefive 02e33c4f61 fix: refactor view letter 2025-10-29 13:22:06 +07:00
riefive 2d2e14ede0 fix: resolve conflict on nuxt setting 2025-10-29 13:05:50 +07:00
Andrian Roshandy 67ee129f4b Merge branch 'dev' into fe-prescription-56 2025-10-28 16:20:17 +07:00
riefive 0ecac1c183 fix: recheck create sep 2025-10-28 16:14:18 +07:00
munawwirul_jamal 9e82d17943 dev: hotfix, more styling 2025-10-28 16:06:22 +07:00
Khafid Prayoga d7e9ae03cb feat(ui): add back navigation button to detail pages
- Implement reusable back button component
- Add back button to division and installation detail pages
- Improve navigation logic with additional state cleanup
2025-10-28 15:49:39 +07:00
munawwirul_jamal 3e7e735ae4 dev: hotfix, nav-footer, button, dialog 2025-10-28 15:41:07 +07:00
Khafid Prayoga 54db81a5b9 feat(installation): implement detail view and navigation for installations
- Replace direct detail display with navigation to dedicated detail page
- Add new installation detail components and configuration
- Remove unused entry.ts file
- Create new route for installation detail view
2025-10-28 15:03:49 +07:00
riefive b330609212 fix: handle file upload 2025-10-28 15:01:33 +07:00
riefive aeaefb9478 feat(sep): refactor table letter 2025-10-28 14:01:09 +07:00
riefive 87762cf17a feat(sep): refactor monitoring of vclaim 2025-10-28 13:04:35 +07:00
Khafid Prayoga dc653402c7 feat(installation-position): implement crud operations and ui components
- Add installation position handler, service, and schema
- Update list configuration and entry form components
- Enhance pagination component with configurable controls
- Implement installation position list view with search and pagination
2025-10-28 12:45:57 +07:00
riefive f0ab15cadf feat(sep): add service of letter vclaim 2025-10-28 11:13:39 +07:00
riefive 2239b94632 fix: refetch doctor by specialist 2025-10-28 10:42:29 +07:00
riefive 99c5266f2b fix: add tree select subspecialist and filter doctor 2025-10-28 10:02:12 +07:00
Khafid Prayoga bc4f5ddb0b wip: orgs position 2025-10-27 16:36:24 +07:00
riefive 803139cc17 fix: refactor entry form of encounter 2025-10-27 14:34:33 +07:00
Khafid Prayoga af932ebfbc feat(org-src): add division position management page
- Add new division position page to side menu
- Implement division position list with improved employee name display
- Include necessary API calls with proper includes for related data
- Add error handling for data loading failures
2025-10-27 14:31:09 +07:00
hasyim_kai 2275f4dc99 Feat: add UI BPJS > Surat Kontrol 2025-10-27 14:01:58 +07:00
riefive c8dde10506 fix: change dpjp, unit and healthcare vclaim 2025-10-27 13:48:19 +07:00
riefive aa2a20a018 fix: add constant and change some service of vclaim 2025-10-27 13:41:09 +07:00
Khafid Prayoga 16a4fc5d7f fix(division-detail): handle errors when fetching division and employee data
Add try-catch block to handle potential errors during API calls for division details and employee list. Show toast notification when errors occur to improve user feedback.
2025-10-27 13:32:56 +07:00
Khafid Prayoga ddb9058969 feat(division-detail): add row numbering and remove pagination
- Add index column to division position list table
- Remove pagination component as it's no longer needed
- Map data to include row numbers before display
2025-10-27 13:22:10 +07:00
Khafid Prayoga b16d3f108f refactor(division): improve employee name formatting and navigation
- Simplify employee name construction using array filtering
- Replace dropdown-action-ud with dropdown-action-dud component
- Update division detail navigation to use route navigation
- Clean up code formatting and remove unnecessary whitespace
2025-10-27 11:05:32 +07:00
hasyim_kai 89e0e7a2c8 Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses 2025-10-27 10:21:59 +07:00
Andsky 0504712559 Feat/encounter status 107 (#136) 2025-10-25 16:21:39 +07:00
Andrian Roshandy 9919b4b896 Merge branch 'dev' into fe-prescription-56 2025-10-25 15:36:29 +07:00
Andrian Roshandy b7d4fcf939 Merge branch 'dev' into feat/encounter-status-107 2025-10-25 15:31:30 +07:00
munawwirul_jamal e93e72a780 dev: chore, note on encounter process 2025-10-25 05:05:53 +07:00
Andsky 0212b9c39f Feat/encounter status 107 (#129)
* dev: hotfix, moved combobox and datepicker

* dev: hotfix, moved combobox and datepicker

* dev: hotfix, text-size standardization

* dev: hotfix, text-size standardization

* feat/encounter-status-107: wip

* feat/encounter: wip

* feat/encounter: done

---------

Co-authored-by: Munawwirul Jamal <munawwirul.jamal@gmail.com>
2025-10-25 05:03:48 +07:00
Andrian Roshandy 19a43bd291 Merge branch 'dev' into fe-prescription-56 2025-10-25 05:02:57 +07:00
Andrian Roshandy eaac4aab85 Merge branch 'dev' into feat/encounter-status-107 2025-10-25 05:01:45 +07:00
riefive 26e9ea96ea fix: debug encounter 2025-10-24 17:04:46 +07:00
Khafid Prayoga df27262bd1 impl get position over detail divions
wip: detail division

for entry new division position

finish v1 divison-position
2025-10-24 16:51:55 +07:00
munawwirul_jamal 3558672f9a dev: hotfix, system by-passes role-access 2025-10-24 15:34:31 +07:00
riefive 3108297d8f fix: restructure encounter get patient 2025-10-24 15:23:01 +07:00
riefive 7f0c6e6fed fix: move patient view dialog under patient 2025-10-24 14:52:54 +07:00
riefive 197e79bd0c feat(sep): add selected prop to ListPatient and enhance radio selection handling in select-radio component 2025-10-24 14:27:57 +07:00
riefive aea4c3cd5c feat(sep): introduce PatientData interface and update select-radio component to include menu property 2025-10-24 13:46:54 +07:00
riefive 80f75a3c02 feat(sep): enhance entry form and update label formatting in services 2025-10-24 13:21:52 +07:00
riefive ae995fef1d refactor(integration-bpjs): update validation logic for accident-related fields 2025-10-24 13:12:40 +07:00
Andrian Roshandy d90e40043c Merge branch 'dev' into fe-prescription-56 2025-10-24 12:40:59 +07:00
Andrian Roshandy 0c9f9deb7e fe-prescription-56: wip 2025-10-24 12:38:02 +07:00
Munawwirul Jamal b90f0c1047 Merge pull request #125 from dikstub-rssa/feat/integrasi-assessment-medis-114
Feat/integrasi assessment medis 114
2025-10-24 11:05:27 +07:00
Abizrh b26160291c Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/integrasi-assessment-medis-114 2025-10-24 09:59:52 +07:00
Munawwirul Jamal 1042fd4923 chore: update .env.example 2025-10-24 08:16:06 +07:00
Khafid Prayoga dd33bbac8e finish: integrasi create education assessment
note: masih perlu cek terkait new api domain
2025-10-23 16:20:50 +07:00
riefive fb3e10bd11 feat(sep): testing create sep 2025-10-23 16:15:04 +07:00
riefive abb0881338 feat(sep): add navigate back to encounter 2025-10-23 14:52:41 +07:00
riefive 792f24d1fc feat(sep): add query from encounter 2025-10-23 14:48:23 +07:00
Andrian Roshandy 729474a2a0 Merge branch 'dev' into fe-prescription-56 2025-10-23 14:16:52 +07:00
Andrian Roshandy 7f3fe813c5 feat/device-order: wip 2025-10-23 14:09:01 +07:00
riefive e3bb95454b chore: solve conflict 2025-10-23 13:56:03 +07:00
riefive 1cd326c9e2 chore: remove small entry 2025-10-23 13:34:53 +07:00
riefive 6a184ae311 feat(sep): add error message 2025-10-23 13:32:13 +07:00
Abizrh a0c93f4d98 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/integrasi-assessment-medis-114 2025-10-23 12:48:44 +07:00
riefive 7f0e7bee4a feat(sep): add class form 2025-10-23 12:15:55 +07:00
Munawwirul Jamal ddd35d60c0 chore: .env update 2025-10-23 11:12:04 +07:00
Abizrh 44588f3273 🐛 fix (user): fix user role computation 2025-10-22 17:40:53 +07:00
Abizrh 621c9a237f Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/integrasi-assessment-medis-114 2025-10-22 17:21:09 +07:00
Abizrh fe08643c0e 🐛 fix (encounter): fetch encounter data instead of patient data 2025-10-22 17:20:06 +07:00
riefive 891c67d6ff feat(sep): integrate sep create 2025-10-22 14:50:00 +07:00
riefive 00302ece84 feat(sep): add form traffic accident 2025-10-22 14:27:43 +07:00
riefive baad005522 feat(sep): add form support code 2025-10-22 13:38:17 +07:00
Khafid Prayoga d879325496 feat(assessment-education): finish form entry data
finish form tambah assessment education

finish: form data and schema for content assessment eduction

todo: handler dan service
2025-10-22 12:11:02 +07:00
riefive d11b22dc05 feat(sep): add constant for vclaim 2025-10-22 11:13:27 +07:00
Andrian Roshandy 72e8d431d6 Merge branch 'dev' into feat/encounter-status-107 2025-10-22 07:17:41 +07:00
Munawwirul Jamal 2a9b78a832 Feat/consultation 82 (#128) 2025-10-22 07:08:28 +07:00
Andsky fb45932708 Feat/device order 58 (#127)
* feat(combobox): add reusable combobox component with search and selection

Implement a combobox component with search functionality and item selection. The component supports displaying item labels with optional codes, maintains selected item state, and provides customizable placeholders. Items are sorted with selected items first followed by alphabetical order.

* feat(division): add entry form and view components for division management

* feat(division): add division management pages and form validation

- Create new division list and add pages
- Implement form validation using zod and error handling
- Add useFormErrors composable for form error management
- Update division entry form with validation support
- Add error styling in main.css

* refactor(error): move error types to centralized location

Consolidate XError, XErrors, and FormErrors types into a single file for better maintainability and consistency across the codebase.

* feat(unit): add unit management pages and form components

- Create new unit list and add pages under org-src feature
- Implement unit entry form with validation using zod
- Update error types to support readonly path property
- Refactor field component to use shared error type

* ⚠️ refactor (human-src): rename user components to employee

* ⚠️ refactor (sysmenu): rename user menu to employee menu

* feat(installation): add installation entry form and pages

- Create new installation entry form component with validation
- Add installation list and add pages with basic routing
- Implement custom select component for encounter class selection
- Update SelectTrigger styling for better icon positioning

*  feat (employee): add based component & conditional form input

*  feat (form): add stacked layout option for form fields

* 📖 docs (readme): add validation documentation

*  feat (models): define employee and user data models

* refactor(data-table): improve type safety and component rendering

- Replace generic 'any' types with specific type imports for better type safety
- Add optional chaining for funcComponent to prevent potential runtime errors
- Update funcHtml and funcParsed to include rowIndex parameter in callbacks

* feat(division): implement division list with pagination and search

- Add schema validation for query parameters
- Create pagination component with type definitions
- Implement division list view with search functionality
- Add data table configuration for division listing
- Handle pagination state and URL synchronization

* feat (material): add list material

* feat (material): add form material

* feat (material): modify entry form of materiak

* feat(division): add form dialog for creating new division

- Implement dialog form with validation schema for division creation
- Add combobox component for parent division selection
- Include form submission handling with reset and error states
- a11y

* feat(data-table): add size prop to action components

Add size prop configuration to action components in data table to allow consistent sizing. Update dropdown action component to accept size prop with default value.

* refactor(division): extract entry form to separate component and improve form handling

- Move form logic from list component to dedicated entry-form component
- Implement proper form submission and cancellation handlers
- Add type safety with DivisionFormData interface
- Improve form validation using vee-validate
- Refresh data after successful form submission

* feat (material): add zod validation for stock field to ensure number input in entry-form

* feat (material): update logic validate

* feat(division): impl  division list+entry

feat(form): add accessibility improvements to form components

- Add labelFor prop to Label component for better form element association
- Enhance Combobox with ARIA attributes for better screen reader support
- Update form fields with proper IDs and label associations

feat(pagination): adjust button width based on page number length

Add dynamic button sizing for pagination items to accommodate different digit lengths (1-99, 100-999, 1000+). This improves visual consistency when displaying varying page numbers.

feat(modal): add reusable dialog component and refactor division form

- Create new Dialog.vue component with configurable size and outside click prevention
- Replace inline dialog implementation in division list with new Dialog component
- Fix formatting in entry-form.vue

feat(data-table): add click handling for action cells

Implement handleActionCellClick function to manage click events on action cells, triggering dropdown buttons when clicked outside interactive elements. Add cursor-pointer class and click handler to action cells for better UX.

refactor(custom-ui): centralize action event strings in types

Replace hardcoded action event strings with constants from types.ts to improve maintainability and reduce potential typos

feat(confirmation): add reusable confirmation modal components

- Implement base confirmation.vue component with customizable props
- Create record-specific record-confirmation.vue for data operations
- Add comprehensive README.md documentation for usage
- Integrate confirmation flow in division list component

refactor(components): move dialog component to base directory and update imports

The dialog component was moved from custom-ui/modal to base/modal to better reflect its shared usage across the application. All import paths referencing the old location have been updated accordingly.

refactor(select): reorganize imports and adjust conditional formatting

- Reorder imports in Select.vue for better organization
- Adjust logical operator formatting in SelectContent.vue for consistency

* feat(data-table): add skeletonSize prop to customize loading rows

Add optional skeletonSize prop to control the number of skeleton rows displayed during loading. Defaults to 5 if not provided.

* feat: add RBAC role-based access control and permission checks to device index page

* feat (material): update validation of attribute stock

* feat (material): update validation with error label

* feat (device): update entry form of device

* fix(flow): prevent outside click on division form dialog

Add prevent-outside prop to Dialog component to avoid accidental closure

* feat(installation): implement installation list with pagination and search

refactor(installation): move form schema and configuration to separate files
fix(installation): update page title and content display

* refactor(org-src): remove unused division and installation add pages

move to modal based form entry (bcz its simple form)

*  feat (medicine): add medicine management modules

*  enhance (appsidebar): improve sidebar navigation spacing and appearance

*  feat (human-src): implement employee add and index pages with rbac

* ⚠️ refactor (employee): remove unused employee pages

* refactor(pagination): move pagination info display to component and improve layout

- Consolidate pagination info display logic in pagination component
- Remove duplicate computed properties from list components
- Improve pagination layout with better spacing and responsiveness
- Add skeleton loading support to data tables

* feat(unit): implement unit management flow with list and form components

- Add schema validation and default query params for unit management
- Create list view with pagination, search, and delete functionality
- Implement form entry with validation for creating/editing units
- Replace placeholder content with functional unit list component
- Remove unused unit add page and update page titles

* feat(material): change menu material to equipment

* refactor(material): add zod validation for stock field as number and display error message after submit in

* refactor(composables): extract pagination logic into usePaginatedList composable

- Remove duplicate schema.query.ts files from unit, division, and installation components
- Create new usePaginatedList composable to centralize pagination logic
- Update list.vue components to use the new composable
- Maintain same functionality while reducing code duplication

* refactor(material): modify validation uom and item

* fix: resolve conflict at sys.json again

*  feat: register schemas and services

*  feat (pub): add base modal

*  feat (medicine): implement medicine entry form and list

*  feat (medicine): add medicine model and dto

*  feat (medicine): add medicine group model

* ⚠️ refactor (medicine-group): simplify entry form and list configuration

* ⚠️ refactor (medicine-method): simplify entry form and list configuration

*  feat (medicine-method): implement medicine method fetching

* 🐛 fix (medicine-type): fix medicine type list display

*  feat (item): add item and item price modules

* ⚠️ refactor (components): rename flow components to content

* 📖 docs (readme): update component directory structure and descriptions

* feat(integration): adjust route pages based on sys conf

* feat(org-src): replace flow components with content components and add list views

Add new content components for unit, division, and installation with list views, entry forms, and validation schemas. Replace Flow*List components with Content*List components in org-src pages. Includes pagination, search functionality, and CRUD operations for each entity type.

* refactor(tools-equipment): replace flow components with content components

- Update device and material pages to use Content prefixed components instead of Flow
- Add new content components for device and material list/entry functionality
- Maintain same functionality while improving component naming consistency

* refactor(equipment): add modal form to component list

* chore: change sys.json for equipment

* refactor(equipment): change submit flow

* refactor(tools): add modal form

* refactor(tools): change content of tools

* refactor(tools): remove entry flow

*  feat (sys): update side menu items and icons

* feat(sep): add list component

* feat(sep): add form entry

* feat(sep): update form entry

* feat(sep): modify form entry with radio input

* feat(sep): modify form entry with support code input

* feat(sep): modify form entry with calendar select

* feat(sep): update datepicker component

* feat(sep): change to update value from datepicker

*  enhance (lib): adjust libs

*  enhance (pub): adjust form label

*  feat (app): add person form

* 🐛 fix (employee): fix user entry component on employee add page

* feat(division): wip tree select component

feat(division): update division list components and add mock api

- Replace patient API endpoint with division mock endpoint
- Simplify table columns and headers for division list
- Add mock API endpoint for division list with tree/flat format

feat(select-tree): add collapsible tree select component with lazy loading

Implement a tree select component with collapsible sections and lazy loading of child items. Includes:
- Collapsible component wrappers for Vue
- Command component wrappers for combobox functionality
- Tree select item component with loading states
- Example implementation in dev page

todo:
- scroll on overflow
- long text truncate possibly with tooltip
- more than > 5 depth of child
- mutate the children lazy
- integration backend for search based text and return  keys

feat(select-tree): add command-item component for tree selection

adjust hover bg-accent (remove state on-highlighted at styling) to avoid conflict on global component

refactor(select-tree): extract TreeItem interface to shared type file

Move TreeItem interface to a dedicated type file for better code organization and reusability. Update components to import the interface and add styling improvements to the tree-select component.

adjust text size for tree to sm

refactor(select-tree): rename tree-select-item to leaf and improve component

- Rename component to better reflect its purpose as a leaf node
- Improve UI with better spacing and hover states
- Simplify toggle logic using v-model
- Add checkmark icon for selected items

checkpoint

wip

* init specialist feature

* feat(sep): create filter patient + sep

* refactor(api): consolidate query param transformation into utility function

Move URL parameter construction logic from multiple list components to a shared transform function in usePaginatedList. This improves code reuse and maintainability while keeping the same functionality.

Standardize query parameter names to match backend expectations ('page-number' and 'page-size' instead of 'page' and 'pageSize'). Update related schema and default params accordingly.

* feat(sep): update filter function

* feat(sep): update grid column

* init specialist feature

* feat(sep): create filter on sep list

* feat(sep): remove not used variables

* feat(sep): change button export to dropdown

* feat(sep): add table history sep

* feat(combobox): add disabled prop and improve styling

- Add disabled prop to combobox component to support disabled state
- Update styling to include better focus states and border color

* feat(specialist): add installation-unit relationship to specialist form

- Implement installation-unit mapping and filtering logic
- Update entry form to handle installation selection and unit filtering
- Add installation and unit dropdowns with combobox components

* feat(sep): add dialog for confirm delete

* style(form/select): improve select component styling and focus state

- Add focus outline and ring styles to SelectTrigger
- Conditionally apply text color based on modelValue
- Simplify SelectItem template structure

* dev: missing merge conflict

* feat(pagination): add reusable pagination component and update list views

- Create new PaginationView component to standardize pagination display
- Update multiple list components to use the new PaginationView
- Make paginationMeta prop required in list components

* feat(subspecialist): add subspecialist management components and pages

- Implement list view with pagination and search functionality
- Create form for adding subspecialist entries
- Add configuration for subspecialist data validation and dropdown options

* fix(pagination): format record numbers with locale for indonesia

Apply toLocaleString('id-ID') to startRecord and endRecord to display numbers in Indonesian format

* 🐛 fix (auth): redirect unauthenticated users to login page

* feat(public): add setting dark or light mode

* feat(public): implement dark mode

* feat(public): frame padding for dashboard

* fix(select-tree): adjust tree node indentation and alignment logic

- Add level prop to track node hierarchy
- Fix indentation calculation for leaves and nodes
- Simplify alignment logic based on node level

* refactor(division): move entry logic to shared config file

Extract division form configuration and tree logic from entry.vue component into a shared entry.ts file. This improves code organization and reusability while maintaining the same functionality.

*  feat (specialist-intern): add specialist intern feature

* feat(public): add padding dynamic in main frame

* feat(breadcrumb): add breadcrumb component and update header integration

- Implement new breadcrumb component with proper routing handling
- Update header to use new breadcrumb component
- Optimize nuxt config for SPA with router and rendering settings

* feat(material): create model interface of material

* feat(material): create service get for material and uom

* feat(material): modify handlers and service of material

* feat(material): retest material

* feat(material): update with processing

* feat(device): integrate api device

* feat(menu): menu update

* feat(menu): remove bold style from text menu

* feat(menu): remove bold style from children

* fix: testing nuxt config

* feat(public): create block and cell for vue

* feat(public): create field for vue

* feat(public): create label for vue

*  enhance (lib): adjust libs

*  feat (encounter): add entry

*  enhance (public): adjust path

*  feat (nav-header): implement filter component with search and date range

*  feat (encounter): add small entry form for sep

*  feat (rehab): implement rehab registration home component

* chore: refactor entry for equipment and tools

* adjust layout

* adjust some pub components

* adjust some conent

* chore: update nuxt config

* fix: adjustment list and entry for material

* fix: change integrate material

* feat(material): finishing integration of material

* feat(material): add toast

* feat(material): update entry form

* chore: add handler parent

* feat(device): update handler of device

* feat(device): update list

* feat(medicine): add models + service

* feat(medicine): add handlers

* dev, hotfix: change primary color

* dev, hotfix: adjust darkmode primary color

* feat(medicine-method): integrate + refactor entry

* chore: restucture list and entry form

* feat(medicine-method): refactor + integrate

* feat(medicine-group): refactor + integrate

* feat(medicine-group): refactor list

* feat(menu): change menu

* chore: modify service and hanler

* feat(uom): integrate api for uom

* feat(uom): crate form, list and integrate

*  feat (encounter): implement assesment function module

*  feat (pub): adjust data table

*  feat (encounter): add patient search and add functionality to entry form

* feat/layout-cleaning: merapikan style pada layout + custom ui

* feat/menu-structure-update: done

* feat/menu-structure-update-3: adjustment

* feat/tidy-up:
- mengurangi elm yg tidak diperlukan
- menyesuaikan font-size sesuai breakpoint

* feat(medicine): modify entry-form, create handler and service

* feat(medicine): integrate medicine api

* dev: hotfix, build error on importing form

* chore: modify handlers to reusable function

* feat(medicine): finishing form + list

* feat(unit): add unit and installation service models

* feat(unit): add specialist service models

* feat: add specialist, subspecialist and division handlers

* feat(division): create handler for division position

* feat(division): fix schemas

* feat: restructure list

* feat(unit): integrate unit api

* feat(unit): finishing integrate unit

* feat(specialist): integrate specialist

* feat(specialist): finishing integrate specialist

* feat(subspecialist): finishing integrate specialist

* feat/layout-cleaning:
- font responsif untuk navheader
- colon + gap pada doc entry
- ukuran font lebih responsif untuk button

* feat/layout-cleaning: penyesuaian kecil doc-entry

* dev: hotfix, enconter process

* dev: hotfix, avoid ts warning

* dev: hotfix
+ data table
+ genCrudHandler
+ crud-base

* feat/consultation-82: done

* dev: hotfix
+ dropped quick-info patient
+ added quick-info encounter
+ text-area styling

* dev: hotfix refactor
+ merged pub/custom-ui and pub/base into my-ui
- droped pub/custom-ui

* feat/consultation-82: adjustment to refactor

* dev: hotfix, navigation

* dev: hotfix, added userQueryCRUD

* feat/consultation-82: wip

* feat/consulation-82: done

* feat/device-order-58: wip

---------

Co-authored-by: Munawwirul Jamal <57973347+munaja@users.noreply.github.com>
Co-authored-by: Khafid Prayoga <khafidp@pm.me>
Co-authored-by: Abizrh <abizarah857@gmail.com>
Co-authored-by: mrifai-cata <muhammad.rifai@trycata.com>
Co-authored-by: riefive <rie.five@gmail.com>
Co-authored-by: Abizarah | 比周 <106458960+Abizrh@users.noreply.github.com>
Co-authored-by: sharedmaxchat <shared.maxchat@gmail.com>
Co-authored-by: Munawwirul Jamal <munawwirul.jamal@gmail.com>
2025-10-22 07:04:02 +07:00
Andrian Roshandy 1b1fac7695 Merge branch 'dev' into feat/device-order-x 2025-10-22 04:28:31 +07:00
Andrian Roshandy 3f77d927b6 feat/encounter: done 2025-10-21 22:48:34 +07:00
Khafid Prayoga 736e951f33 wip: init form entry education assessment
import clinical const from sheets

wip: form entry add education assessment

done: checkbox

wip: add select Asesmen Kemampuan dan Kemauan Belajar
2025-10-21 16:32:19 +07:00
riefive 437d1f3fc7 feat(sep): refactor schema 2025-10-21 14:56:42 +07:00
riefive 539b70b4b7 feat(sep): adjust combobox filter 2025-10-21 14:12:26 +07:00
riefive 25d44323f4 feat(sep): create constant of sep 2025-10-21 13:24:51 +07:00
Andrian Roshandy d8c861d60c Merge branch 'dev' into feat/encounter-status-107 2025-10-21 00:15:01 +07:00
Munawwirul Jamal 27ab7c2e83 Feat/consultation 82 (#126) 2025-10-21 00:03:22 +07:00
Muhammad Rifai 25d0091a19 Fix Dialog Consultation (#124) 2025-10-20 23:41:23 +07:00
Abizrh a6f1abb20f enhance (soapi): update payload 2025-10-20 20:26:01 +07:00
Abizrh 77c26171bb Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/integrasi-assessment-medis-114 2025-10-20 20:09:39 +07:00
Abizrh cb0d73acf4 feat (soapi): integrate early,rehab,function 2025-10-20 17:33:05 +07:00
riefive 0a62d95d3a feat(sep): testing save of sep 2025-10-20 15:50:25 +07:00
riefive e009ff4c89 feat(sep): implement save sep 2025-10-20 15:34:05 +07:00
riefive 74aadc4f75 feat(sep): implement diagnose on sep form 2025-10-20 14:56:53 +07:00
riefive 7650e1e0e0 fix: save list of visitor 2025-10-20 14:16:52 +07:00
riefive dc22f598fb fix: resolve conflict again 2025-10-20 14:15:48 +07:00
riefive 9647cfa3ff feat(sep): integrate visit sep 2025-10-20 14:14:17 +07:00
riefive 499548c770 feat(sep): implement dpjp 2025-10-20 13:56:45 +07:00
riefive c3a7352fb8 feat(sep): fix get patient data 2025-10-20 13:56:45 +07:00
riefive afb67e68f0 feat(sep): implement table history 2025-10-20 13:56:45 +07:00
riefive 86c0544990 feat(sep): add service vclaim dpjp 2025-10-20 13:56:45 +07:00
riefive 45b0450236 feat(sep): testing integrate reference 2025-10-20 13:56:45 +07:00
riefive 240e5d68b7 feat(sep): modify server request for vclaim 2025-10-20 13:56:45 +07:00
riefive f10ef61f4a feat(sep): add vclaim region service + fix server req 2025-10-20 13:56:45 +07:00
riefive ad56cf60ac fix: resolve conflict 2025-10-20 13:56:37 +07:00
riefive c5814985d1 feat(sep): add preview sep 2025-10-20 13:55:18 +07:00
riefive 0cb06b764b feat(sep): add value of patient when click search patient 2025-10-20 13:55:18 +07:00
riefive f4534c25c5 feat(sep): modify schema 2025-10-20 13:55:18 +07:00
riefive ba79251d36 fix(sep): fixing pagination and schema 2025-10-20 13:55:18 +07:00
riefive e5df79c2fa fix(sep): integrate search + pagination on patient 2025-10-20 13:55:18 +07:00
riefive d9e49a7907 fix: change kode-penunjang inside block 2025-10-20 13:55:18 +07:00
riefive d90aff061c fix(sep): add fetch patient 2025-10-20 13:55:18 +07:00
riefive fb6dd750b9 fix(sep): adjustment schema + style 2025-10-20 13:55:18 +07:00
Andrian Roshandy 0b4420620d Merge branch 'dev' into feat/device-order-58 2025-10-20 13:35:00 +07:00
riefive 22d163931e feat(sep): implement dpjp 2025-10-20 13:24:43 +07:00
riefive 3fa2951c06 feat(sep): fix get patient data 2025-10-20 12:01:51 +07:00
riefive 832858f1e5 feat(sep): implement table history 2025-10-20 11:53:53 +07:00
Andrian Roshandy 02b2b7657c Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into dev 2025-10-20 11:24:54 +07:00
Andrian Roshandy 39af6052e7 feat/device-order-58: wip 2025-10-20 11:22:54 +07:00
riefive a95bdfcdb4 feat(sep): add service vclaim dpjp 2025-10-20 10:25:34 +07:00
Munawwirul Jamal e1942d1b70 Merge pull request #123 from dikstub-rssa/feat/consultation-82
Feat/consultation 82
2025-10-20 10:15:38 +07:00
riefive 65b6de2e6f fix: resolve conflict after pull 2025-10-20 09:48:22 +07:00
riefive 151383a3d4 feat(sep): testing integrate reference 2025-10-20 09:42:58 +07:00
munawwirul_jamal f3b45f2cb1 feat/consulation-82: done 2025-10-20 09:34:42 +07:00
munawwirul_jamal e1358c0d9e Merge branch 'dev' into feat/consultation-82 2025-10-19 22:56:00 +07:00
munawwirul_jamal 5dc5eade53 Merge branch 'dev' into feat/consultation-82 2025-10-19 22:54:37 +07:00
Munawwirul Jamal ae2a924177 Merge pull request #122 from dikstub-rssa/feat/encounter
feat/encounter: improved processing needs
2025-10-19 22:00:09 +07:00
munawwirul_jamal 761fe4e0ed feat/encounter: improved processing needs 2025-10-19 21:57:17 +07:00
munawwirul_jamal 971ff14682 dev: hotfix, params for svc crud-base 2025-10-19 21:56:24 +07:00
munawwirul_jamal 8d3e8350ce Merge branch 'dev' into feat/consultation-82 2025-10-19 06:30:09 +07:00
munawwirul_jamal c4eeda5777 Merge branch 'dev' into feat/consultation-82 2025-10-19 06:27:59 +07:00
Munawwirul Jamal db55bf776b Merge pull request #121 from dikstub-rssa/feat/encounter
Feat/encounter
2025-10-19 06:26:52 +07:00
munawwirul_jamal cc29ad1ff7 Merge branch 'dev' into feat/encounter 2025-10-19 06:24:44 +07:00
Munawwirul Jamal 485446adbf Merge pull request #118 from dikstub-rssa/feat/patient-63
wip: Feat/patient 63
2025-10-18 06:56:08 +07:00
munawwirul_jamal 07c5b80199 feat/patient-63: cleaning 2025-10-18 06:55:56 +07:00
munawwirul_jamal 8b869f6d4d Merge branch 'dev' into feat/patient-63 2025-10-18 06:53:32 +07:00
munawwirul_jamal 723cd2c7b3 dev: compact styling 2025-10-18 06:52:12 +07:00
munawwirul_jamal 708d5d6975 feat/patient-63: cleaning and resolve conflict 2025-10-18 06:47:17 +07:00
munawwirul_jamal 0c24befd29 Merge branch 'dev' into feat/patient-63 2025-10-17 16:54:30 +07:00
munawwirul_jamal e6717e2b6d dev: hotfix, content header adjustment 2025-10-17 16:53:44 +07:00
munawwirul_jamal 6f8eed1280 dev: hotfix, content header adjustment 2025-10-17 16:53:07 +07:00
munawwirul_jamal 397d744f34 dev: hotfix, improvements
+ components/pub/my-ui/data-table
+ components/pub/ui/badge
+ lib/date
2025-10-17 16:53:07 +07:00
munawwirul_jamal 60f2d8378c dev: hotfix, data table
+ deepFetch for nested field
+ sampel
2025-10-17 16:53:06 +07:00
munawwirul_jamal 2b8c16043a dev: hotfix, default API_ORIGIN 2025-10-17 16:53:06 +07:00
munawwirul_jamal ad94e1d06f dev: hotfix, styling
+ sidebar
+ modal and dialog
2025-10-17 16:53:06 +07:00
Munawwirul Jamal 4adf31516e Merge pull request #120 from dikstub-rssa/feat/clinical-src-119
feat(clinical): impl diagnose, procedure, medical action CRUD
2025-10-17 16:46:26 +07:00
Khafid Prayoga f4dadd67f8 feat(medical-action-src): add type code selection with strict typing
- Add medicalActionTypeCode constants and type definition
- Update MedicalActionSrc interface to use strict type for type_code
- Implement select dropdown for type code in entry form
- Enable type code validation in schema
2025-10-17 16:23:51 +07:00
riefive d6ca09d065 feat(sep): modify server request for vclaim 2025-10-17 15:59:15 +07:00
riefive db15ddfb9a feat(sep): add vclaim region service + fix server req 2025-10-17 15:18:46 +07:00
riefive 90ab600755 feat(sep): testing vclaim monitoring 2025-10-17 14:34:21 +07:00
Khafid Prayoga 2b8bf55e8a feat(medical-action): implement medical action source management
- Add medical action source list component with pagination and search
- Create CRUD operations for medical action source
- Implement form entry and validation for medical action source
- Add confirmation dialog for delete operations
2025-10-17 13:20:29 +07:00
Khafid Prayoga 7ed5177127 rename directory to match backend service apis 2025-10-17 11:12:20 +07:00
Khafid Prayoga 1b61265f8c feat(diagnose-src): implement diagnose source CRUD functionality
- Add diagnose source list, entry form, and related components
- Create services, handlers, and schemas for diagnose source operations
2025-10-17 11:08:21 +07:00
Khafid Prayoga 1ba37e46e1 feat(mcu-procedure): add procedure source management feature
- Implement procedure source list view with pagination and search
- Add create, read, update, and delete operations for procedure sources
- Include form validation using zod schema
- Set up data table configuration for procedure listing
- Add confirmation dialogs for delete operations
- Update delete record confirmation based on list config delKeyNames
2025-10-17 10:31:03 +07:00
Khafid Prayoga c4593eba09 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/clinical-src-119 2025-10-17 09:21:54 +07:00
munawwirul_jamal 53a1b7d4ae feat/encounter: wip 2025-10-17 02:19:12 +07:00
munawwirul_jamal 61a3e8597b dev: hotfix, improvements
+ components/pub/my-ui/data-table
+ components/pub/ui/badge
+ lib/date
2025-10-17 02:18:25 +07:00
Khafid Prayoga 586c043411 feat(mcu-src): add new medical checkup source pages
Add index pages for medical checkup source features including diagnosis, procedure, and medical action lists
2025-10-16 16:42:02 +07:00
munawwirul_jamal a4fb33dc3e dev: hotfix, data table
+ deepFetch for nested field
+ sampel
2025-10-16 16:06:02 +07:00
Khafid Prayoga f7d9027037 feat(side-menu): add new menu items for MCU section
Add procedure, diagnosis, and medical action links to the MCU section of the side menu to improve navigation and user access to these features
2025-10-16 15:53:57 +07:00
Khafid Prayoga 9b38689f79 feat(models): add source models for medical entities
Add new model interfaces and generators for diagnose, procedure, medical action and its items. These models will be used as base structures for medical data processing.
2025-10-16 15:35:29 +07:00
riefive b25b463725 feat(sep): add preview sep 2025-10-16 14:33:16 +07:00
Khafid Prayoga 070239270e feat(patient): add patient handler and refactor form submission
- Introduce new patient handler using genCrudHandler for CRUD operations
- Refactor patient entry form to use handler for save operations
- Separate form data composition from submission logic
- Handle file uploads and navigation after successful submission
2025-10-16 14:04:00 +07:00
riefive e942975f02 feat(sep): add value of patient when click search patient 2025-10-16 13:30:14 +07:00
riefive d7e4ed9345 feat(sep): modify schema 2025-10-16 13:02:18 +07:00
munawwirul_jamal cc848a662f dev: hotfix, default API_ORIGIN 2025-10-16 12:56:50 +07:00
munawwirul_jamal 3ad14f68ef Merge branch 'dev' into feat/consultation-82 2025-10-16 07:58:54 +07:00
munawwirul_jamal bf831edead dev: hotfix, styling
+ sidebar
+ modal and dialog
2025-10-16 05:28:40 +07:00
munawwirul_jamal 72f2e86601 feat/consultation-82: wip 2025-10-16 04:46:06 +07:00
munawwirul_jamal a4dc7d72ec chore: modified gitignore and readme 2025-10-16 03:24:15 +07:00
munawwirul_jamal c8ec0410e6 Merge branch 'dev' into feat/consultation-82 2025-10-15 20:13:47 +07:00
Khafid Prayoga 20b96ab7e4 wip: data masih dead pixel upload sukses 2025-10-15 16:37:46 +07:00
riefive 9a0a9f68bf fix(sep): fixing pagination and schema 2025-10-15 16:01:19 +07:00
riefive a4ea6665af fix(sep): integrate search + pagination on patient 2025-10-15 13:49:42 +07:00
Khafid Prayoga 4976916780 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63 2025-10-15 12:45:40 +07:00
riefive 10177da308 fix: change kode-penunjang inside block 2025-10-15 09:51:44 +07:00
munawwirul_jamal 1cae6de418 dev: chore, update .gitgnore 2025-10-15 07:57:43 +07:00
munawwirul_jamal 1a5427cf55 dev: hotfix, chore on .vscode dir 2025-10-15 07:56:35 +07:00
munawwirul_jamal 32c815a6e5 dev: hotfix, cleaning data-table 2025-10-15 07:37:57 +07:00
riefive 76992b09f2 fix(sep): add fetch patient 2025-10-14 14:28:21 +07:00
Khafid Prayoga dd0c2864c7 wip: file upload basic 2025-10-14 13:41:15 +07:00
Khafid Prayoga ed9dcd9753 refactor(select-birth-place): simplify regency selection by removing pagination
Remove pagination and search functionality from regency selection as they're not needed in this context. Replace ComboboxPaginated with simpler Combobox component and adjust useRegencies composable options accordingly.
2025-10-14 13:01:01 +07:00
Khafid Prayoga bc286f16c8 wip: select regency paginated
todo: search reactive

wip: paginated regency

todo: search bind

wip gess
2025-10-14 11:36:55 +07:00
riefive 0c26be3c07 fix(sep): adjustment schema + style 2025-10-14 09:56:28 +07:00
munawwirul_jamal 0e43bff367 dev: hotfix, added userQueryCRUD 2025-10-13 21:40:12 +07:00
munawwirul_jamal 7ddb14accc dev: hotfix, added userQueryCRUD 2025-10-13 16:38:23 +07:00
Khafid Prayoga c8620e4ed2 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63 2025-10-13 13:13:54 +07:00
Khafid Prayoga 46911514fb refactor: postal region, add new field on list
feat: implement postal region model and update address handling

- Add new PostalRegion model and service
- Replace postalCode with postalRegion in address-related components
- Update schemas and models to use locationType_code consistently
- Add usePostalRegion composable for postal code selection
- Modify patient form to handle address changes more robustly

feat(patient): add ID column and improve date formatting

- Add patient ID column to patient list
- Format dates using 'id-ID' locale in preview
- Update identity number display for foreign patients
- Include passport number for foreign nationals
2025-10-13 13:07:00 +07:00
Andrian Roshandy 7159bd6566 Merge branch 'dev' into fe-prescription-56 2025-10-13 07:45:15 +07:00
Andrian Roshandy ccc9b0bda3 Merge branch 'dev' into fe-prescription-56 2025-10-13 07:44:40 +07:00
Munawwirul Jamal be5768b842 Merge pull request #112 from dikstub-rssa/feat/cleaning
feat/cleaning: complete the pages
2025-10-13 07:37:18 +07:00
munawwirul_jamal 39cfe08a62 feat/cleaning: complete the pages 2025-10-13 07:35:00 +07:00
Andrian Roshandy 6bdee66cc6 feat/encounter: wip 2025-10-13 06:26:30 +07:00
Andrian Roshandy f7c53fc4e5 Merge branch 'dev' into feat/encounter-status-107 2025-10-13 06:24:45 +07:00
munawwirul_jamal cad7ac6a71 dev: hotfix, adjust some inputs 2025-10-12 21:24:35 +07:00
Munawwirul Jamal e71bb4d13d Merge pull request #110 from dikstub-rssa/feat/encounter
Feat/encounter
2025-10-12 16:15:48 +07:00
munawwirul_jamal c31b5a61ff Merge branch 'dev' into feat/encounter 2025-10-12 16:15:27 +07:00
Munawwirul Jamal b649f6cd23 Merge pull request #109 from dikstub-rssa/feat/rehab-medical-assessment-76-new
 feat (soapi): introduce early rehab and function forms
2025-10-12 16:11:57 +07:00
munawwirul_jamal 0f7f4f592b feat/encounter: cleaning 2025-10-12 16:10:06 +07:00
Andrian Roshandy a7c7ef6dd8 Merge branch 'dev' into feat/encounter-status-107 2025-10-12 13:27:06 +07:00
Andrian Roshandy 89b051b883 feat/encounter-status-107: wip 2025-10-12 13:18:46 +07:00
munawwirul_jamal f52e516775 dev: hotfix, layout 2025-10-12 13:06:21 +07:00
munawwirul_jamal 966dc1c282 dev: hotfix, more standardization 2025-10-12 12:15:52 +07:00
Andrian Roshandy 743c38804a Merge branch 'dev' into feat/encounter-status-107 2025-10-12 11:53:03 +07:00
munawwirul_jamal f7b66d2ad8 dev: hotfix, text-size standardization 2025-10-12 11:52:21 +07:00
Andrian Roshandy d6d60e38d0 Merge branch 'dev' into feat/encounter-status-107 2025-10-12 11:49:49 +07:00
munawwirul_jamal 18e00bf89a dev: hotfix, text-size standardization 2025-10-12 11:48:10 +07:00
Andrian Roshandy 9530cdd4f9 Merge branch 'dev' into feat/encounter-status-107 2025-10-12 11:41:49 +07:00
munawwirul_jamal 0d1e469ece dev: hotfix, text-size standardization 2025-10-12 11:40:53 +07:00
munawwirul_jamal 2f2e48dce4 dev: hotfix, combobox test-size 2025-10-12 11:34:27 +07:00
Abizrh bf5109c457 feat (soapi): introduce early rehab and function forms 2025-10-11 21:33:08 +07:00
Andrian Roshandy 0820cb653c Merge branch 'dev' into feat/encounter-status-107 2025-10-11 00:38:10 +07:00
munawwirul_jamal 867c1b4e9e dev: hotfix, moved combobox and datepicker 2025-10-11 00:36:40 +07:00
Andrian Roshandy fff1ce0eb7 Merge branch 'dev' into feat/encounter-status-107 2025-10-11 00:35:16 +07:00
munawwirul_jamal 3a4b2aa6fb dev: hotfix, moved combobox and datepicker 2025-10-11 00:25:44 +07:00
munawwirul_jamal 1a3edd5a1e dev: hotfix, moved combobox and datepicker 2025-10-10 23:58:44 +07:00
Muhammad Rifai f94b6d273a Feat Infra (#108)
* fix: adjustment some schemas

* fix(room): fixing integrate unit of room

* feat(warehouse): modify form and integration

* feat(counter): modify form and integration

* feat(screen): add list, form and integration

* feat(screen): add page for public screen

* fix: add on reset state at list

* fix: solve list of relation

* feat(chamber): integrate form to api chamber

* feat(bed): integrate form to api bed

* fix: add searching function on list service

* fix: rewrite style for dropdown and tree select

* fix: add sort params

* fix: add sort params on division + medicine

* feat(division-position): layouting form + list

* fix: add sort params for getValueList

* chore: modify side menu style

* chore: fix ui dashboard

* feat(division-position): add content list

* feat(division-position): add temporary page

* feat(division-position): modify content and entry form
2025-10-10 20:36:07 +07:00
Khafid Prayoga 44433d67c8 refactor(select-relations): replace hardcoded options with relationshipCodes constant
Use the centralized relationshipCodes constant from lib/constants instead of maintaining a duplicate list of options. This improves maintainability and ensures consistency across the application.
2025-10-10 15:36:55 +07:00
Khafid Prayoga 7f6e0cc1fd refactor(patient): rename PatientEntity to Patient and update related components
Update interface name from PatientEntity to Patient for better clarity and consistency. Modify all related components and models to use the new interface name. Also includes minor improvements to address handling in patient forms.
2025-10-10 15:36:55 +07:00
Khafid Prayoga ea04f33ad1 refactor(address): update address models and forms to use standardized fields
- Add preload relationships to address-related models
- Rename postalCode to postalCode_code for consistency
- Simplify location type handling with hidden fields
- Update validation schemas and form components
- Improve address display in patient preview
2025-10-10 15:36:54 +07:00
Khafid Prayoga a5d5e8acd1 refactor(patient): restructure patient data handling to use nested properties
Move address, contact and relative data into nested properties of Person model
Update preview component to access data through person object
Remove separate props for addresses, contacts and relatives
2025-10-10 10:30:00 +07:00
Khafid Prayoga bd4a269fad feat(patient): add callback url support for patient creation
Add callback URL parameter to redirect after successful patient creation. The URL can be passed via 'return-path' query parameter and will include the created patient's ID. This enables seamless integration with external systems that need to handle post-creation flows.
2025-10-09 20:21:06 +07:00
Khafid Prayoga 33f17e54b1 refactor(person-address): change postal_code to camelCase postalCode
Update all references to postal_code field to use camelCase postalCode for consistency with codebase naming conventions. This includes changes to models, schemas, and components.
2025-10-09 19:51:57 +07:00
Khafid Prayoga 91da0a1af9 feat(patient): add occupation code support and update job selection
- Replace hardcoded job options with dynamic list from constants
- Update patient preview to display occupation by code if available
- Expand occupation codes in constants with comprehensive list
2025-10-09 19:15:21 +07:00
Khafid Prayoga ed972019dc Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63 2025-10-09 18:50:14 +07:00
Khafid Prayoga 5121422658 adjust: improve regency select based on new useRegencies composable to explicit pull all data with no limitation, because it has a province code 2025-10-09 18:46:58 +07:00
Khafid Prayoga e0867cb59f wip: paginated regencies 2025-10-09 11:38:42 +07:00
Khafid Prayoga 1f93fc2c81 refactor(composables): update API query params and improve code style
- Standardize parameter naming with hyphens instead of underscores
- Remove page size limit and enable no-limit flag for all region queries
- Improve arrow function syntax consistency and formatting
2025-10-09 10:13:00 +07:00
Khafid Prayoga 4f0c1f4318 fix(refactor): kena timpa ges sepertinya 2025-10-08 16:41:40 +07:00
Khafid Prayoga 3ffc28fdeb fix(refactor): kena timpa ges sepertinya 2025-10-08 16:20:37 +07:00
Khafid Prayoga 55239606af feat(patient): address integration to backend apis
feat(patient): add newborn status field and validation

- Add radio button component for newborn status selection
- Update patient schema with newborn status validation
- Remove deprecated alias field from person model
- Refactor disability type handling in patient schema

fix(patient): correct address comparison logic and schema

Update the patient address comparison to use boolean instead of string '1' and modify the schema to transform the string value to boolean. This ensures consistent type usage throughout the application.

feat(models): add village and district model interfaces

Add new model interfaces for Village and District with their respective generator functions. These models will be used to handle administrative division data in the application.

feat(address): implement dynamic province selection with caching

- Add province service for CRUD operations
- Create useProvinces composable with caching and loading states
- Update select-province component to use dynamic data
- Export SelectItem interface for type consistency
- Improve combobox styling and accessibility

feat(address-form): implement dynamic regency selection with caching

- Add new regency service for CRUD operations
- Create useRegencies composable with caching and loading states
- Update SelectRegency component to use dynamic data based on province selection
- Improve placeholder and disabled state handling

feat(address-form): implement dynamic district selection

- Add district service for CRUD operations
- Create useDistricts composable with caching and loading states
- Update SelectDistrict component to use dynamic data
- Remove hardcoded district options and implement regency-based filtering

feat(address-form): implement dynamic village selection with caching

- Add village service for CRUD operations
- Create useVillages composable with caching and loading states
- Update SelectVillage component to fetch villages based on district
- Remove hardcoded village options in favor of API-driven data

feat(address-form): improve address selection with debouncing and request deduplication

- Add debouncing to prevent rapid API calls when selecting addresses
- Implement request deduplication to avoid duplicate API calls
- Add delayed form reset to ensure proper composable cleanup
- Add isUserAction flag to force refresh when user changes selection
2025-10-08 15:58:22 +07:00
munawwirul_jamal f94ccd707b Merge branch 'feat/consultation-82' into fe-prescription-56 2025-10-08 08:00:01 +07:00
munawwirul_jamal 06476756fb fe-prescription-56: wip 2025-10-08 07:58:48 +07:00
munawwirul_jamal 51d1221318 Merge branch 'dev' into feat/consultation-82 2025-10-08 07:55:22 +07:00
Munawwirul Jamal 3eb9dde21d Dev cleaning (#106) 2025-10-08 00:03:36 +07:00
Andrian Roshandy fdbcfed87f Merge branch 'dev' into fe-prescription-56 2025-10-07 03:10:19 +07:00
Munawwirul Jamal bd66a8887d Merge pull request #103 from dikstub-rssa/feat/fe-integrasi-org-src-72
Feat - Integrasi Org Src
2025-10-07 03:07:46 +07:00
riefive ba61d05257 fix: adjustment division app + flow 2025-10-06 12:42:08 +07:00
riefive 8601d4a4fd fix: remove shared handlers 2025-10-06 11:07:05 +07:00
riefive fff5f2c11d fix: update content list of specialist, subspecialist, etc 2025-10-06 11:06:29 +07:00
riefive 301cb82803 fix: update list medicine 2025-10-06 11:00:14 +07:00
riefive 3003ec9d80 fix: update list division + equipment 2025-10-06 10:45:15 +07:00
riefive d1bcd6e66c fix: update some service 2025-10-06 10:38:10 +07:00
riefive 78ae8a8aa0 fix: medicine method and group 2025-10-06 10:26:25 +07:00
riefive 8eaf95dd3e fix: update service for unit and uom 2025-10-06 10:20:05 +07:00
riefive 58c0dde377 fix: update handler for unit and uom 2025-10-06 10:14:51 +07:00
riefive fe23c75aca fix: update some service and handlers 2025-10-06 10:09:24 +07:00
Andrian Roshandy 4da896a242 Merge branch 'dev' into fe-prescription-56 2025-10-06 09:55:24 +07:00
riefive ecdc5d80d9 fix: update device service and handler 2025-10-06 09:51:31 +07:00
riefive 45ea70d415 fix: update crud base 2025-10-06 09:44:48 +07:00
riefive 51ddb9d8b5 fix: resolve conflict 2025-10-06 09:40:22 +07:00
munawwirul_jamal 19e00fa143 dev: hotfix, moved encounter to pub/component 2025-10-06 08:26:08 +07:00
Andrian Roshandy 285c3ee4e5 Merged Stash 2025-10-06 07:56:29 +07:00
Andrian Roshandy 421159971e feat/prescription-56: wip 2025-10-06 04:41:21 +07:00
Andrian Roshandy 3a45de413d Merge from Stash 2025-10-06 04:31:08 +07:00
Andrian Roshandy e959c3ae61 Merge branch 'dev' into fe-prescription-56 2025-10-06 04:21:06 +07:00
munawwirul_jamal ad4695c867 dev: hotfix, encounter content back nav 2025-10-06 04:18:55 +07:00
munawwirul_jamal 494d4583e6 Merge branch 'dev' into feat/consultation-82 2025-10-05 16:44:24 +07:00
munawwirul_jamal 2535a86670 dev: hotfix, navigation 2025-10-05 16:43:55 +07:00
munawwirul_jamal e82cfb1ab3 feat/consultation-82: adjustment to refactor 2025-10-05 11:13:40 +07:00
munawwirul_jamal ff97245c8c Merge branch 'dev' into feat/consultation-82 2025-10-05 09:51:22 +07:00
munawwirul_jamal 2da4e616ba dev: hotfix refactor
+ merged pub/custom-ui and pub/base into my-ui
- droped pub/custom-ui
2025-10-05 09:45:17 +07:00
munawwirul_jamal 3dfb2ed137 Merge branch 'dev' into feat/consultation-82 2025-10-05 03:33:52 +07:00
munawwirul_jamal 72627b8a37 dev: hotfix
+ dropped quick-info patient
+ added quick-info encounter
+ text-area styling
2025-10-05 03:32:48 +07:00
munawwirul_jamal 427d97c29f feat/consultation-82: done 2025-10-05 03:30:22 +07:00
riefive 42a54bbb3b fix: solve conflict after pull 2025-10-04 09:07:03 +07:00
riefive a7cbbeeda9 feat(division): fixing logic treeview 2025-10-04 09:05:28 +07:00
riefive 71e0615ee1 feat(division): restructure division parent 2025-10-04 08:49:38 +07:00
riefive f02903e756 feat(division): change parent id to number before integrate 2025-10-04 08:30:19 +07:00
riefive 2e8667a780 feat(division): parent id to default null 2025-10-04 08:30:18 +07:00
riefive e65e562690 feat(division): change form attribute 2025-10-04 08:30:18 +07:00
riefive 9407501c49 feat(division): change compoent combobox to tree select 2025-10-04 08:30:18 +07:00
riefive c5ba07a226 feat(division): create tree item converter for division 2025-10-04 08:30:18 +07:00
riefive 8e7ce771b0 test: call division position 2025-10-04 08:30:18 +07:00
riefive 7edab33427 fix: handler reset state 2025-10-04 08:30:18 +07:00
riefive ce59eac86c fix: list unit 2025-10-04 08:30:18 +07:00
riefive 39d2869ffb fix: list with params error 2025-10-04 08:30:17 +07:00
riefive 3c046a4d82 fix: list integration 2025-10-04 08:30:17 +07:00
riefive 6feb480a51 fix: change get encounter class to constants 2025-10-04 08:30:17 +07:00
riefive d7d984810e remove previous list + form from any features 2025-10-04 08:30:17 +07:00
riefive a6377ef943 fix: includes for unit 2025-10-04 08:30:16 +07:00
riefive b00b9b198e fix: includes for medicine list 2025-10-04 08:30:16 +07:00
riefive 4908f16770 fix: search on list file 2025-10-04 08:30:16 +07:00
riefive 41405ae113 fix: resolve list organization source 2025-10-04 08:30:16 +07:00
riefive 6b69e48bd6 feat(installation): add encounter list 2025-10-04 08:30:16 +07:00
riefive 59847dce34 chore: add shared handlers 2025-10-04 08:30:16 +07:00
riefive e78342829e feat(installation): integrate api installation 2025-10-04 08:30:16 +07:00
munawwirul_jamal ce785f2092 dev: hotfix
+ data table
+ genCrudHandler
+ crud-base
2025-10-04 06:55:12 +07:00
munawwirul_jamal d9cedf8d42 dev: hotfix, avoid ts warning 2025-10-03 21:47:28 +07:00
munawwirul_jamal 6dd9b25145 dev: hotfix, enconter process 2025-10-03 15:10:46 +07:00
riefive 55559a4683 feat(division): change parent id to number before integrate 2025-10-03 15:00:10 +07:00
riefive 2d8c751788 feat(division): parent id to default null 2025-10-03 14:47:02 +07:00
riefive f374f9ef5b feat(division): change form attribute 2025-10-03 12:45:05 +07:00
riefive 1837afce6c feat(division): change compoent combobox to tree select 2025-10-03 11:03:19 +07:00
riefive 539a1cefb0 feat(division): create tree item converter for division 2025-10-03 10:54:35 +07:00
Munawwirul Jamal c251c37273 Merge pull request #101 from dikstub-rssa/feat/layout-cleaning
feat/layout-cleaning: penyesuaian kecil doc-entry
2025-10-03 06:22:36 +07:00
Andrian Roshandy 32c69af4e1 Merge branch 'feat/layout-cleaning' into fe-prescription-56 2025-10-03 06:05:35 +07:00
Andrian Roshandy 10bbee9229 feat/layout-cleaning: penyesuaian kecil doc-entry 2025-10-03 06:03:23 +07:00
Munawwirul Jamal b60daa72f2 Merge pull request #100 from dikstub-rssa/feat/layout-cleaning
feat/layout-cleaning:
2025-10-03 05:58:59 +07:00
riefive 757b8c0444 test: call division position 2025-10-02 15:31:27 +07:00
riefive 378e6773b8 fix: handler reset state 2025-10-02 14:49:55 +07:00
riefive 0e115eed5e fix: list unit 2025-10-02 14:37:17 +07:00
riefive d544d031c3 fix: list with params error 2025-10-02 14:34:19 +07:00
riefive 693d8225bf fix: list integration 2025-10-02 14:12:10 +07:00
Andrian Roshandy 0752855808 Merge branch 'dev' into fe-prescription-56 2025-10-02 12:46:54 +07:00
riefive fc3bda14f4 fix: change get encounter class to constants 2025-10-02 11:16:23 +07:00
riefive 9603915fd7 remove previous list + form from any features 2025-10-02 11:00:05 +07:00
riefive 546423bdfb fix: includes for unit 2025-10-01 15:24:54 +07:00
riefive db48233f6c fix: includes for medicine list 2025-10-01 15:17:31 +07:00
riefive 54a5aaa78f fix: search on list file 2025-10-01 14:56:11 +07:00
riefive cc41118570 fix: resolve list organization source 2025-10-01 14:36:48 +07:00
riefive 6a7a9cda80 feat(installation): add encounter list 2025-10-01 13:05:36 +07:00
riefive c96d738379 chore: add shared handlers 2025-10-01 13:01:24 +07:00
riefive a48f375018 feat(installation): integrate api installation 2025-10-01 12:38:04 +07:00
Andrian Roshandy f83dbfeae3 Merge branch 'feat/layout-cleaning' into fe-prescription-56 2025-10-01 04:02:05 +07:00
Andrian Roshandy f29eb38b1f feat/layout-cleaning:
- font responsif untuk navheader
- colon + gap pada doc entry
- ukuran font lebih responsif untuk button
2025-10-01 04:00:04 +07:00
Munawwirul Jamal c0557cc482 Merge pull request #99 from dikstub-rssa/feat/fe-integrasi-2-90
Integrasi Part 2
2025-10-01 03:15:58 +07:00
riefive 15ca2085bd fix: resolve conflict 2025-09-30 15:13:11 +07:00
riefive 7aeb99db89 feat(subspecialist): finishing integrate specialist 2025-09-30 14:57:32 +07:00
riefive e62d84b812 feat(specialist): finishing integrate specialist 2025-09-30 14:40:50 +07:00
riefive 2f6528e12a feat(specialist): integrate specialist 2025-09-30 14:24:39 +07:00
riefive 181fed37d5 feat(unit): finishing integrate unit 2025-09-30 13:55:34 +07:00
riefive 829758e0d8 feat(unit): integrate unit api 2025-09-30 12:55:00 +07:00
riefive f58c9f537b feat: restructure list 2025-09-30 12:39:48 +07:00
riefive 9e4133b976 feat(division): fix schemas 2025-09-30 11:37:44 +07:00
riefive 18eaef2e37 feat(division): create handler for division position 2025-09-30 09:30:41 +07:00
riefive 70a6e60769 feat: add specialist, subspecialist and division handlers 2025-09-29 13:53:18 +07:00
riefive fa6b99c193 feat(unit): add specialist service models 2025-09-29 13:23:51 +07:00
riefive 050f8964ef feat(unit): add unit and installation service models 2025-09-29 13:20:45 +07:00
riefive 436af7e565 feat(medicine): finishing form + list 2025-09-29 10:35:22 +07:00
riefive b221239c32 chore: modify handlers to reusable function 2025-09-29 10:17:33 +07:00
munawwirul_jamal 001dffaacb dev: hotfix, build error on importing form 2025-09-29 10:16:23 +07:00
riefive 9f950d552d feat(medicine): integrate medicine api 2025-09-29 10:08:56 +07:00
riefive 11e63dde3e feat(medicine): modify entry-form, create handler and service 2025-09-29 09:57:57 +07:00
Andrian Roshandy ba77ed1bb5 Merge branch 'dev' into fe-prescription-56 2025-09-29 08:27:01 +07:00
Munawwirul Jamal 97d36f1279 Merge pull request #98 from dikstub-rssa/feat/tidy-up
feat/tidy-up:
2025-09-29 08:18:55 +07:00
Andrian Roshandy 829bd73034 feat/tidy-up:
- mengurangi elm yg tidak diperlukan
- menyesuaikan font-size sesuai breakpoint
2025-09-29 07:46:13 +07:00
Munawwirul Jamal 1c2876d768 Merge pull request #97 from dikstub-rssa/feat/menu-structure-update-3-96
Feat/menu structure update 3 96
2025-09-29 05:58:32 +07:00
munawwirul_jamal b35cc15749 feat/menu-structure-update-3: adjustment 2025-09-28 22:20:27 +07:00
munawwirul_jamal 9c6547ba63 feat/menu-structure-update: done 2025-09-28 15:56:16 +07:00
Munawwirul Jamal 638c688e3e Merge pull request #95 from dikstub-rssa/feat/layout-cleaning
feat/layout-cleaning: merapikan style pada layout + custom ui
2025-09-28 08:07:44 +07:00
Andrian Roshandy 4fbd8ee757 feat/prescription-56: merapikan models 2025-09-28 07:10:32 +07:00
Andrian Roshandy 2426dcb979 feat/layout-cleaning: merapikan style pada layout + custom ui 2025-09-28 07:08:44 +07:00
Munawwirul Jamal e7851f4dc2 Merge pull request #94 from dikstub-rssa/feat/fe-encounter-68
Feat/fe encounter 68
2025-09-28 01:56:46 +07:00
Abizrh d070be2962 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/fe-encounter-68 2025-09-27 23:16:07 +07:00
Abizrh a5b7b15910 feat (encounter): add patient search and add functionality to entry form 2025-09-27 23:15:01 +07:00
Abizrh dcfadcf4a0 feat (pub): adjust data table 2025-09-27 23:14:56 +07:00
Abizrh f28c7edd62 feat (encounter): implement assesment function module 2025-09-27 22:25:23 +07:00
Munawwirul Jamal fef030f7e5 Merge pull request #93 from dikstub-rssa/feat/fe-integrasi-2-90
Feat: Integrasi Medicine Group, Method, Uom
2025-09-26 21:51:08 +07:00
riefive ca1b0f4cb7 feat(uom): crate form, list and integrate 2025-09-26 16:04:19 +07:00
riefive 867f93af31 feat(uom): integrate api for uom 2025-09-26 15:46:22 +07:00
riefive 5d41e4e60d chore: modify service and hanler 2025-09-26 14:03:44 +07:00
riefive 34a4fc11d0 feat(menu): change menu 2025-09-26 13:18:32 +07:00
riefive 8d2d154141 feat(medicine-group): refactor list 2025-09-26 13:12:48 +07:00
riefive 539629f9a8 feat(medicine-group): refactor + integrate 2025-09-26 13:02:08 +07:00
riefive a6122b9d39 feat(medicine-method): refactor + integrate 2025-09-26 12:52:23 +07:00
riefive 457b927c4f chore: restucture list and entry form 2025-09-26 12:37:47 +07:00
riefive e78521793b feat(medicine-method): integrate + refactor entry 2025-09-26 11:23:05 +07:00
munawwirul_jamal 3464b949b5 dev, hotfix: adjust darkmode primary color 2025-09-25 17:37:48 +07:00
munawwirul_jamal 4fdf8b4745 dev, hotfix: change primary color 2025-09-25 17:30:53 +07:00
Munawwirul Jamal 21f9282cbd Merge pull request #89 from dikstub-rssa/fe-integrasi-device-material-65
Feat: Integrasi Device + Material
2025-09-25 16:54:18 +07:00
riefive 94e8b26fa8 feat(medicine): add handlers 2025-09-25 16:03:01 +07:00
riefive 79fd9db5e2 feat(medicine): add models + service 2025-09-25 15:59:53 +07:00
riefive 46045ebb41 feat(device): update list 2025-09-25 13:33:03 +07:00
riefive e3d3188b1d feat(device): update handler of device 2025-09-25 13:10:34 +07:00
riefive f0f32598f4 chore: add handler parent 2025-09-25 13:03:54 +07:00
riefive 23c8282095 feat(material): update entry form 2025-09-25 12:54:35 +07:00
riefive 2bb38576a9 feat(material): add toast 2025-09-25 11:36:14 +07:00
riefive ff2e0a5c5f Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into fe-integrasi-device-material-65 2025-09-25 08:50:11 +07:00
riefive c3c21f28e7 feat(material): finishing integration of material 2025-09-24 17:12:01 +07:00
riefive 93a5abba36 fix: change integrate material 2025-09-24 16:37:03 +07:00
riefive fcabbc25ff fix: adjustment list and entry for material 2025-09-24 15:34:38 +07:00
riefive d0b3d28cdd chore: update nuxt config 2025-09-24 15:01:52 +07:00
Munawwirul Jamal 707a7096dc Merge pull request #88 from dikstub-rssa/feat/public-feature-adjustment
Feat/public feature adjustment
2025-09-24 13:46:52 +07:00
munawwirul_jamal af61f7ca11 adjust some conent 2025-09-24 13:37:46 +07:00
munawwirul_jamal 4a3ef1cf79 adjust some pub components 2025-09-24 13:37:36 +07:00
munawwirul_jamal 67f5910bc7 adjust layout 2025-09-24 13:29:09 +07:00
riefive 7c452c923a chore: refactor entry for equipment and tools 2025-09-24 11:58:01 +07:00
riefive 01acd00b0d Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into fe-integrasi-device-material-65 2025-09-24 11:55:19 +07:00
Munawwirul Jamal d8a02e7449 Merge pull request #87 from dikstub-rssa/feat/fe-public-component-69
Feat: Public Component
2025-09-24 08:13:47 +07:00
Munawwirul Jamal b474a37a69 Merge pull request #86 from dikstub-rssa/feat/fe-menu-structure-update-3-71
Feat: Menu structure Update
2025-09-24 08:00:53 +07:00
Abizrh 887db6f2a2 feat (rehab): implement rehab registration home component 2025-09-23 23:05:22 +07:00
Abizrh 03697f9cea feat (encounter): add small entry form for sep 2025-09-23 21:15:59 +07:00
Abizrh 4a480548df feat (nav-header): implement filter component with search and date range 2025-09-23 19:42:08 +07:00
Abizrh 4acc8cf3f4 enhance (public): adjust path 2025-09-23 19:41:48 +07:00
Abizrh 688e79680f feat (encounter): add entry 2025-09-23 19:41:14 +07:00
Abizrh 18e6824611 enhance (lib): adjust libs 2025-09-23 19:40:19 +07:00
riefive b0171fce21 feat(public): create label for vue 2025-09-23 12:02:28 +07:00
riefive b50dfe1183 feat(public): create field for vue 2025-09-23 12:00:15 +07:00
riefive 43a80f92e6 feat(public): create block and cell for vue 2025-09-23 11:58:45 +07:00
riefive 0fbd2aca6a fix: testing nuxt config 2025-09-23 11:50:46 +07:00
riefive 7c4de1bd91 feat(menu): remove bold style from children 2025-09-22 13:59:52 +07:00
riefive 8cfff2aef4 feat(menu): remove bold style from text menu 2025-09-22 13:53:40 +07:00
riefive 200c83a4ad feat(menu): menu update 2025-09-22 13:50:24 +07:00
riefive 6b950f7682 feat(device): integrate api device 2025-09-22 13:39:36 +07:00
riefive 1e5b872f05 feat(material): update with processing 2025-09-19 16:14:41 +07:00
riefive 8aa6d3b6f8 feat(material): retest material 2025-09-19 16:08:42 +07:00
riefive 70378a69e9 feat(material): modify handlers and service of material 2025-09-19 15:23:09 +07:00
Munawwirul Jamal 806eace4ef Merge pull request #62 from dikstub-rssa/fe-refactor-division-40
feat(division): add tree-select component for recursive division parent-child relations
2025-09-19 07:50:44 +07:00
Munawwirul Jamal d792893545 Merge pull request #66 from dikstub-rssa/fe-public-features-46
Feat(public): Implement Dark Mode + Adjustment Padding Frame
2025-09-19 07:49:33 +07:00
riefive 29b54b072c feat(material): create service get for material and uom 2025-09-18 13:42:35 +07:00
riefive 117e72fdce feat(material): create model interface of material 2025-09-18 13:19:15 +07:00
Munawwirul Jamal 3ff5d5dfaa Merge pull request #64 from dikstub-rssa/fix/header-panel
nav(header): add breadcrumb
2025-09-18 12:03:31 +07:00
Khafid Prayoga ed56c4201f feat(breadcrumb): add breadcrumb component and update header integration
- Implement new breadcrumb component with proper routing handling
- Update header to use new breadcrumb component
- Optimize nuxt config for SPA with router and rendering settings
2025-09-17 15:57:21 +07:00
riefive be218e2087 feat(public): add padding dynamic in main frame 2025-09-17 13:20:03 +07:00
Khafid Prayoga f0c7d678cd Merge remote-tracking branch 'origin/dev' into fe-refactor-division-40 2025-09-17 11:09:39 +07:00
Munawwirul Jamal 9ce5038e62 Merge pull request #47 from dikstub-rssa/fe-specialist-intern-35
Fe specialist intern 35
2025-09-17 10:22:41 +07:00
Munawwirul Jamal f94dac1444 Merge pull request #45 from dikstub-rssa/fe-specialist-subspecialist-39
feat(specialist&sub-specialist): impl list and form entry
2025-09-17 10:22:19 +07:00
Munawwirul Jamal cd22e15261 Merge pull request #44 from dikstub-rssa/fe-sep-38
Feat: SEP List and Form
2025-09-17 10:21:52 +07:00
Abizrh 19c0966dee feat (specialist-intern): add specialist intern feature 2025-09-17 00:52:01 +07:00
Khafid Prayoga 0ae1923f27 refactor(division): move entry logic to shared config file
Extract division form configuration and tree logic from entry.vue component into a shared entry.ts file. This improves code organization and reusability while maintaining the same functionality.
2025-09-16 16:00:16 +07:00
Khafid Prayoga c5ec8ccd32 fix(select-tree): adjust tree node indentation and alignment logic
- Add level prop to track node hierarchy
- Fix indentation calculation for leaves and nodes
- Simplify alignment logic based on node level
2025-09-16 15:14:37 +07:00
riefive e5fe4d1c96 feat(public): frame padding for dashboard 2025-09-16 12:59:11 +07:00
riefive 01057b9138 feat(public): implement dark mode 2025-09-16 12:51:36 +07:00
riefive e02360aea5 feat(public): add setting dark or light mode 2025-09-16 12:34:37 +07:00
Khafid Prayoga b106b1d23e Merge remote-tracking branch 'origin/dev' into fe-refactor-division-40 2025-09-16 11:23:06 +07:00
Abizrh 64f52c1262 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into fe-specialist-intern-35 2025-09-15 19:18:26 +07:00
Abizrh 746e16ebe8 🐛 fix (auth): redirect unauthenticated users to login page 2025-09-15 19:10:35 +07:00
Khafid Prayoga a63c364170 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into fe-specialist-subspecialist-39 2025-09-15 14:43:03 +07:00
Khafid Prayoga 56056c3fdb fix(pagination): format record numbers with locale for indonesia
Apply toLocaleString('id-ID') to startRecord and endRecord to display numbers in Indonesian format
2025-09-15 14:42:36 +07:00
Khafid Prayoga 06caccf3cd feat(subspecialist): add subspecialist management components and pages
- Implement list view with pagination and search functionality
- Create form for adding subspecialist entries
- Add configuration for subspecialist data validation and dropdown options
2025-09-15 14:21:15 +07:00
Khafid Prayoga 566627239b feat(pagination): add reusable pagination component and update list views
- Create new PaginationView component to standardize pagination display
- Update multiple list components to use the new PaginationView
- Make paginationMeta prop required in list components
2025-09-15 11:01:18 +07:00
munawwirul_jamal 792dbd7392 dev: missing merge conflict 2025-09-15 10:18:24 +07:00
Khafid Prayoga 790c76be56 style(form/select): improve select component styling and focus state
- Add focus outline and ring styles to SelectTrigger
- Conditionally apply text color based on modelValue
- Simplify SelectItem template structure
2025-09-12 15:26:23 +07:00
riefive d0ce15730d feat(sep): add dialog for confirm delete 2025-09-12 14:53:06 +07:00
Khafid Prayoga 87c36b94ea feat(specialist): add installation-unit relationship to specialist form
- Implement installation-unit mapping and filtering logic
- Update entry form to handle installation selection and unit filtering
- Add installation and unit dropdowns with combobox components
2025-09-12 14:42:05 +07:00
Khafid Prayoga 41d87623e2 feat(combobox): add disabled prop and improve styling
- Add disabled prop to combobox component to support disabled state
- Update styling to include better focus states and border color
2025-09-12 14:39:52 +07:00
riefive 96ee2c78d2 feat(sep): add table history sep 2025-09-12 14:26:13 +07:00
riefive fdbfcb29ff feat(sep): change button export to dropdown 2025-09-12 14:13:33 +07:00
riefive bfb6cc39bf feat(sep): remove not used variables 2025-09-11 14:55:03 +07:00
riefive 42d39bd08b feat(sep): create filter on sep list 2025-09-11 14:53:25 +07:00
Khafid Prayoga 865bbbdce9 init specialist feature 2025-09-11 14:46:50 +07:00
riefive 3e3aa670ae feat(sep): update grid column 2025-09-11 13:36:27 +07:00
riefive 9638f208f1 feat(sep): update filter function 2025-09-11 13:33:26 +07:00
Khafid Prayoga 26b0cf12e3 refactor(api): consolidate query param transformation into utility function
Move URL parameter construction logic from multiple list components to a shared transform function in usePaginatedList. This improves code reuse and maintainability while keeping the same functionality.

Standardize query parameter names to match backend expectations ('page-number' and 'page-size' instead of 'page' and 'pageSize'). Update related schema and default params accordingly.
2025-09-11 13:28:07 +07:00
riefive bbb0ac03d4 feat(sep): create filter patient + sep 2025-09-11 13:26:32 +07:00
riefive 5b5f821848 fix: resolve conflict after merge dev 2025-09-11 12:00:38 +07:00
Munawwirul Jamal 17a15d0e96 Merge pull request #43 from dikstub-rssa/feat/user
Feat/user
2025-09-11 11:02:57 +07:00
Khafid Prayoga 140bfa0420 init specialist feature 2025-09-11 10:13:40 +07:00
Khafid Prayoga ba6485a3e7 feat(division): wip tree select component
feat(division): update division list components and add mock api

- Replace patient API endpoint with division mock endpoint
- Simplify table columns and headers for division list
- Add mock API endpoint for division list with tree/flat format

feat(select-tree): add collapsible tree select component with lazy loading

Implement a tree select component with collapsible sections and lazy loading of child items. Includes:
- Collapsible component wrappers for Vue
- Command component wrappers for combobox functionality
- Tree select item component with loading states
- Example implementation in dev page

todo:
- scroll on overflow
- long text truncate possibly with tooltip
- more than > 5 depth of child
- mutate the children lazy
- integration backend for search based text and return  keys

feat(select-tree): add command-item component for tree selection

adjust hover bg-accent (remove state on-highlighted at styling) to avoid conflict on global component

refactor(select-tree): extract TreeItem interface to shared type file

Move TreeItem interface to a dedicated type file for better code organization and reusability. Update components to import the interface and add styling improvements to the tree-select component.

adjust text size for tree to sm

refactor(select-tree): rename tree-select-item to leaf and improve component

- Rename component to better reflect its purpose as a leaf node
- Improve UI with better spacing and hover states
- Simplify toggle logic using v-model
- Add checkmark icon for selected items

checkpoint

wip
2025-09-11 09:50:18 +07:00
Abizrh a68f6b9eb0 🐛 fix (employee): fix user entry component on employee add page 2025-09-11 01:00:16 +07:00
Abizrh 8762424e2e feat (app): add person form 2025-09-11 00:59:54 +07:00
Abizrh 053a540638 enhance (pub): adjust form label 2025-09-11 00:57:12 +07:00
Abizrh 64d432f75a enhance (lib): adjust libs 2025-09-11 00:56:36 +07:00
riefive 9d58eae1bf feat(sep): change to update value from datepicker 2025-09-10 15:48:48 +07:00
riefive fb8fde65d5 feat(sep): update datepicker component 2025-09-10 15:19:40 +07:00
riefive 582bd67cbe feat(sep): modify form entry with calendar select 2025-09-10 14:37:54 +07:00
riefive 32544e9b0b feat(sep): modify form entry with support code input 2025-09-10 14:04:34 +07:00
riefive 1f335f671d feat(sep): modify form entry with radio input 2025-09-10 13:37:03 +07:00
riefive 93d13cf28c feat(sep): update form entry 2025-09-10 13:17:37 +07:00
riefive 93f5ba0092 feat(sep): add form entry 2025-09-10 12:56:34 +07:00
riefive d9262b42f5 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into fe-sep-38 2025-09-10 12:37:32 +07:00
sharedmaxchat 1f87d6f6a4 Merge pull request #42 from dikstub-rssa/fe-alat-kesehatan-26
Feat Equipment Tools: Update Form
2025-09-10 10:52:46 +07:00
sharedmaxchat 32152d5fba Merge pull request #21 from dikstub-rssa/feat/user
Feat/user
2025-09-10 07:24:39 +07:00
Abizrh 938278a7a2 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/user 2025-09-09 15:08:20 +07:00
riefive e6442a0d31 feat(sep): add list component 2025-09-09 13:30:51 +07:00
Munawwirul Jamal 4f4f11ca84 Merge pull request #37 from dikstub-rssa/fe-bmhp-25
Feat Equipment Material: Update Form
2025-09-09 12:50:39 +07:00
Munawwirul Jamal 3edfedbca0 Merge pull request #41 from dikstub-rssa/22-fe---menu-structure
 feat (sys): update side menu items and icons
2025-09-09 12:29:43 +07:00
Abizrh f7d8d90f95 feat (sys): update side menu items and icons 2025-09-09 11:39:51 +07:00
Abizrh a208bbad9c Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/user 2025-09-08 15:23:51 +07:00
riefive 0ae612af72 fix: solve conflict 2025-09-08 14:41:26 +07:00
riefive d936529c4a fix: solve conflict 2025-09-08 14:40:28 +07:00
Munawwirul Jamal 266d5f740b Merge pull request #36 from dikstub-rssa/refactor/mv-flow-to-content
Refactor/mv flow to content
2025-09-08 14:31:44 +07:00
riefive 875fc92f53 refactor(tools): remove entry flow 2025-09-08 13:55:27 +07:00
riefive 8a4b4c06e9 refactor(tools): change content of tools 2025-09-08 13:50:38 +07:00
riefive 56389263ae refactor(tools): add modal form 2025-09-08 13:48:24 +07:00
Khafid Prayoga b436737f62 Merge branch 'dev' into refactor/mv-flow-to-content 2025-09-08 13:41:33 +07:00
riefive bb74662f15 refactor(equipment): change submit flow 2025-09-08 13:14:24 +07:00
riefive f6fc9103c9 chore: change sys.json for equipment 2025-09-08 13:10:43 +07:00
riefive 9cb8dd9caf refactor(equipment): add modal form to component list 2025-09-08 13:09:55 +07:00
Munawwirul Jamal e2ba3c070c Merge pull request #31 from dikstub-rssa/feat/equipment-material
Feat Equipment Material
2025-09-08 12:07:17 +07:00
Khafid Prayoga cae8ca73fd refactor(tools-equipment): replace flow components with content components
- Update device and material pages to use Content prefixed components instead of Flow
- Add new content components for device and material list/entry functionality
- Maintain same functionality while improving component naming consistency
2025-09-08 11:17:47 +07:00
Khafid Prayoga b0938a2eb6 feat(org-src): replace flow components with content components and add list views
Add new content components for unit, division, and installation with list views, entry forms, and validation schemas. Replace Flow*List components with Content*List components in org-src pages. Includes pagination, search functionality, and CRUD operations for each entity type.
2025-09-08 11:09:35 +07:00
Khafid Prayoga 97199cee3b feat(integration): adjust route pages based on sys conf 2025-09-08 10:57:16 +07:00
riefive 354ed82df1 fix: solve conflict at material entry 2025-09-08 10:30:26 +07:00
Munawwirul Jamal 2b41d5f163 Merge pull request #34 from dikstub-rssa/30-fe---item-itemprice
Feat Item, Item Price and Rename flow > content
2025-09-08 08:53:15 +07:00
Munawwirul Jamal 8e52689726 Merge pull request #32 from dikstub-rssa/feat/equipment-device
Feat Equipment Device
2025-09-08 08:51:52 +07:00
Munawwirul Jamal bc8c6b8033 Merge pull request #20 from dikstub-rssa/feat/org-src
feat/org src implement entry form for division, unit, and installation
2025-09-08 08:48:43 +07:00
Abizrh ea2076d097 📖 docs (readme): update component directory structure and descriptions 2025-09-07 22:59:57 +07:00
Abizrh 263f9dbc7f ⚠️ refactor (components): rename flow components to content 2025-09-07 22:58:18 +07:00
Abizrh cdebdb8995 feat (item): add item and item price modules 2025-09-07 22:50:15 +07:00
Abizarah | 比周 24420d642c Merge pull request #33 from dikstub-rssa/23-fe---medicine-source
23 fe   medicine source
2025-09-07 21:43:48 +07:00
Abizrh 88577dbec5 🐛 fix (medicine-type): fix medicine type list display 2025-09-07 21:40:57 +07:00
Abizrh 3d329cb106 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into 23-fe---medicine-source 2025-09-07 21:39:49 +07:00
Abizrh e640a6d44c feat (medicine-method): implement medicine method fetching 2025-09-07 20:43:14 +07:00
Abizrh c3c9154d0e ⚠️ refactor (medicine-method): simplify entry form and list configuration 2025-09-07 20:37:24 +07:00
Abizrh eb9c918141 ⚠️ refactor (medicine-group): simplify entry form and list configuration 2025-09-07 20:34:22 +07:00
Abizrh 4117b79365 feat (medicine): add medicine group model 2025-09-07 20:17:34 +07:00
Abizrh 210946922d feat (medicine): add medicine model and dto 2025-09-07 20:16:18 +07:00
Abizrh 302bcb3e2a feat (medicine): implement medicine entry form and list 2025-09-07 20:09:31 +07:00
Abizrh e9cbb09bc5 feat (pub): add base modal 2025-09-07 20:08:43 +07:00
Abizrh 6f4230da04 feat: register schemas and services 2025-09-07 20:08:03 +07:00
riefive abd98336c1 fix: resolve conflict at sys.json again 2025-09-06 15:28:52 +07:00
riefive 5a7fe0e2d6 fix: resolve conflict at sys.json 2025-09-06 15:11:28 +07:00
riefive ffa4a7d191 refactor(material): modify validation uom and item 2025-09-04 16:21:10 +07:00
Khafid Prayoga d9a675be05 refactor(composables): extract pagination logic into usePaginatedList composable
- Remove duplicate schema.query.ts files from unit, division, and installation components
- Create new usePaginatedList composable to centralize pagination logic
- Update list.vue components to use the new composable
- Maintain same functionality while reducing code duplication
2025-09-04 16:19:51 +07:00
riefive 21d087e496 refactor(material): add zod validation for stock field as number and display error message after submit in 2025-09-04 15:55:32 +07:00
riefive 209f78df0a feat(material): change menu material to equipment 2025-09-04 14:56:23 +07:00
Khafid Prayoga 39d96e7b24 feat(unit): implement unit management flow with list and form components
- Add schema validation and default query params for unit management
- Create list view with pagination, search, and delete functionality
- Implement form entry with validation for creating/editing units
- Replace placeholder content with functional unit list component
- Remove unused unit add page and update page titles
2025-09-04 13:17:06 +07:00
Khafid Prayoga 3dbc1b8fd1 refactor(pagination): move pagination info display to component and improve layout
- Consolidate pagination info display logic in pagination component
- Remove duplicate computed properties from list components
- Improve pagination layout with better spacing and responsiveness
- Add skeleton loading support to data tables
2025-09-04 11:26:58 +07:00
Munawwirul Jamal 1ee3772e80 Merge pull request #27 from dikstub-rssa/22-fe---menu-structure
22 fe   menu structure
2025-09-04 09:34:04 +07:00
Abizrh 0f046de3ac ⚠️ refactor (employee): remove unused employee pages 2025-09-03 22:14:29 +07:00
Abizrh 5ce3ff05cd feat (human-src): implement employee add and index pages with rbac 2025-09-03 22:12:16 +07:00
Abizrh bdc3e837f9 enhance (appsidebar): improve sidebar navigation spacing and appearance 2025-09-03 22:11:58 +07:00
Abizrh 38e40416d3 feat (medicine): add medicine management modules 2025-09-03 20:33:19 +07:00
Khafid Prayoga 6c70beb882 refactor(org-src): remove unused division and installation add pages
move to modal based form entry (bcz its simple form)
2025-09-03 17:03:05 +07:00
Khafid Prayoga 4c0312e487 feat(installation): implement installation list with pagination and search
refactor(installation): move form schema and configuration to separate files
fix(installation): update page title and content display
2025-09-03 17:00:49 +07:00
Khafid Prayoga 646c7b6d73 fix(flow): prevent outside click on division form dialog
Add prevent-outside prop to Dialog component to avoid accidental closure
2025-09-03 16:07:39 +07:00
riefive 0435371e1c feat (device): update entry form of device 2025-09-03 15:47:07 +07:00
riefive 81fa38275a feat (material): update validation with error label 2025-09-03 15:41:55 +07:00
riefive 3c74a123ac feat (material): update validation of attribute stock 2025-09-03 15:39:06 +07:00
riefive 06a26c8b07 feat: add RBAC role-based access control and permission checks to device index page 2025-09-03 15:34:59 +07:00
Khafid Prayoga a3905dd9b9 feat(data-table): add skeletonSize prop to customize loading rows
Add optional skeletonSize prop to control the number of skeleton rows displayed during loading. Defaults to 5 if not provided.
2025-09-03 15:34:11 +07:00
Khafid Prayoga a9c286bd0a feat(division): impl division list+entry
feat(form): add accessibility improvements to form components

- Add labelFor prop to Label component for better form element association
- Enhance Combobox with ARIA attributes for better screen reader support
- Update form fields with proper IDs and label associations

feat(pagination): adjust button width based on page number length

Add dynamic button sizing for pagination items to accommodate different digit lengths (1-99, 100-999, 1000+). This improves visual consistency when displaying varying page numbers.

feat(modal): add reusable dialog component and refactor division form

- Create new Dialog.vue component with configurable size and outside click prevention
- Replace inline dialog implementation in division list with new Dialog component
- Fix formatting in entry-form.vue

feat(data-table): add click handling for action cells

Implement handleActionCellClick function to manage click events on action cells, triggering dropdown buttons when clicked outside interactive elements. Add cursor-pointer class and click handler to action cells for better UX.

refactor(custom-ui): centralize action event strings in types

Replace hardcoded action event strings with constants from types.ts to improve maintainability and reduce potential typos

feat(confirmation): add reusable confirmation modal components

- Implement base confirmation.vue component with customizable props
- Create record-specific record-confirmation.vue for data operations
- Add comprehensive README.md documentation for usage
- Integrate confirmation flow in division list component

refactor(components): move dialog component to base directory and update imports

The dialog component was moved from custom-ui/modal to base/modal to better reflect its shared usage across the application. All import paths referencing the old location have been updated accordingly.

refactor(select): reorganize imports and adjust conditional formatting

- Reorder imports in Select.vue for better organization
- Adjust logical operator formatting in SelectContent.vue for consistency
2025-09-03 15:13:44 +07:00
riefive 6afa968b7b feat (material): update logic validate 2025-09-03 12:50:41 +07:00
riefive e5d995b9ee feat (material): add zod validation for stock field to ensure number input in entry-form 2025-09-03 12:23:21 +07:00
Khafid Prayoga b6d30eb154 refactor(division): extract entry form to separate component and improve form handling
- Move form logic from list component to dedicated entry-form component
- Implement proper form submission and cancellation handlers
- Add type safety with DivisionFormData interface
- Improve form validation using vee-validate
- Refresh data after successful form submission
2025-09-02 16:49:19 +07:00
Khafid Prayoga add19f33a2 feat(data-table): add size prop to action components
Add size prop configuration to action components in data table to allow consistent sizing. Update dropdown action component to accept size prop with default value.
2025-09-02 16:25:32 +07:00
Khafid Prayoga 664849e15b feat(division): add form dialog for creating new division
- Implement dialog form with validation schema for division creation
- Add combobox component for parent division selection
- Include form submission handling with reset and error states
- a11y
2025-09-02 16:14:40 +07:00
mrifai-cata da9830e16d feat (material): modify entry form of materiak 2025-09-02 15:59:02 +07:00
mrifai-cata 7e4444a427 feat (material): add form material 2025-09-02 14:04:33 +07:00
mrifai-cata f29c9abad8 feat (material): add list material 2025-09-02 13:58:10 +07:00
Khafid Prayoga 132068fcde feat(division): implement division list with pagination and search
- Add schema validation for query parameters
- Create pagination component with type definitions
- Implement division list view with search functionality
- Add data table configuration for division listing
- Handle pagination state and URL synchronization
2025-09-01 15:08:55 +07:00
Khafid Prayoga b1b324e688 refactor(data-table): improve type safety and component rendering
- Replace generic 'any' types with specific type imports for better type safety
- Add optional chaining for funcComponent to prevent potential runtime errors
- Update funcHtml and funcParsed to include rowIndex parameter in callbacks
2025-09-01 11:35:02 +07:00
Abizrh 1631a85204 feat (models): define employee and user data models 2025-08-31 17:35:13 +07:00
Abizrh 8f2623b15e 📖 docs (readme): add validation documentation 2025-08-31 17:28:11 +07:00
Abizrh f5209154ee feat (form): add stacked layout option for form fields 2025-08-31 17:21:23 +07:00
Abizrh f9af69fd27 feat (employee): add based component & conditional form input 2025-08-31 17:21:09 +07:00
Khafid Prayoga 529b8ef7df feat(installation): add installation entry form and pages
- Create new installation entry form component with validation
- Add installation list and add pages with basic routing
- Implement custom select component for encounter class selection
- Update SelectTrigger styling for better icon positioning
2025-08-29 16:33:20 +07:00
Abizrh 2b4ec07185 ⚠️ refactor (sysmenu): rename user menu to employee menu 2025-08-29 15:08:24 +07:00
Abizrh a4d18e45db ⚠️ refactor (human-src): rename user components to employee 2025-08-29 14:54:00 +07:00
Khafid Prayoga 5e1775d057 feat(unit): add unit management pages and form components
- Create new unit list and add pages under org-src feature
- Implement unit entry form with validation using zod
- Update error types to support readonly path property
- Refactor field component to use shared error type
2025-08-29 13:39:59 +07:00
Khafid Prayoga ee3bb1cd6e refactor(error): move error types to centralized location
Consolidate XError, XErrors, and FormErrors types into a single file for better maintainability and consistency across the codebase.
2025-08-29 11:04:59 +07:00
Khafid Prayoga d6b288404f feat(division): add division management pages and form validation
- Create new division list and add pages
- Implement form validation using zod and error handling
- Add useFormErrors composable for form error management
- Update division entry form with validation support
- Add error styling in main.css
2025-08-29 10:42:07 +07:00
Khafid Prayoga 2a74c0a2c7 feat(division): add entry form and view components for division management 2025-08-28 15:29:48 +07:00
Khafid Prayoga 89710d9768 feat(combobox): add reusable combobox component with search and selection
Implement a combobox component with search functionality and item selection. The component supports displaying item labels with optional codes, maintains selected item state, and provides customizable placeholders. Items are sorted with selected items first followed by alphabetical order.
2025-08-28 15:24:14 +07:00
Khafid Prayoga c773edce8c Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/org-src 2025-08-28 13:37:44 +07:00
Munawwirul Jamal 28634d8a64 Merge pull request #19 from dikstub-rssa/feat/user
Feat/user
2025-08-28 12:29:34 +07:00
Khafid Prayoga 71dfd6545c feat: add new components for unit, division and installation
Add list and entry-form components for unit, division and installation modules
2025-08-28 12:25:05 +07:00
Abizrh 00d4419bc7 Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/user 2025-08-28 12:01:55 +07:00
munawwirul_jamal 7fdd5c61f0 chore: modified gitignore and readme 2025-08-28 08:11:20 +07:00
Abizrh a48ac7cc68 feat (user): implement user entry form with status and type selection 2025-08-28 02:03:32 +07:00
Abizrh 4cb2e92235 enhance (pub): adjust component 2025-08-28 02:03:27 +07:00
Abizrh 1824427b62 ⚠️ refactor (form): remove unused components and logic from entry forms 2025-08-28 01:24:48 +07:00
Abizrh 2e889e70a6 ⚙️ chore (eslint): relax eslint stylistic rules 2025-08-28 01:19:15 +07:00
Abizrh 35e2c663f5 feat (user): implement user management feature 2025-08-28 01:18:55 +07:00
Abizrh a7a77cb497 feat (dev): add dev page with user list 2025-08-27 23:59:07 +07:00
Khafid Prayoga 6ad99d45f2 Fix/linter (#10)
* fix(style): formatting inconsistencies across codebase

- Remove trailing semicolons from TypeScript imports
- Fix Vue template indentation and line breaks
- Standardize component attribute formatting
- Remove unnecessary empty lines
- Reorder import statements for consistency

* chore: update import path and add editorconfig

Update SidebarNavLink import path to match new component structure and add standard editorconfig for consistent code formatting
2025-08-27 13:06:40 +07:00
Khafid Prayoga 6b1c7a6b37 Merge pull request #9 from dikstub-rssa/feat/satusehat
Feat/satusehat
2025-08-27 09:58:10 +07:00
Khafid Prayoga d4cdbb063d docs: add Shadcn Vue documentation link to README 2025-08-26 17:09:32 +07:00
Khafid Prayoga 04b87733d5 build: add vscode launch config and tailwind config
Add launch configuration for Chrome debugging in VSCode and set up TailwindCSS configuration with animations and theme customization
2025-08-26 17:05:08 +07:00
Khafid Prayoga 153c171a3b refactor(ui): migrate button and pagination components to radix-vue
- Replace reka-ui imports with radix-vue in Button component
- Update pagination components to use direct radix-vue icons
- Simplify button variants styling and adjust size variants
- Remove unused data-slot attribute from Button component
2025-08-26 16:57:11 +07:00
Khafid Prayoga e21e5f1e7a refactor(ui): improve layout consistency and table styling
- Add container borders and padding for better visual hierarchy
- Standardize table cell borders across components
- Reset query params to defaults when changing resource type
- Clear data on fetch error to prevent stale data display
- Translate "No data available" to Indonesian
2025-08-26 15:15:14 +07:00
Khafid Prayoga 5685b31c48 feat(satusehat): implement query schema and improve data table
- Add schema.query.ts for query validation with zod
- Move constants to const.ts for better organization
- Refactor list.vue to use new query schema and constants
- Add empty state handling to data-table.vue
2025-08-26 13:10:09 +07:00
Khafid Prayoga de7a833ddc Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/satusehat 2025-08-25 14:58:45 +07:00
Khafid Prayoga 31084be5ce feat(loading-state): add loading indicators and skeleton UI for data tables
- Implement loading state management across patient, doctor and satusehat lists
- Add skeleton loading UI for data tables during data fetching
- Refactor loading state variable naming for consistency
- Make search nav optional in header component
- Update icon sizing in header for better responsiveness
- Implement url search params query state at satusehat
2025-08-25 13:33:28 +07:00
Abizarah | 比周 a4d8086b6c Merge pull request #8 from dikstub-rssa/fix/structure
Fix/structure
2025-08-25 10:09:25 +07:00
Abizrh f7815da6fc Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into fix/structure 2025-08-25 10:07:24 +07:00
Abizrh 61b71f7e76 ⚠️ refactor (components): restructure components to custom-ui 2025-08-25 09:59:44 +07:00
Khafid Prayoga 92d6e2af10 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/satusehat 2025-08-22 11:34:40 +07:00
Khafid Prayoga b9d72af02f Merge pull request #7 from dikstub-rssa/fix/shadcnui-import-alias
refactor(ui): update import paths from @/lib/utils to ~/lib/utils
2025-08-22 11:19:36 +07:00
Khafid Prayoga ae0acf84d0 refactor(ui): update import paths from @/lib/utils to ~/lib/utils
Standardize import paths across UI components to use ~/lib/utils alias instead of @/lib/utils for better consistency and maintainability.
2025-08-22 11:18:06 +07:00
Khafid Prayoga a5f9e3fc68 feat(satusehat-mock): implement API Mock integration with filtering and pagination
- Add new API endpoint for fetching SatuSehat data with filtering capabilities
- Implement client-side data fetching with status, resource type, date range and search filters
- Add pagination support with server-side pagination handling
- Improve UI with loading states and pagination controls
2025-08-21 16:28:01 +07:00
Khafid Prayoga 6fe1bd2c48 feat(satusehat): add search component, card summary and date picker
- Implement search component with lucide-vue-next icon
- Create card summary component for displaying summary data
- Add date picker component with range selection functionality
- Update list configuration and styling
- Reorganize package.json structure
2025-08-21 14:43:42 +07:00
Khafid Prayoga e4b634e76a Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/satusehat 2025-08-21 10:02:38 +07:00
Abizrh 746d39ea14 feat (rehab): implement sep prosedur registration flow 2025-08-21 06:31:17 +07:00
Khafid Prayoga d913724d62 feat(satusehat): add patient list components and integration
- Implement badge components for patient and status display
- Create list component with configurable table columns
- Add entry form for new patient registration
- Integrate with existing SatuSehat service flow
2025-08-20 14:50:17 +07:00
Khafid Prayoga bd98bb815a refactor: update type casting and clean up imports
- Add type casting for route.meta.title in index.vue
- Update tailwind css path in components.json
- Remove unused imports and simplify dashboard component
2025-08-20 14:49:59 +07:00
Khafid Prayoga ff67dd5146 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/satusehat 2025-08-20 09:38:49 +07:00
Abizrh 5e4184d45a feat (doctor): implement doctor entry form and navigation 2025-08-19 17:57:32 +07:00
Abizrh 83b1c2cad3 feat (rehab): add rehab feature pages and menu items 2025-08-19 17:13:45 +07:00
Khafid Prayoga 8fc097d92f feat(patient): add status badge component for patient list
Implement a new status badge component to visually indicate patient status (active/inactive) in the patient list. The badge uses different colors based on status code and is integrated into the list configuration.
2025-08-19 17:04:49 +07:00
Khafid Prayoga 341c27679c refactor(data-table): improve type safety and rendering logic
- Replace ambiguous `object` types with more specific type definitions
- Separate HTML rendering from plain text interpolation for better security
- Simplify template logic by removing nested ternary operations
2025-08-19 16:51:21 +07:00
Khafid Prayoga 1b84ce3c62 feat(doctor): add status badge component for doctor list
Replace hardcoded status text with a reusable status badge component to improve consistency and maintainability. Remove console.log statement and adjust column widths in the list configuration.
2025-08-19 16:40:53 +07:00
Khafid Prayoga 3e6e773313 style: add loader state on acquiring token 2025-08-19 15:50:17 +07:00
Khafid Prayoga 066a884bf0 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/satusehat 2025-08-19 11:05:03 +07:00
Khafid Prayoga b1cb24cae3 feat(satusehat): add integration pages and components
Add new SatuSehat integration feature including:
- Page components for list, add, edit, and detail views
- Service status component and type definitions
- Summary card component updates for string metrics
- RBAC permissions configuration for SatuSehat routes
2025-08-19 11:01:28 +07:00
Abizarah | 比周 ec5339d563 Merge pull request #5 from dikstub-rssa/feat/doctor
feat(doctor): implement list and create form resource
2025-08-19 07:55:50 +07:00
Abizrh e8fa690ba3 ⚙️ chore (index): update page metadata and roles 2025-08-15 17:09:32 +07:00
Abizrh fe46db6bc6 feat (dashboard): implement dashboard page with summary cards and quick actions 2025-08-15 16:30:48 +07:00
Khafid Prayoga cbb38c0275 impl data table list of doctor 2025-08-15 13:54:54 +07:00
Khafid Prayoga 025fc821fc Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/doctor 2025-08-14 16:57:09 +07:00
Abizrh 878211bc7f ⚠️ refactor (form): refactor label component for improved styling and responsiveness 2025-08-14 16:33:19 +07:00
Khafid Prayoga 4f2782a934 init form add doctor 2025-08-14 14:59:47 +07:00
Khafid Prayoga b22d606a17 Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/doctor 2025-08-14 11:05:20 +07:00
Khafid Prayoga 616c843260 init doctor page 2025-08-14 10:55:25 +07:00
Abizrh 0b59f48fdb feat (patient): set dynamic title for patient pages 2025-08-14 10:43:00 +07:00
Khafid Prayoga bcfbc3af67 Merge remote-tracking branch 'origin/dev' into feat/doctor 2025-08-14 10:32:16 +07:00
Abizrh 922820f1b0 feat (base): introduce base data table component 2025-08-13 17:04:54 +07:00
Abizrh bb12d363c4 📖 docs (readme): add code conventions and important note 2025-08-13 16:57:53 +07:00
Abizrh 46826ce421 📖 docs (readme): add page creation guidelines 2025-08-13 16:44:01 +07:00
Abizrh 67ccb21b49 🐛 fix (rbac): use userStore to determine user roles 2025-08-13 16:37:32 +07:00
Abizrh f89cd09646 feat (appsidebar): load menu from json file 2025-08-13 15:19:03 +07:00
Khafid Prayoga 1b6c161448 init doctor base feature 2025-08-13 14:45:28 +07:00
Abizrh a6558e312b feat (appsidebar): add outpatient menu and pages 2025-08-13 14:38:31 +07:00
Abizrh 89eaa7cdab feat (app): add toaster component for global notifications 2025-08-13 13:59:05 +07:00
Abizrh 929758fe00 🎨 enhance (layout): improve default layout styling 2025-08-13 13:24:56 +07:00
Abizrh d8d7d61fca enhance (auth): clear store on 401 and redirect to /401 2025-08-13 13:17:21 +07:00
Abizarah | 比周 d5c453450f Merge pull request #4 from dikstub-rssa/feat/patient
Feat/patient: add summary card analytics
2025-08-13 10:48:16 +07:00
Khafid Prayoga b51f4c248d Merge remote-tracking branch 'origin/dev' into feat/patient 2025-08-13 10:24:49 +07:00
Abizrh ccb249cbe8 🐛 fix (error): conditionally render error page based on authentication 2025-08-13 10:17:34 +07:00
Abizrh db9a87d825 feat (patient): add error page for patient add page permission 2025-08-13 10:12:12 +07:00
Abizrh 6e5d5863ab feat (sidebar): add active class to sidebar links 2025-08-12 18:17:13 +07:00
Abizrh d0e55217ed feat (pub/nav): add dropdown action components 2025-08-12 17:07:10 +07:00
Abizrh 7ae9a9adfe feat (patient): implement patient list and entry form 2025-08-12 17:01:50 +07:00
Khafid Prayoga 949aa718b6 add condition if zero trends , hide the timeframe 2025-08-12 14:58:29 +07:00
Khafid Prayoga cc26415486 refactor(flow/patient): use Summary Card and loading state ♻️
- Replace inline cards with `PubBaseSummaryCard`
- Add `isLoading.summary` and mock `getPatientSummary()` 
- Render skeleton while loading; show data when ready 
- Update icons and remove `cn` 🧹
- Call `getPatientSummary()` and `getPatientList()` on mount 🚀
2025-08-12 14:38:40 +07:00
Khafid Prayoga 7f7dfe0a02 feat(pub/base): add reusable Summary Card + Summary type
- Add `summary-card.vue` with skeleton state 
- Add `summary-card.type.ts` with `Summary` interface and timeframe mapping 📅
2025-08-12 14:38:20 +07:00
Abizrh 500cdb6a21 🐛 fix (input): correct input border color and search input border 2025-08-12 14:18:20 +07:00
Abizrh adf189dab9 🐛 fix (sidebar): fix sidebar user info when user is not logged in 2025-08-12 14:03:07 +07:00
Abizrh dc5e7d48da feat (error-pages): add custom error pages 2025-08-12 13:16:07 +07:00
Abizrh 125d7857ce feat (rbac): implement role-based access control 2025-08-12 11:32:36 +07:00
Khafid Prayoga cecd591f47 impl summary card patient 2025-08-11 16:02:36 +07:00
Abizrh 59db7a8479 feat (form): add form components 2025-08-11 09:41:09 +07:00
Abizarah | 比周 6d123f691c Merge pull request #1 from dikstub-rssa/feat/dashboard
Feat/dashboard
2025-08-10 17:10:40 +07:00
Abizrh 5d09d409fd Merge branch 'dev' of https://github.com/dikstub-rssa/simrs-fe into feat/dashboard 2025-08-10 17:09:31 +07:00
Abizrh 659a320439 feat (header): add button click functionality 2025-08-10 17:08:09 +07:00
Abizrh 66db96b9b6 feat (auth): implement global authentication middleware 2025-08-10 16:47:07 +07:00
Abizrh 0515f8628f feat (patient): add example api request 2025-08-10 15:54:41 +07:00
Abizrh 8705ba8fe4 enhance (auth): change component name 2025-08-10 15:53:49 +07:00
Abizrh f2511e225d feat (server/api): add api proxy to forward request 2025-08-10 15:51:42 +07:00
Abizrh 81de7f0438 feat (pinia): register stores 2025-08-10 15:50:32 +07:00
Abizrh cb77624026 enhance (layout): adjust base layout 2025-08-10 15:49:31 +07:00
Abizrh 53e9658424 enhance (auth): adjust component 2025-08-10 15:48:49 +07:00
Abizrh d4dc345d26 feat (composables): add xfetch 2025-08-10 15:47:55 +07:00
Abizrh 0ede7c0529 🧹 chore: clean up 2025-08-10 15:46:15 +07:00
Abizrh 376af79449 feat (patient): add edit page 2025-08-08 20:38:16 +07:00
Abizrh 9cf1ab7550 ⚙️ chore (style): remove redundant font-family from body 2025-08-08 14:53:28 +07:00
Abizrh d9fb2cff0c 📖 docs (appsidebar): translate sidebar heading to indonesian 2025-08-08 14:53:09 +07:00
Abizrh 992c54fcd5 feat (styles): introduce main.css for base styles and css variables 2025-08-08 14:46:04 +07:00
Abizrh d40ce3eacb ⚙️ chore (env): add example env file 2025-08-08 11:44:42 +07:00
Abizrh 5bb1130103 📖 docs (readme): update git workflow instructions 2025-08-08 11:31:18 +07:00
Abizrh 2e01715df4 ⚙️ chore (config): add tailwind css and components config 2025-08-08 11:30:48 +07:00
Abizrh 92d8359803 feat (dashboard): add initial dashboard page 2025-08-08 11:08:35 +07:00
Abizrh cd202434c6 feat (static): add logo 2025-08-08 11:08:16 +07:00
Abizrh 153a346a47 feat (app): add middleware 2025-08-08 11:07:46 +07:00
Abizrh 44533af1b5 feat (style): add uno config 2025-08-08 11:07:14 +07:00
Abizrh 96fd731859 📖 docs (readme): add git workflow documentation 2025-08-08 10:06:43 +07:00
Abizrh 0ea774a169 📖 docs (readme): clarify component usage and workflow in readme 2025-08-08 09:21:58 +07:00
Abizrh 856ccf4537 📖 docs (readme): update directory structure and workflows documentation 2025-08-07 17:36:47 +07:00
Abizrh 2ecabaffb2 feat (auth): server side proxy login request 2025-08-07 16:29:06 +07:00
Abizrh d9bd19baaf 📖 docs (readme): add framework guide links 2025-08-07 15:54:48 +07:00
Abizrh 98820553d4 🐛 fix (auth): fix password input type and button variant 2025-08-07 15:51:18 +07:00
Abizrh 8f6c386bbb 🐛 fix (auth): fix logout redirection path 2025-08-07 15:29:02 +07:00
Abizrh ad1bad719a feat (layout): implement app layout with sidebar and header 2025-08-07 15:05:59 +07:00
Abizrh 53399910e1 feat (auth): add auth layout with testimonial 2025-08-07 15:03:13 +07:00
Abizrh b294d0095b feat (auth): implement login page 2025-08-07 14:52:55 +07:00
Abizrh 8854f017b8 feat (layout): add auth layout 2025-08-07 14:50:15 +07:00
Abizrh 1f72497ab4 📖 docs (readme): add nuxt minimal starter documentation 2025-08-07 14:46:27 +07:00
Abizrh 645383e5cb feat (ui): add radix vue components library 2025-08-07 14:45:37 +07:00
Abizrh f3dc250944 ⚙️ chore (eslint): configure eslint and prettier 2025-08-07 14:43:51 +07:00
Abizrh 992036437b ⚙️ chore (dependencies): install nuxt, vue and vue-router 2025-08-07 09:23:26 +07:00
Munawwirul Jamal 08a4459723 Initial commit 2025-07-22 15:30:22 +07:00
1681 changed files with 122114 additions and 9 deletions
+30
View File
@@ -0,0 +1,30 @@
# top-most EditorConfig file
root = true
# Default settings for all files
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
# For Markdown files, don't trim trailing whitespace (karena kadang dipakai untuk line break)
[*.md]
trim_trailing_whitespace = false
# For JSON, YAML, and config files
[*.{json,yml,yaml}]
indent_style = space
indent_size = 2
# For JS, TS, Vue files
[*.{js,ts,vue}]
indent_style = space
indent_size = 2
# For CSS, SCSS, PostCSS
[*.{css,scss,pcss}]
indent_style = space
indent_size = 2
+16
View File
@@ -0,0 +1,16 @@
NUXT_MAIN_API_ORIGIN=
NUXT_BPJS_API_ORIGIN=
NUXT_API_VCLAIM_SWAGGER= # https://vclaim-api.multy.chat
NUXT_SYNC_API_ORIGIN=
NUXT_API_ORIGIN=
SSO_CONFIRM_URL =
X_AP_CODE=rssa-sso
X_AP_SECRET_KEY=sapiperah
KEYCLOAK_LOGOUT_REDIRECT=http://localhost:3000/
# test local
KEYCLOAK_REALM=rssa_testing
KEYCLOAK_URL=http://127.0.0.1:8080/
CLIENT_ID=portal-simrs-new
+25 -8
View File
@@ -1,11 +1,28 @@
# ---> Vue
# gitignore template for Vue.js projects
#
# Recommended template: Node.gitignore
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# TODO: where does this rule come from?
docs/_book
# Node dependencies
node_modules
# TODO: where does this rule come from?
test/
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example
# editor
.vscode
*.swp
+11
View File
@@ -0,0 +1,11 @@
{
"useTabs": false,
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 120,
"semi": false,
"plugins": ["prettier-plugin-tailwindcss"],
"htmlWhitespaceSensitivity": "ignore",
"singleAttributePerLine": true
}
+33
View File
@@ -0,0 +1,33 @@
# Build Stage
FROM node:24-alpine AS build-stage
# Set the working directory inside the container
WORKDIR /app
# Enable pnpm using corepack
RUN corepack enable
# Copy pnpm related files and package.json to leverage Docker layer caching
COPY package.json pnpm-lock.yaml ./
# Install dependencies using pnpm
# Using --frozen-lockfile ensures consistent installations based on pnpm-lock.yaml
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store pnpm install --frozen-lockfile
# Copy the rest of the application files
COPY . .
# Build the Vue.js application for production
RUN pnpm build
# Production Stage
FROM nginx:stable-alpine AS production-stage
# Copy the built Vue.js application from the build stage to Nginx's web root
COPY --from=build-stage /app/dist /usr/share/nginx/html
# Expose port 80 for Nginx
EXPOSE 80
# Command to run Nginx in the foreground
CMD ["nginx", "-g", "daemon off;"]
+75
View File
@@ -0,0 +1,75 @@
# Nuxt Minimal Starter
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
## Setup
Make sure to install dependencies:
```bash
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
```
## Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
```
## Production
Build the application for production:
```bash
# npm
npm run build
# pnpm
pnpm build
# yarn
yarn build
# bun
bun run build
```
Locally preview production build:
```bash
# npm
npm run preview
# pnpm
pnpm preview
# yarn
yarn preview
# bun
bun run preview
```
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
+111 -1
View File
@@ -1,2 +1,112 @@
# simrsx-fe
# SIMRS - FE
RSSA - Front End
> [!IMPORTANT]
> Read this following instructions before doing your job
## Framework Guide
- [Vue Style Guide](https://vuejs.org/style-guide)
- [Nuxt Style Guide](https://nuxt.com/docs/4.x/guide)
- [Shadcn Vue @radix-ui](https://radix.shadcn-vue.com/)
## Configuration
- `nuxt.config.ts`<br />Nuxt configuration file
- `.env`<br />Some environment variables
## Directory Structure for `app/`
- `app.vue`: Main layout
- `components` : Contains all reusable UI components.
- `components/content` : Entry point for business logic and workflows. Pages or routes call these content components to handle API requests and process application logic
- `components/app` : View-layer components that manage and present data. These are used within `content/` to render or handle specific parts of the UI, and return results back to the content
- `components/pub` : Public/shared components used across different parts of the app.
- `composables` : Contains reusable logic and utility functions (e.g. composables, hooks)..
- `layouts` : Reusable UI layout patterns used across pages.
- `models` : Contains data definitions or interfaces.
- `schemas` : Contains JSON schemas used for validation.
- `services` : Contains reusable API calls and business logic.
## Directory Structure for `app/pages`
- `pages/auth` : Authentication related pages.
- `pages/(features)` : Grouped feature modules that reflect specific business content or domains.
## Directory Structure for `server/`
- `server/api` : API or proxy requests
## Workflows
The basic development workflow follows these steps:
### Define Your Data in `models/`
- Create data definitions or interfaces.
- These should represent the structure of the data used across your app.
### Build UI Components in `components/app`
- Create reusable UI and app specific components.
- Keep components pure, avoid making HTTP requests directly within them.
- They receive data via props and emit events upward.
### Business Logic in `components/content`
- This layer connects the UI with the logic (API calls, validations, navigation).
- It composes components from `components/app/`, `components/pub/`, and other content.
- Also responsible for managing state, side effects, and interactions.
### Create Pages in `pages/`
- Define permissions and guards for each page.
- Pages load the appropriate content from `components/content/`.
- They do not contain UI or logic directly, just route level layout or guards.
### Validation
- UI level validation in `components/app`. help users avoid mistakes before submitting.
- Lightweight/instant validation related to UX.
- Basic formatting (email regex, numeric-only, password length).
- Showing error messages directly under the field.
- Business level validation in `components/flow`. cannot rely only on the UI, since it often requires server-side checks or rules that may change.
- More complex validation rules tied to business logic.
## Code Conventions
- Under the script setup block, putting things in group with the following order:
- Imports → all dependencies, sorted by external, alias (~), and relative imports.
- Props & Emits → clearly define component inputs & outputs.
- State & Computed → all ref, reactive, and computed variables grouped together.
- Lifecycle Hooks → grouped by mounting → updating → unmounting order.
- Functions → async first (fetching, API calls), then utility & event handlers.
- Watchers → if needed, put them at the bottom.
- Template → keep clean and minimal logic, use methods/computed instead of inline JS.
- Declaration Naming
- Uses PascalCase for `type` naming
- Uses camelCase for `variable` and `const` naming
- Underscore can be used to indicates that a variable has derived from an attribute of an object<br />
for example: `person_name` indicates it is an attribute `name` from object `person`
- Looping
- Uses `i`, `j`, `k` as variable for `for` looping index
- Uses `item` as object instantition for `forEach` loop callback
- Uses `item` as object instantition for `v-for` loop callback in the template
## Git Workflows
The basic git workflow follows these steps:
1. Create a new branch on `dev`
- branch name should be `feat/<feature-name>` or `fix/<bug-name>`
2. Make your changes
3. Commit your changes
- commit msg format: `[type]: [description]`
- `type` can be `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
- `description` should be a brief description of the changes
- Example: `feat: add new feature`
4. Push your changes to `dev`
5. Create a pull request from `dev` to `main`
+25
View File
@@ -0,0 +1,25 @@
<script setup lang="ts">
import { ConfigProvider } from 'radix-vue'
const useIdFunction = () => useId()
const textDirection = useTextDirection({ initialValue: 'ltr' })
const dir = computed(() => (textDirection.value === 'rtl' ? 'rtl' : 'ltr'))
useHead({
// as a string,
// where `%s` is replaced with the title
titleTemplate: '%s - RSSA',
})
</script>
<template>
<ConfigProvider :use-id="useIdFunction" :dir="dir">
<div vaul-drawer-wrapper class="relative">
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</div>
<Toaster />
</ConfigProvider>
</template>
+378
View File
@@ -0,0 +1,378 @@
/* SIMRS RSSA Design System - Pure CSS (No Tailwind) */
/* CSS Variables */
:root {
/* Medical Theme Colors */
--background: 230 20% 98%;
--foreground: 210 20% 15%;
--card: 0 0% 100%;
--card-foreground: 210 20% 15%;
--popover: 0 0% 100%;
--popover-foreground: 210 20% 15%;
/* Primary - Medical Green */
--primary: 26 89% 57%;
--primary-foreground: 0 0% 100%;
--primary-hover: 26, 92%, 65%;
/* Secondary - Clean Blue */
--secondary: 40 70% 60%;
--secondary-foreground: 210 20% 100%;
--muted: 210 25% 95%;
--muted-foreground: 210 15% 50%;
/* Accent - Neutral Gray */
--accent: 210 40% 96%;
--accent-foreground: 222.2 84% 4.9%;
--destructive: 0 75% 55%;
--destructive-foreground: 0 0% 100%;
--border: 210 20% 88%;
--input: 210 20% 95%;
--ring: 150 75% 35%;
/* Medical Status Colors */
--success: 150 75% 40%;
--success-foreground: 0 0% 100%;
--warning: 45 95% 60%;
--warning-foreground: 210 20% 15%;
--info: 210 100% 50%;
--info-foreground: 0 0% 100%;
/* Gradients */
--gradient-primary: linear-gradient(135deg, hsl(150 75% 35%), hsl(150 75% 45%));
--gradient-medical: linear-gradient(135deg, hsl(150 75% 35%), hsl(210 100% 50%));
--gradient-subtle: linear-gradient(180deg, hsl(210 20% 98%), hsl(210 25% 95%));
/* Shadows */
--shadow-medical: 0 4px 20px -4px hsl(150 75% 35% / 0.15);
--shadow-card: 0 2px 10px -2px hsl(210 20% 15% / 0.1);
--shadow-glow: 0 0 30px hsl(150 75% 35% / 0.2);
/* Transitions */
--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
--transition-fast: all 0.15s ease-out;
/* Border Radius */
--radius: 0.5rem;
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
/* Sidebar */
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
--sidebar-primary-foreground: 0 0% 98%;
--sidebar-accent: 240 4.8% 95.9%;
--sidebar-accent-foreground: 240 5.9% 10%;
--sidebar-border: 220 13% 91%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
.dark {
--background: 210 25% 8%;
--foreground: 210 20% 95%;
--card: 210 25% 10%;
--card-foreground: 210 20% 95%;
--popover: 210 25% 10%;
--popover-foreground: 210 20% 95%;
--primary: 26 89% 57%;
--primary-foreground: 0 0% 100%;
--primary-hover: 26, 92%, 65%;
--secondary: 210 25% 15%;
--secondary-foreground: 210 20% 90%;
--muted: 210 25% 15%;
--muted-foreground: 210 15% 65%;
--accent: 210 100% 55%;
--accent-foreground: 0 0% 100%;
--destructive: 0 75% 60%;
--destructive-foreground: 0 0% 100%;
--border: 210 25% 20%;
--input: 210 25% 15%;
--ring: 150 75% 45%;
--success: 150 75% 50%;
--warning: 45 95% 65%;
--info: 210 100% 60%;
--gradient-primary: linear-gradient(135deg, hsl(150 75% 45%), hsl(150 75% 55%));
--gradient-medical: linear-gradient(135deg, hsl(150 75% 45%), hsl(210 100% 55%));
--gradient-subtle: linear-gradient(180deg, hsl(210 25% 8%), hsl(210 25% 12%));
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 240 3.7% 15.9%;
--sidebar-accent-foreground: 240 4.8% 95.9%;
--sidebar-border: 240 3.7% 15.9%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
/* Keyframes for Animations */
@keyframes accordion-down {
from {
height: 0;
}
to {
height: var(--radix-accordion-content-height);
}
}
@keyframes accordion-up {
from {
height: var(--radix-accordion-content-height);
}
to {
height: 0;
}
}
@keyframes fadeIn {
0% {
opacity: 0;
transform: translateY(10px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideUp {
0% {
transform: translateY(100%);
}
100% {
transform: translateY(0);
}
}
@keyframes pulseMedical {
0%,
100% {
box-shadow: 0 0 0 0 hsl(var(--primary) / 0.4);
}
50% {
box-shadow: 0 0 0 10px hsl(var(--primary) / 0);
}
}
/* Base Styles */
* {
border-color: hsl(var(--border));
box-sizing: border-box;
}
body {
/* background-color: hsl(var(--background)); */
/* background-color: hsl(var(--background), 0.5); */
color: hsl(var(--foreground));
line-height: 1.5;
margin: 0;
}
body {
@apply bg-slate-100 dark:bg-slate-800 ;
}
body, table, label {
@apply md:!text-xs 2xl:!text-sm;
}
/* Container */
.container {
width: 100%;
margin: 0 auto;
padding: 0 2rem;
}
@media (min-width: 1400px) {
.container {
max-width: 1400px;
}
}
/* Color Classes */
.bg-background {
background-color: hsl(var(--background));
}
.bg-foreground {
background-color: hsl(var(--foreground));
}
.bg-card {
background-color: hsl(var(--card));
}
.bg-primary {
background-color: hsl(var(--primary));
}
.bg-secondary {
background-color: hsl(var(--secondary));
}
.bg-accent {
background-color: hsl(var(--accent));
}
.bg-destructive {
background-color: hsl(var(--destructive));
}
.bg-muted {
background-color: hsl(var(--muted));
}
.bg-success {
background-color: hsl(var(--success));
}
.bg-warning {
background-color: hsl(var(--warning));
}
.bg-info {
background-color: hsl(var(--info));
}
.text-background {
color: hsl(var(--background));
}
.text-foreground {
color: hsl(var(--foreground));
}
.text-card {
color: hsl(var(--card));
}
.text-primary {
color: hsl(var(--primary));
}
.text-secondary {
color: hsl(var(--secondary));
}
.text-accent {
color: hsl(var(--accent));
}
.text-destructive {
color: hsl(var(--destructive));
}
.text-muted {
color: hsl(var(--muted));
}
.text-success {
color: hsl(var(--success));
}
.text-warning {
color: hsl(var(--warning));
}
.text-info {
color: hsl(var(--info));
}
.text-primary-foreground {
color: hsl(var(--primary-foreground));
}
.text-secondary-foreground {
color: hsl(var(--secondary-foreground));
}
.text-accent-foreground {
color: hsl(var(--accent-foreground));
}
.text-destructive-foreground {
color: hsl(var(--destructive-foreground));
}
.text-muted-foreground {
color: hsl(var(--muted-foreground));
}
.text-success-foreground {
color: hsl(var(--success-foreground));
}
.text-warning-foreground {
color: hsl(var(--warning-foreground));
}
.text-info-foreground {
color: hsl(var(--info-foreground));
}
.border-primary {
border-color: hsl(var(--primary));
}
.border-secondary {
border-color: hsl(var(--secondary));
}
.border-accent {
border-color: hsl(var(--accent));
}
.border-destructive {
border-color: hsl(var(--destructive));
}
.border-input {
border-color: hsl(var(--input));
}
/* Sidebar Colors */
.bg-sidebar {
background-color: hsl(var(--sidebar-background));
}
.text-sidebar {
color: hsl(var(--sidebar-foreground));
}
.bg-sidebar-primary {
background-color: hsl(var(--sidebar-primary));
}
.text-sidebar-primary {
color: hsl(var(--sidebar-primary));
}
.bg-sidebar-accent {
background-color: hsl(var(--sidebar-accent));
}
.text-sidebar-accent {
color: hsl(var(--sidebar-accent));
}
.border-sidebar {
border-color: hsl(var(--sidebar-border));
}
/* Background Images */
.bg-gradient-medical {
background-image: var(--gradient-medical);
}
.bg-gradient-primary {
background-image: var(--gradient-primary);
}
.bg-gradient-subtle {
background-image: var(--gradient-subtle);
}
/* Border Radius */
.rounded-sm {
border-radius: var(--radius-sm);
}
/* Form Error Styling */
.field-error-info {
font-size: 0.75rem;
margin-left: 0.25rem;
color: hsl(var(--destructive));
/* font-size: 0.875rem; */
margin-top: 0.25rem;
min-height: 1rem; /* Reserve space to prevent CLS */
line-height: 1.25;
}
/* .rounded-md { border-radius: var */
/* Dashboard grid utility */
.dashboard-grid {
display: grid;
gap: 1rem;
}
@media (min-width: 768px) {
.dashboard-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 1024px) {
.dashboard-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@media (min-width: 1280px) {
.dashboard-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 1.25rem;
}
}
+1
View File
@@ -0,0 +1 @@
<svg xmlns='http://www.w3.org/2000/svg' width='250' height='30' viewBox='0 0 1000 120'><rect fill='#000000' width='1000' height='120'/><g fill='none' stroke='#222' stroke-width='10' stroke-opacity='1'><path d='M-500 75c0 0 125-30 250-30S0 75 0 75s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/><path d='M-500 45c0 0 125-30 250-30S0 45 0 45s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/><path d='M-500 105c0 0 125-30 250-30S0 105 0 105s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/><path d='M-500 15c0 0 125-30 250-30S0 15 0 15s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/><path d='M-500-15c0 0 125-30 250-30S0-15 0-15s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/><path d='M-500 135c0 0 125-30 250-30S0 135 0 135s125 30 250 30s250-30 250-30s125-30 250-30s250 30 250 30s125 30 250 30s250-30 250-30'/></g></svg>
@@ -0,0 +1,468 @@
<script setup lang="ts">
import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
import { type Duration, intervalToDuration } from 'date-fns'
// schema
import { type ActionReportFormData, ActionReportSchema } from '~/schemas/action-report.schema'
// type
import type { Doctor } from '~/models/doctor'
import { type ClickType as ActionClickType } from '~/components/pub/my-ui/nav-footer/index'
// components
import * as DE from '~/components/pub/my-ui/doc-entry'
import Separator from '~/components/pub/ui/separator/Separator.vue'
import { ArrayMessage } from '~/components/pub/ui/form'
import ActionForm from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
// form field components
import {
FillNotes,
RadioBloods,
SelectBilling,
SelectBirthPlace,
SelectBirthType,
SelectOperationSystem,
SelectOperationType,
SelectSpecimen,
SelectSurgeryCounter,
SelectSurgeryType,
} from './fields'
import { ButtonAction, Fragment, InputBase, TextAreaInput } from '~/components/pub/my-ui/form/'
import { SelectDoctor } from '~/components/app/doctor/fields'
// Helpers
// #region Props & Emits
interface FormData extends ActionReportFormData {
_operationDuration: string
_anesthesiaDuration: string
}
interface Props {
isLoading: boolean
mode: 'add' | 'edit' | 'view'
initialValues?: Partial<FormData>
// form related
doctors: Doctor[]
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'submit', payload: FormData): void
(e: 'back'): void
(e: 'error', errors: Error): void
}>()
const tissueNotesLimit = 5
const mode = toRef(props, 'mode')
const isLoading = toRef(props, 'isLoading')
const isReadonly = computed(() => {
if (isLoading.value === true) {
return true
}
if (mode.value === 'view') {
return true
}
return false
})
const formSchema = toTypedSchema(ActionReportSchema)
const { errors, handleSubmit, values, meta, resetForm, setFieldValue, setValues, validate } = useForm<FormData>({
name: 'encounterActionReportForm',
validationSchema: formSchema,
initialValues: props.initialValues ? props.initialValues : {},
validateOnMount: false,
})
defineExpose({
validate,
resetForm,
setValues,
values,
})
// #endregion
// #region State & Computed
// #endregion
// #region Lifecycle Hooks
// #endregion
// #region Functions
// #endregion region
// #region Utilities & event handlers
const onFormActionClicked = (action: ActionClickType) => {
if (action === 'back') {
emit('back')
return
}
if (action === 'submit') {
onSubmit()
return
}
}
const onSubmit = handleSubmit(
(values) => {
console.log(JSON.stringify(values))
emit('submit', values)
},
(errors) => {
console.error(errors)
emit('error', new Error('Silahkan lengkapi form terlebih dahulu'))
},
)
// #endregion
// #region Watcher
watch(
() => [values.operationExecution.operationStartAt, values.operationExecution.operationEndAt],
([start, end]) => {
if (!start || !end) return
const pStart = new Date(start)
const pEnd = new Date(end)
const formatTime = (r: Duration) =>
[r.hours && `${r.hours} jam`, r.minutes && `${r.minutes} menit`, r.seconds && `${r.seconds} detik`]
.filter(Boolean)
.join(' ')
const res = intervalToDuration({
start: pStart,
end: pEnd,
})
setFieldValue('_operationDuration', formatTime(res))
},
{ immediate: true },
)
watch(
() => [values.operationExecution.anesthesiaStartAt, values.operationExecution.anesthesiaEndAt],
([start, end]) => {
if (!start || !end) return
const pStart = new Date(start)
const pEnd = new Date(end)
const formatTime = (r: Duration) =>
[r.hours && `${r.hours} jam`, r.minutes && `${r.minutes} menit`, r.seconds && `${r.seconds} detik`]
.filter(Boolean)
.join(' ')
const res = intervalToDuration({
start: pStart,
end: pEnd,
})
setFieldValue('_anesthesiaDuration', formatTime(res))
},
{ immediate: true },
)
// #endregion
</script>
<template>
<form @submit.prevent="onSubmit">
<Fragment
v-slot="{ section }"
title="Tim Pelaksana Tindakan"
>
<p class="text-lg font-semibold">{{ section }}</p>
<DE.Block
:col-count="4"
:cell-flex="false"
>
<SelectDoctor
fieldName="operatorTeam.dpjpId"
label="Dokter Pemeriksa"
placeholder="Pilih dokter"
:doctors="doctors"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operatorTeam.operatorName"
label="Operator"
placeholder="Masukkan operator"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operatorTeam.assistantOperatorName"
label="Asisten Operator"
placeholder="Masukkan asisten operator"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operatorTeam.instrumentNurseName"
label="Instrumentir"
placeholder="Masukkan instrumentir"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operatorTeam.surgeryDate"
label="Tanggal Pembedahan"
input-type="datetime-local"
:is-disabled="isReadonly"
placeholder=""
/>
</DE.Block>
<DE.Block
:col-count="4"
:cell-flex="false"
>
<TextAreaInput
field-name="operatorTeam.actionDiagnosis"
label="Diagnosa Tindakan"
placeholder="Masukkan diagnosa tindakan"
:col-span="2"
:rows="5"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operatorTeam.postSurgeryNurseId"
label="Perawat Pasca Bedah"
placeholder="Masukkan perawat pasca bedah"
:is-disabled="isReadonly"
/>
</DE.Block>
</Fragment>
<Separator class="my-4" />
<Fragment
v-slot="{ section }"
title="Tindakan Operatif/Non Operatif Lain"
>
<!-- <p class="text-lg font-semibold">{{ section }}</p> -->
<DE.Block
:col-count="2"
:cell-flex="false"
>
<DE.Cell>
<slot name="procedures" />
<ArrayMessage
class="mt-1"
v-if="meta.touched"
name="procedures"
/>
</DE.Cell>
</DE.Block>
</Fragment>
<Separator class="my-4" />
<Fragment
v-slot="{ section }"
title="Data Pelaksanaan Operasi"
>
<p class="text-lg font-semibold">{{ section }}</p>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<SelectSurgeryType
field-name="operationExecution.surgeryType"
label="Jenis Operasi"
placeholder="Pilih jenis operasi"
:is-disabled="isReadonly"
/>
<SelectBilling
field-name="operationExecution.billingCode"
label="Kode Billing"
placeholder="Pilih kode billing"
:is-disabled="isReadonly"
/>
<SelectOperationSystem
field-name="operationExecution.operationSystem"
label="Sistem Operasi"
placeholder="Pilih sistem operasi"
:is-disabled="isReadonly"
/>
</DE.Block>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<InputBase
field-name="operationExecution.operationStartAt"
label="Operasi Mulai"
placeholder="Pilih Tanggal"
input-type="datetime-local"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operationExecution.operationEndAt"
label="Operasi Selesai"
placeholder="Pilih Tanggal"
input-type="datetime-local"
:is-disabled="isReadonly"
/>
<InputBase
field-name="_operationDuration"
label="Lama Operasi"
placeholder="-"
is-disabled
/>
</DE.Block>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<InputBase
field-name="operationExecution.anesthesiaStartAt"
label="Pembiusan Mulai"
placeholder="Pilih Tanggal"
input-type="datetime-local"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operationExecution.anesthesiaEndAt"
label="Pembiusan Selesai"
placeholder="Pilih Tanggal"
input-type="datetime-local"
:is-disabled="isReadonly"
/>
<InputBase
field-name="_anesthesiaDuration"
label="Lama Pembiusan"
placeholder="-"
is-disabled
/>
</DE.Block>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<SelectOperationType
field-name="operationExecution.surgeryCleanType"
label="Jenis Pembedahan"
placeholder="Pilih jenis pembedahan"
:is-disabled="isReadonly"
/>
<SelectSurgeryCounter
field-name="operationExecution.surgeryNumber"
label="Operasi Ke"
placeholder="Pilih"
:is-disabled="isReadonly"
/>
<SelectBirthType
field-name="operationExecution.birthRemark"
label="Keterangan Lahir"
placeholder="Pilih"
:is-disabled="isReadonly"
/>
<SelectBirthPlace
field-name="operationExecution.birthPlaceNote"
label="Ket. Tempat Lahir"
placeholder="Pilih keterangan tempat lahir"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operationExecution.personWeight"
label="Berat Badan"
placeholder="Masukkan berat badan"
numeric-only
suffix-msg="Gram"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operationExecution.birthCondition"
label="Ket. Saat Lahir"
placeholder="Tambah catatan"
:is-disabled="isReadonly"
/>
</DE.Block>
<DE.Block
:col-count="4"
:cell-flex="false"
>
<TextAreaInput
field-name="operationExecution.operationDescription"
label="Uraian Operasi"
placeholder="Masukkan uraian"
:rows="3"
:col-span="2"
:is-disabled="isReadonly"
/>
<InputBase
field-name="operationExecution.bleedingAmountCc"
label="Jumlah Pendarahan"
placeholder="Masukkan jumlah pendarahan"
suffix-msg="CC"
numeric-only
:is-disabled="isReadonly"
/>
</DE.Block>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<RadioBloods
field-name="bloodInput"
label="Jenis & Jumlah Darah Masuk"
:is-disabled="isReadonly"
/>
</DE.Block>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<InputBase
field-name="implant.brand"
label="Merk"
placeholder="Masukkan merk"
:is-disabled="isReadonly"
/>
<InputBase
field-name="implant.name"
label="Nama Implant"
placeholder="Masukkan nama implant"
:is-disabled="isReadonly"
/>
<InputBase
field-name="implant.sticker"
label="Sticker/Nomer Register Implant"
placeholder="Masukkan sticker/nomor register implant"
:is-disabled="isReadonly"
/>
<InputBase
field-name="implant.companionName"
label="Nama Pendamping Implant"
placeholder="Masukkan nama pendamping implant"
:is-disabled="isReadonly"
/>
<SelectSpecimen
field-name="specimen.destination"
label="Specimen/Jaringan dikirim ke"
placeholder="Pilih"
:is-disabled="isReadonly"
/>
</DE.Block>
<FillNotes
title="Keterangan Jaringan"
:limit="tissueNotesLimit"
:is-disabled="isReadonly"
/>
</Fragment>
<div class="mt-4 flex justify-end">
<ActionForm @click="onFormActionClicked" />
</div>
</form>
</template>
@@ -0,0 +1,65 @@
<script setup lang="ts">
// components
import { FieldArray } from 'vee-validate'
import * as DE from '~/components/pub/my-ui/doc-entry'
// form field components
import { ButtonAction, InputBase } from '~/components/pub/my-ui/form'
interface Props {
isDisabled: boolean
limit: number
title: string
}
const props = defineProps<Props>()
const isReadonly = computed(() => props.isDisabled)
</script>
<template>
<FieldArray
v-slot="{ fields, push, remove }"
name="tissueNotes"
>
<template v-if="fields.length === 0">
{{ push({ note: '' }) }}
</template>
<div class="space-y-4">
<DE.Block
v-for="(field, idx) in fields"
:key="field.key"
:col-count="3"
:cell-flex="false"
>
<InputBase
:label="idx === 0 ? 'Keterangan Jaringan' : undefined"
:field-name="`tissueNotes[${idx}].note`"
placeholder="Masukkan catatan"
:is-disabled="isReadonly"
/>
<DE.Cell class="flex items-start justify-start">
<DE.Field :class="idx === 0 ? 'mt-[30px]' : 'mt-0'">
<ButtonAction
v-if="idx !== 0"
:disabled="isReadonly"
preset="delete"
:title="`Hapus Kontak ${idx + 1}`"
icon-only
@click="remove(idx)"
/>
</DE.Field>
</DE.Cell>
</DE.Block>
</div>
<ButtonAction
preset="add"
label="Tambah Catatan"
title="Tambah Catatan Keterangan Jaringan"
:disabled="fields.length >= limit || isReadonly"
:full-width-mobile="true"
class="mt-4"
@click="push({ name: '', dose: '', unit: '' })"
/>
</FieldArray>
</template>
@@ -0,0 +1,10 @@
export { default as FillNotes } from './fill-notes.vue'
export { default as RadioBloods } from './radio-bloods.vue'
export { default as SelectBilling } from './select-billing.vue'
export { default as SelectBirthPlace } from './select-birth-place.vue'
export { default as SelectBirthType } from './select-birth-type.vue'
export { default as SelectOperationSystem } from './select-operation-system.vue'
export { default as SelectOperationType } from './select-operation-type.vue'
export { default as SelectSpecimen } from './select-specimen.vue'
export { default as SelectSurgeryCounter } from './select-surgery-counter.vue'
export { default as SelectSurgeryType } from './select-surgery-type.vue'
@@ -0,0 +1,101 @@
<script setup lang="ts">
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
import { RadioGroup, RadioGroupItem } from '~/components/pub/ui/radio-group'
import { Label as RadioLabel } from '~/components/pub/ui/label'
import { Input } from '~/components/pub/ui/input'
const props = defineProps<{
fieldName: string
label: string
class?: string
radioGroupClass?: string
radioItemClass?: string
labelClass?: string
isDisabled?: boolean
}>()
const { class: containerClass, radioGroupClass, radioItemClass, labelClass } = props
const opts = [
{ label: 'PRC', value: 'prc' },
{ label: 'WB', value: 'wb' },
{ label: 'FFP', value: 'ffp' },
{ label: 'TC', value: 'tc' },
]
</script>
<template>
<DE.Cell
:class="cn('radio-group-field', containerClass)"
:col-span="2"
>
<DE.Label :label-for="fieldName">
{{ label }}
</DE.Label>
<DE.Field :id="fieldName">
<FormField
v-slot="{ componentField: radioField }"
:name="`${fieldName}.type`"
>
<FormItem>
<FormControl>
<RadioGroup
:model-value="radioField.modelValue"
@update:model-value="radioField.onChange"
:class="cn('grid grid-cols-1 items-start gap-4 sm:grid-cols-2 ', radioGroupClass)"
>
<div
v-for="(option, index) in opts"
:key="option.value"
:class="cn('grid grid-cols-1 items-start gap-3 sm:grid-cols-[auto,1fr]', radioItemClass)"
>
<div class="flex min-w-fit items-center gap-2">
<RadioGroupItem
:id="`type-${index}`"
:value="option.value"
:disabled="isDisabled"
/>
<RadioLabel :for="`type-${index}`">
{{ option.label }}
</RadioLabel>
</div>
<FormField
v-slot="{ componentField: amountField }"
:name="`${fieldName}.amount.${option.value}`"
>
<FormItem>
<FormControl>
<div class="relative w-[140px]">
<Input
v-bind="amountField"
placeholder="00"
class="pr-10"
:disabled="radioField.modelValue !== option.value || isDisabled"
@input="
(e: InputEvent) => {
const target = e.target as HTMLInputElement
const v = target.value.replace(/\D/g, '')
amountField.onChange(v)
}
"
/>
<span
class="absolute inset-y-0 end-0 flex items-center justify-center px-2 text-sm text-muted-foreground"
>
CC
</span>
</div>
</FormControl>
</FormItem>
</FormField>
</div>
</RadioGroup>
</FormControl>
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,68 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'General', value: 'general' },
{ label: 'Regional', value: 'regional' },
{ label: 'Local', value: 'local' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,71 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'RSSA', value: 'rssa' },
{ label: 'Bidan Luar', value: 'out1' },
{ label: 'Dokter Luar', value: 'out2' },
{ label: 'Dukun Bayi', value: 'out3' },
{ label: 'Puskesmas', value: 'out4' },
{ label: 'Paramedis Luar', value: 'out5' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,67 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'Lahir Hidup', value: 'lahir_hidup' },
{ label: 'Lahir Mati', value: 'lahir_mati' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,69 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'Cito', value: 'cito' },
{ label: 'Urgent', value: 'urgent' },
{ label: 'Efektif', value: 'efektif' },
{ label: 'Khusus', value: 'khusus' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,69 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'Bersih', value: 'bersih' },
{ label: 'Bersih Terkontaminasi', value: 'bersih_terkontaminasi' },
{ label: 'Terkontaminasi Kotor', value: 'terkontaminasi' },
{ label: 'Kotor', value: 'kotor' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,69 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'PA', value: 'pa' },
{ label: 'Mikrobiologi', value: 'microbiology' },
{ label: 'Laborat', value: 'laboratory' },
{ label: 'Tidak Perlu', value: 'none' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,67 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: '1 (Satu)', value: 'first' },
{ label: 'Ulangan', value: 'retry' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,69 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
isDisabled?: boolean
isRequired?: boolean
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
}>()
const { errors, class: containerClass, selectClass, fieldGroupClass } = props
const opts = [
{ label: 'Kecil', value: 'kecil' },
{ label: 'Sedang', value: 'sedang' },
{ label: 'Besar', value: 'besar' },
{ label: 'Khusus', value: 'khusus' },
]
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
label-for="fieldName"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
:is-disabled="isDisabled"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,88 @@
import { defineAsyncComponent } from 'vue'
import { format } from 'date-fns'
import { id } from 'date-fns/locale'
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import type { ActionReportData } from '~/components/app/action-report/sample'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-d.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 50 },
],
headers: [
[
{ label: 'TANGGAL LAPORAN' },
{ label: 'DPJP' },
{ label: 'OPERATOR' },
{ label: 'TANGGAL PEMBEDAHAN' },
{ label: 'JENIS OPERASI' },
{ label: 'KODE BILLING' },
{ label: 'SISTEM OPERASI' },
{ label: 'AKSI' },
],
],
keys: ['reportAt', 'dpjp', 'operator', 'operationAt', 'operationType', 'billing', 'system', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
reportAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).reportAt
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
return result
},
operationAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).operationAt
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
return result
},
system: (rec: unknown): unknown => {
return 'Cito'
},
operator: (rec: unknown): unknown => {
return 'dr. Dewi Arum Sawitri, Sp.An'
},
billing: (rec: unknown): unknown => {
return 'General'
},
operationType: (rec: unknown): unknown => {
return 'Besar'
},
dpjp: (rec: unknown): unknown => {
return 'dr. Irwansyah Kurniawan Sp.Bo'
},
parent: (rec: unknown): unknown => {
const recX = rec as any
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,39 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,89 @@
import { defineAsyncComponent } from 'vue'
import { format } from 'date-fns'
import { id } from 'date-fns/locale'
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import type { ActionReportData } from '~/components/app/action-report/sample'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 50 },
],
headers: [
[
{ label: 'TANGGAL LAPORAN' },
{ label: 'DPJP' },
{ label: 'OPERATOR' },
{ label: 'TANGGAL PEMBEDAHAN' },
{ label: 'JENIS OPERASI' },
{ label: 'KODE BILLING' },
{ label: 'SISTEM OPERASI' },
{ label: 'AKSI' },
],
],
keys: ['reportAt', 'dpjp', 'operator', 'operationAt', 'operationType', 'billing', 'system', 'action'],
delKeyNames: [
{ key: 'id', label: 'ID' },
{ key: 'dokter', label: 'Dokter' },
{ key: 'reportAt', label: 'Tanggal Laporan' },
],
parses: {
reportAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).reportAt
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
return result
},
operationAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).operationAt
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
return result
},
system: (rec: unknown): unknown => {
return 'Cito'
},
operator: (rec: unknown): unknown => {
return 'dr. Dewi Arum Sawitri, Sp.An'
},
billing: (rec: unknown): unknown => {
return 'General'
},
operationType: (rec: unknown): unknown => {
return 'Besar'
},
dpjp: (rec: unknown): unknown => {
return 'dr. Irwansyah Kurniawan Sp.Bo'
},
parent: (rec: unknown): unknown => {
const recX = rec as any
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
+39
View File
@@ -0,0 +1,39 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,166 @@
<script setup lang="ts">
import { format } from 'date-fns'
import { id } from 'date-fns/locale'
// type
import { type ProcedureSrc } from '~/models/procedure-src'
import { type ActionReportFormData } from '~/schemas/action-report.schema'
// componenets
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '~/components/pub/ui/accordion'
import * as DE from '~/components/pub/my-ui/doc-entry'
import DetailRow from '~/components/pub/my-ui/form/view/detail-row.vue'
import ArrangementProcedurePicker from '~/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue'
// #region Props & Emits
const props = defineProps<{
data: ActionReportFormData
}>()
const emit = defineEmits<{
(e: 'back'): void
(e: 'edit'): void
}>()
// #endregion
// #region State & Computed
const { operatorTeam, procedures, operationExecution, bloodInput, implant, specimen, tissueNotes = [] } = props.data
const procedureSampleData = procedures as unknown as ProcedureSrc[]
// #region Lifecycle Hooks
// #endregion
// #region Functions
// #endregion region
// #region Utilities & event handlers
function onNavigate(type: string) {
if (type == 'back') emit('back')
if (type == 'edit') emit('edit')
}
// #endregion
// #region Watchers
// #endregion
</script>
<template>
<DetailRow label="Tanggal Laporan">
{{ format(new Date(), 'd MMMM yyyy, HH:mm', { locale: id }) }}
</DetailRow>
<Accordion
type="multiple"
class="w-full"
collapsible
:default-value="['section-1', 'section-2', 'section-3']"
>
<AccordionItem value="section-1">
<AccordionTrigger>Tim Pelaksanaan Tindakan</AccordionTrigger>
<AccordionContent>
<DE.Block
:cell-flex="false"
:col-count="2"
>
<DE.Cell>
<DetailRow label="DPJP">dr. Marcell Galliard Sp.Gr</DetailRow>
<DetailRow label="Operator">Sumitro</DetailRow>
<DetailRow label="Asisten Operator">Alexis Lewis Carol</DetailRow>
<DetailRow label="Instrumentir">Mikel Arteta</DetailRow>
<DetailRow label="Tanggal Pembedahan">
{{ format(new Date(), 'd MMMM yyyy', { locale: id }) }}
</DetailRow>
<DetailRow label="Diagnosa Tindakan">{{ operatorTeam?.actionDiagnosis || '-' }}</DetailRow>
<DetailRow label="Perawat Pasca Bedah">Cak Armuji</DetailRow>
</DE.Cell>
</DE.Block>
</AccordionContent>
</AccordionItem>
<AccordionItem value="section-2">
<AccordionTrigger>Tindakan Operatif / Non Operatif Lain</AccordionTrigger>
<AccordionContent>
<DE.Block
:cell-flex="false"
:col-count="2"
>
<DE.Cell>
<ArrangementProcedurePicker
field-name="procedures"
title="List Prosedur"
sub-title="Pilih Prosedur"
:mode="'preview'"
:sample-items="procedureSampleData"
/>
</DE.Cell>
</DE.Block>
</AccordionContent>
</AccordionItem>
<AccordionItem value="section-3">
<AccordionTrigger>Data Pelaksanaan Tindakan</AccordionTrigger>
<AccordionContent>
<DE.Block
:cell-flex="false"
:col-count="2"
>
<DE.Cell>
<DetailRow label="Jenis Operasi">dr. Marcell Galliard Sp.Gr</DetailRow>
<DetailRow label="Kode Billing">GCASH1128190</DetailRow>
<DetailRow label="Sistem Operasi">Alexis Lewis Carol</DetailRow>
<DetailRow label="Operasi Mulai">
{{ format(new Date(), 'd MMMM yyyy, HH:mm', { locale: id }) }}
</DetailRow>
<DetailRow label="Operasi Selesai">
{{ format(new Date(), 'd MMMM yyyy, HH:mm', { locale: id }) }}
</DetailRow>
<DetailRow label="Lama Operasi">5 menit</DetailRow>
<DetailRow label="Pembiusan Mulai">
{{ format(new Date(), 'd MMMM yyyy, HH:mm', { locale: id }) }}
</DetailRow>
<DetailRow label="Pembiusan Selesai">
{{ format(new Date(), 'd MMMM yyyy, HH:mm', { locale: id }) }}
</DetailRow>
<DetailRow label="Lama Pembiusan">5 menit</DetailRow>
<DetailRow label="PRC">300 CC</DetailRow>
<DetailRow label="FPP">-</DetailRow>
<DetailRow label="WB">-</DetailRow>
<DetailRow label="TC">-</DetailRow>
<DetailRow label="Merk">-</DetailRow>
<DetailRow label="Nama Implant">-</DetailRow>
<DetailRow label="Sticker / Nomor Register Implant">-</DetailRow>
<DetailRow label="Nama Pendamping Implant">-</DetailRow>
</DE.Cell>
<DE.Cell>
<DetailRow label="Jenis Pembedahan">Bersih</DetailRow>
<DetailRow label="Operasi ke">1 (Satu)</DetailRow>
<DetailRow label="Keterangan Lahir">Lahir Hidup</DetailRow>
<DetailRow label="Ket. Tempat Lahir">RSSA</DetailRow>
<DetailRow label="Berat Badan">18 gram</DetailRow>
<DetailRow label="Ket. Saat Lahir">Normal dan sehat</DetailRow>
<DetailRow label="Uraian Operasi">-</DetailRow>
<DetailRow label="Jumlah Pendarahan">300 CC</DetailRow>
<DetailRow label="Specimen / Jaringan dikirim ke">PA</DetailRow>
<DetailRow label="Keterangan Jaringan">
<ul
class="list-disc space-y-1 pl-5 text-sm"
v-if="tissueNotes.length > 0"
v-for="item in tissueNotes"
>
<li>{{ item.note }}</li>
</ul>
<span v-else>-</span>
</DetailRow>
</DE.Cell>
</DE.Block>
</AccordionContent>
</AccordionItem>
</Accordion>
<div class="my-2 flex justify-end py-2">
<PubMyUiNavFooterBaEd @click="onNavigate" />
</div>
</template>
<style scoped></style>
@@ -0,0 +1,54 @@
import { addWeeks, formatISO } from 'date-fns'
export type ActionReportData = {
id: number
reportAt: string
operationAt: string
noRm: string
noBill: string
nama: string
jk: string
alamat: string
klinik: string
dokter: string
caraBayar: string
rujukan: string
ketRujukan: string
asal: string
}
export const sampleRows: ActionReportData[] = [
{
id: 1,
reportAt: formatISO(addWeeks(new Date(), -1)),
operationAt: formatISO(addWeeks(new Date(), 1)),
noRm: 'RM23311224',
noBill: '-',
nama: 'Ahmad Baidowi',
jk: 'L',
alamat: 'Jl Jaksa Agung S. No. 9',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
{
id: 2,
reportAt: new Date().toISOString(),
operationAt: formatISO(addWeeks(new Date(), 2)),
noRm: 'RM23455667',
noBill: '-',
nama: 'Abraham Sulaiman',
jk: 'L',
alamat: 'Purwantoro, Blimbing',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
// tambahkan lebih banyak baris contoh jika perlu
]
@@ -0,0 +1,28 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{}, {}],
headers: [[{ label: 'Kode' }, { label: 'Nama' }]],
keys: ['code', 'name'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
},
components: {
},
htmls: {
},
}
@@ -0,0 +1,17 @@
<script setup lang="ts">
// Pub components
import DataTable from '~/components/pub/my-ui/data-table/data-table.vue'
// Configs
import { config } from './list.cfg'
defineProps<{
data: any[]
}>()
</script>
<template>
<div class="space-y-4">
<DataTable v-bind="config" :rows="data" />
</div>
</template>
@@ -0,0 +1,58 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{}, {}, {}, { width: 50 }],
headers: [[
{ label: 'Tgl. Order' },
{ label: 'No. Order' },
{ label: 'Jadwal Pemeriksaan' },
{ label: 'Lokalisasi' },
{ label: 'Stadium' },
{ label: 'Status' },
{ label: 'Resume' },
{ label: '' }]],
keys: [
'date',
'number',
'examinationDate',
'localization',
'stadium',
'resume',
'',
],
delKeyNames: [
{ key: 'date', label: 'Tanggal' },
{ key: 'number', label: 'Nomor' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
props: {
size: 'sm',
},
}
return res
},
},
htmls: {},
}
+37
View File
@@ -0,0 +1,37 @@
<script setup lang="ts">
// Components
import DataTable from '~/components/pub/my-ui/data-table/data-table.vue'
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<DataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,47 @@
<script setup lang="ts">
import Block from '~/components/pub/form/block.vue'
import FieldGroup from '~/components/pub/form/field-group.vue'
import Field from '~/components/pub/form/field.vue'
import Label from '~/components/pub/form/label.vue'
</script>
<template>
<form id="entry-form">
<div class="mb-5 border-b border-b-slate-300 pb-3 text-lg xl:text-xl">
<Icon name="i-lucide-user" class="me-2" />
<span class="font-semibold">Tambah</span> Pasien
</div>
<div class="mb-5 border-b border-b-slate-300 pb-3 text-lg xl:text-xl">
<Block>
<FieldGroup :column="3">
<Label>Nama</Label>
<Field>
<Input type="text" name="name" />
</Field>
</FieldGroup>
<FieldGroup :column="3">
<Label>Nama</Label>
<Field>
<Input type="text" name="name" />
</Field>
</FieldGroup>
<FieldGroup :column="3">
<Label>Nomor RM</Label>
<Field>
<Input type="text" name="name" />
</Field>
</FieldGroup>
<FieldGroup>
<Label dynamic>Alamat</Label>
<Field>
<Input type="text" name="name" />
</Field>
</FieldGroup>
</Block>
</div>
<div class="my-2 flex justify-end py-2">
<PubNavFooterCsd />
</div>
</form>
</template>
@@ -0,0 +1,114 @@
import { defineAsyncComponent } from 'vue'
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [
{},
{},
{},
{ width: 100 },
{ width: 120 },
{},
{},
{},
{ width: 100 },
{ width: 100 },
{},
{ width: 50 },
],
headers: [
[
{ label: 'Nama' },
{ label: 'Rekam Medis' },
{ label: 'KTP' },
{ label: 'Tgl Lahir' },
{ label: 'Umur' },
{ label: 'JK' },
{ label: 'Pendidikan' },
{ label: 'Status' },
{ label: '' },
],
],
keys: [
'name',
'medicalRecord_number',
'identity_number',
'birth_date',
'patient_age',
'gender',
'education',
'status',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
name: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return `${recX.firstName} ${recX.middleName || ''} ${recX.lastName || ''}`
},
identity_number: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
if (recX.identity_number?.substring(0, 5) === 'BLANK') {
return '(TANPA NIK)'
}
return recX.identity_number
},
birth_date: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
if (typeof recX.birth_date == 'object' && recX.birth_date) {
return (recX.birth_date as Date).toLocaleDateString()
} else if (typeof recX.birth_date == 'string') {
return (recX.birth_date as string).substring(0, 10)
}
return recX.birth_date
},
patient_age: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.birth_date?.split('T')[0]
},
gender: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
if (typeof recX?.gender_code !== 'number' && recX?.gender_code !== '') {
return 'Tidak Diketahui'
}
return recX.gender_code
},
education: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
if (typeof recX.education_code == 'number' && recX.education_code >= 0) {
return recX.education_code
} else if (typeof recX.education_code) {
return recX.education_code
}
return '-'
},
},
components: {
action(rec: unknown, idx: number) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {
patient_address(rec: unknown) {
return '-'
},
},
}
@@ -0,0 +1,11 @@
<script setup lang="ts">
import { config } from './list-cfg'
defineProps<{
data: any[]
}>()
</script>
<template>
<PubMyUiDataTable v-bind="config" :rows="data" />
</template>
@@ -0,0 +1,215 @@
<script setup lang="ts">
import { z } from 'zod'
import { FieldArray, useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
// types
// import { type AssessmentEducationFormData, AssessmentEducationSchema, encode } from '~/schemas/assessment-education'
// componenets
import * as DE from '~/components/pub/my-ui/doc-entry'
import Separator from '~/components/pub/ui/separator/Separator.vue'
import { BaseSelect, CheckboxGeneral, CheckboxSpecial } from './fields'
import { ButtonAction, TextAreaInput } from '~/components/pub/my-ui/form'
import ActionForm from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
// constant
import {
abilityCode,
willCode,
medObstacleCode,
learnMethodCode,
langClassCode,
translatorSrcCode,
} from '~/lib/clinical.constants'
interface FormData {}
interface Props {
noteLimit?: number
isLoading?: boolean
isReadonly?: boolean
mode: 'add' | 'edit' | 'view'
initialValues?: Partial<FormData>
}
const props = withDefaults(defineProps<Props>(), {
isLoading: false,
isReadonly: false,
noteLimit: 10,
})
const isDisabled = computed(() => props.isLoading || props.isReadonly)
// const formSchema = toTypedSchema(AssessmentEducationSchema)
const formSchema = toTypedSchema(z.object({}))
const { errors, handleSubmit, values, meta, resetForm, setFieldValue, setValues, validate } = useForm<FormData>({
name: 'assessmentEducationForm',
validationSchema: formSchema,
initialValues: props.initialValues
? props.initialValues
: {
plans: [
{
id: 1,
value: '',
},
],
},
validateOnMount: false,
})
defineExpose({
validate,
resetForm,
setValues,
values,
})
</script>
<template>
<form @submit.prevent="">
<p class="mb-2 text-sm font-semibold 2xl:mb-3 2xl:text-base">Kebutuhan Edukasi</p>
<DE.Block
:col-count="4"
:cell-flex="false"
>
<CheckboxGeneral
field-name="generalEducationNeeds"
label="Informasi Umum"
:col-span="2"
:is-disabled="isDisabled"
/>
<CheckboxSpecial
field-name="specificEducationNeeds"
label="Edukasi Khusus"
:col-span="2"
:is-disabled="isDisabled"
/>
</DE.Block>
<div class="h-6">
<Separator />
</div>
<p class="mb-2 text-sm font-semibold 2xl:mb-3 2xl:text-base">Asesmen Kemampuan dan Kemauan Belajar</p>
<DE.Block
:col-count="3"
:cell-flex="false"
>
<BaseSelect
field-name="learningAbility"
label="Kemampuan Belajar"
:items="abilityCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="learningWillingness"
label="Kemauan Belajar"
:items="willCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="barrier"
label="Hambatan"
:items="medObstacleCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="learningMethod"
label="Metode Pembelajaran"
:items="learnMethodCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="language"
label="Bahasa"
:items="langClassCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="languageBarrier"
label="Hambatan Bahasa"
:items="translatorSrcCode"
:is-disabled="isDisabled"
/>
<BaseSelect
field-name="beliefValue"
label="Keyakinan pada Nilai-Nilai yang Dianut"
:items="{
ya: 'IYA',
tidak: 'TIDAK',
}"
:is-disabled="isDisabled"
/>
</DE.Block>
<div class="h-6">
<Separator />
</div>
<p class="mb-2 text-sm font-semibold 2xl:mb-3 2xl:text-base">Rencana Edukasi</p>
<DE.Block
:col-count="1"
:cell-flex="false"
>
<FieldArray
v-slot="{ fields, push, remove }"
name="tissueNotes"
>
<template v-if="fields.length === 0">
{{ push({ note: '' }) }}
</template>
<div class="space-y-4">
<DE.Block
v-for="(field, idx) in fields"
:key="field.key"
:col-count="6"
:cell-flex="false"
>
<DE.Cell :col-span="5">
<TextAreaInput
:field-name="`plans[${idx}].value`"
:label="'Rencana ' + Number(idx + 1)"
placeholder="Masukkan rencana catatan"
:col-span="2"
:rows="5"
:is-disabled="isReadonly"
/>
</DE.Cell>
<DE.Cell class="flex items-start justify-start">
<DE.Field :class="idx === 0 ? 'mt-[30px]' : 'mt-0'">
<ButtonAction
v-if="idx !== 0"
:disabled="isReadonly"
preset="delete"
:title="`Hapus Rencana ${idx + 1}`"
icon-only
@click="remove(idx)"
/>
</DE.Field>
</DE.Cell>
</DE.Block>
</div>
<div class="self-center pt-3">
<ButtonAction
preset="add"
label="Tambah Rencana"
title="Tambah Rencana Edukasi"
:disabled="fields.length >= noteLimit || isReadonly"
:full-width-mobile="true"
class="mt-4"
@click="push({ id: fields.length + 1, value: '' })"
/>
</div>
</FieldArray>
</DE.Block>
<!-- todo -->
<div class="mt-4 flex justify-end">
<ActionForm @click="() => {}" />
</div>
</form>
</template>
@@ -0,0 +1,66 @@
<script setup lang="ts">
import * as DE from '~/components/pub/my-ui/doc-entry'
import { Checkbox } from '~/components/pub/ui/checkbox'
import type { CheckItem } from '~/lib/utils'
const props = defineProps<{
label: string
fieldName: string
items: CheckItem[]
isDisabled?: boolean
colSpan?: number
}>()
const { label, fieldName, items } = props
</script>
<template>
<DE.Cell :col-span="colSpan || 1">
<DE.Label :label-for="fieldName">
{{ label }}
</DE.Label>
<DE.Field :id="fieldName">
<FormField
:name="fieldName"
v-slot="{ value, handleChange }"
>
<FormItem>
<div
v-for="item in items"
:key="item.id"
class="ml-1 flex flex-row items-start space-x-3 space-y-0"
>
<FormControl>
<Checkbox
:disabled="isDisabled"
:id="`cb-${fieldName}-${item.id}`"
:checked="value?.includes(item.id)"
@update:checked="
(checked) => {
const newValue = [...(value || [])]
if (checked) {
if (!newValue.includes(item.id)) newValue.push(item.id)
} else {
const idx = newValue.indexOf(item.id)
if (idx > -1) newValue.splice(idx, 1)
}
handleChange(newValue)
}
"
/>
</FormControl>
<FormLabel
:for="`cb-${fieldName}-${item.id}`"
class="font-normal leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 md:!text-xs 2xl:text-sm"
>
{{ item.label }}
</FormLabel>
</div>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,79 @@
<script setup lang="ts">
import Select from '~/components/pub/my-ui/form/select.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName: string
label: string
items: Record<string, string>
placeholder?: string
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const { placeholder = 'Pilih', class: containerClass, selectClass, fieldGroupClass, labelClass } = props
const opts = computed(() => {
const data = mapToComboboxOptList(props.items)
// hide code on select options
const filtered = data
.filter((item) => item.code)
.reduce(
(acc, item) => {
acc.push({
label: item.label as string,
value: item.value as string,
})
return acc
},
[] as Array<{ label: string; value: string }>,
)
return filtered
})
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Select
:id="fieldName"
v-bind="componentField"
:items="opts"
:placeholder="placeholder"
:preserve-order="false"
:class="
cn(
'text-sm transition-all duration-200 focus:outline-none focus:ring-1 focus:ring-black focus:ring-offset-0',
selectClass,
)
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,25 @@
<script setup lang="ts">
import BaseCheckbox from './base-checkbox.vue'
import { generalEduCode } from '~/lib/clinical.constants'
import { mapToCheckItems } from '~/lib/utils'
interface Props {
label: string
fieldName: string
isDisabled?: boolean
colSpan?: number
}
defineProps<Props>()
const generalItems = mapToCheckItems(generalEduCode)
</script>
<template>
<BaseCheckbox
:field-name="fieldName"
:label="label"
:is-disabled="isDisabled"
:col-span="colSpan"
:items="generalItems"
/>
</template>
@@ -0,0 +1,22 @@
<script setup lang="ts">
import BaseCheckbox from './base-checkbox.vue'
import { specialEduCode } from '~/lib/clinical.constants'
import { mapToCheckItems } from '~/lib/utils'
interface Props {
label: string
fieldName: string
colSpan?: number
}
defineProps<Props>()
const specialItems = mapToCheckItems(specialEduCode)
</script>
<template>
<BaseCheckbox
:field-name="fieldName"
:label="label"
:col-span="colSpan"
:items="specialItems"
/>
</template>
@@ -0,0 +1,4 @@
export { default as BaseSelect } from './base-select.vue'
export { default as CheckboxGeneral } from './checkbox-general.vue'
export { default as CheckboxSpecial } from './checkbox-special.vue'
export { default as SelectAssessmentCode } from './select-assessment-code.vue'
@@ -0,0 +1,36 @@
<script setup lang="ts">
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
label: string
fieldName: string
placeholder?: string
colSpan?: number
}>()
const { label, fieldName, placeholder = 'Masukkan catatan' } = props
</script>
<template>
<DE.Cell :col-span="colSpan || 1">
<DE.Label :label-for="fieldName">
{{ label }}
</DE.Label>
<DE.Field :id="fieldName">
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Textarea
v-bind="componentField"
:placeholder="placeholder"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,75 @@
import { defineAsyncComponent } from 'vue'
import { format } from 'date-fns'
import { id } from 'date-fns/locale'
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import type { ActionReportData } from '~/components/app/action-report/sample'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{ width: 120 }, { width: 120 }, { width: 120 }, { width: 120 }, { width: 120 }, { width: 50 }],
headers: [
[
{ label: 'TANGGAL' },
{ label: 'INFORMASI UMUM' },
{ label: 'EDUKASI KHUSUS' },
{ label: 'RENCANA EDUKASI' },
{ label: 'PELAKSANAAN' },
{ label: 'AKSI' },
],
],
keys: ['reportAt', 'dpjp', 'operator', 'operationAt', 'operationType', 'action'],
delKeyNames: [
{ key: 'id', label: 'ID' },
{ key: 'dokter', label: 'Dokter' },
{ key: 'reportAt', label: 'Tanggal Laporan' },
],
parses: {
reportAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).reportAt
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
return result
},
operationAt: (rec: unknown): unknown => {
return '1 Rencana Edukasi'
},
system: (rec: unknown): unknown => {
return 'Cito'
},
operator: (rec: unknown): unknown => {
return '2 Edukasi dipilih'
},
billing: (rec: unknown): unknown => {
return 'General'
},
operationType: (rec: unknown): unknown => {
return '-'
},
dpjp: (rec: unknown): unknown => {
return '3 Informasi Dipilih'
},
parent: (rec: unknown): unknown => {
const recX = rec as any
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,39 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,75 @@
import { defineAsyncComponent } from 'vue'
import { format } from 'date-fns'
import { id } from 'date-fns/locale'
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import type { ActionReportData } from '~/components/app/action-report/sample'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{ width: 120 }, { width: 120 }, { width: 120 }, { width: 120 }, { width: 120 }, { width: 50 }],
headers: [
[
{ label: 'TANGGAL' },
{ label: 'INFORMASI UMUM' },
{ label: 'EDUKASI KHUSUS' },
{ label: 'RENCANA EDUKASI' },
{ label: 'PELAKSANAAN' },
{ label: 'AKSI' },
],
],
keys: ['reportAt', 'dpjp', 'operator', 'operationAt', 'operationType', 'action'],
delKeyNames: [
{ key: 'id', label: 'ID' },
{ key: 'dokter', label: 'Dokter' },
{ key: 'reportAt', label: 'Tanggal Laporan' },
],
parses: {
reportAt: (rec: unknown): unknown => {
const attr = (rec as ActionReportData).reportAt
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
return result
},
operationAt: (rec: unknown): unknown => {
return '1 Rencana Edukasi'
},
system: (rec: unknown): unknown => {
return 'Cito'
},
operator: (rec: unknown): unknown => {
return '2 Edukasi dipilih'
},
billing: (rec: unknown): unknown => {
return 'General'
},
operationType: (rec: unknown): unknown => {
return '-'
},
dpjp: (rec: unknown): unknown => {
return '3 Informasi Dipilih'
},
parent: (rec: unknown): unknown => {
const recX = rec as any
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,39 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,54 @@
import { addWeeks, formatISO } from 'date-fns'
export type ActionReportData = {
id: number
reportAt: string
operationAt: string
noRm: string
noBill: string
nama: string
jk: string
alamat: string
klinik: string
dokter: string
caraBayar: string
rujukan: string
ketRujukan: string
asal: string
}
export const sampleRows: ActionReportData[] = [
{
id: 1,
reportAt: formatISO(addWeeks(new Date(), -1)),
operationAt: formatISO(addWeeks(new Date(), 1)),
noRm: 'RM23311224',
noBill: '-',
nama: 'Ahmad Baidowi',
jk: 'L',
alamat: 'Jl Jaksa Agung S. No. 9',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
{
id: 2,
reportAt: new Date().toISOString(),
operationAt: formatISO(addWeeks(new Date(), 2)),
noRm: 'RM23455667',
noBill: '-',
nama: 'Abraham Sulaiman',
jk: 'L',
alamat: 'Purwantoro, Blimbing',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
// tambahkan lebih banyak baris contoh jika perlu
]
+99
View File
@@ -0,0 +1,99 @@
<script setup lang="ts">
import type { z } from 'zod'
import { toTypedSchema } from '@vee-validate/zod'
import { Loader2 } from 'lucide-vue-next'
import { useForm } from 'vee-validate'
import { useKeycloak } from "~/composables/useKeycloack"
interface Props {
schema: z.ZodSchema<any>
isLoading: boolean
}
const props = defineProps<Props>()
const emit = defineEmits<{
submit: [data: any]
sso: []
}>()
const { handleSubmit, defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(props.schema),
initialValues: {
name: '',
password: '',
},
})
const [name, nameAttrs] = defineField('name')
const [password, passwordAttrs] = defineField('password')
const onSubmit = handleSubmit(async (values) => {
try {
await emit('submit', values)
} catch (error) {
console.error('Submission failed:', error)
}
})
const { initKeycloak, getProfile, loginSSO } = useKeycloak()
const profile = ref<any>(null)
onMounted(async () => {
await initKeycloak('check-sso')
profile.value = getProfile()
console.log(profile)
})
const onSSO = (async () => {
try {
const redirect = window.location.origin + '/auth/sso'
await loginSSO({ redirectUri: redirect })
} catch (error) {
console.error('Call SSO failed:', error)
}
});
</script>
<template>
<form class="grid gap-6" @submit="onSubmit">
<div class="grid gap-2">
<Label for="name">Username</Label>
<Input
id="name"
v-model="name"
v-bind="nameAttrs"
:disabled="isLoading"
:class="{ 'border-red-500': errors.name }"
/>
<span v-if="errors.name" class="text-sm text-red-500">
{{ errors.name }}
</span>
</div>
<div class="grid gap-2">
<Label for="password">Password</Label>
<Input
id="password"
v-model="password"
v-bind="passwordAttrs"
type="password"
:disabled="isLoading"
:class="{ 'border-red-500': errors.password }"
/>
<span v-if="errors.password" class="text-sm text-red-500">
{{ errors.password }}
</span>
</div>
<Button type="submit" class="w-full" :disabled="isLoading || !meta.valid">
<Loader2 v-if="isLoading" class="mr-2 h-4 w-4 animate-spin" />
Login
</Button>
</form>
<Button @click="onSSO" target="_blank">
Login SSO
</Button>
</template>
+150
View File
@@ -0,0 +1,150 @@
<script setup lang="ts">
// Components
import Block from '~/components/pub/my-ui/doc-entry/block.vue'
import Cell from '~/components/pub/my-ui/doc-entry/cell.vue'
import Field from '~/components/pub/my-ui/doc-entry/field.vue'
import Label from '~/components/pub/my-ui/doc-entry/label.vue'
import Button from '~/components/pub/ui/button/Button.vue'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
// Constants
import { infraGroupCodesKeys } from '~/lib/constants'
// Types
import type { InfraFormData } from '~/schemas/infra.schema'
// Helpers
import type z from 'zod'
import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
interface Props {
schema: z.ZodSchema<any>
parents: any[]
values: any
isLoading?: boolean
isReadonly?: boolean
}
const props = defineProps<Props>()
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const emit = defineEmits<{
submit: [values: InfraFormData, resetForm: () => void]
cancel: [resetForm: () => void]
}>()
const { defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(props.schema),
initialValues: {
code: '',
name: '',
infraGroup_code: infraGroupCodesKeys.bed,
parent_id: null,
} as Partial<InfraFormData>,
})
const [code, codeAttrs] = defineField('code')
const [name, nameAttrs] = defineField('name')
const [infraGroup_code] = defineField('infraGroup_code')
const [parent_id, parentIdAttrs] = defineField('parent_id')
if (props.values) {
if (props.values.code !== undefined) code.value = props.values.code
if (props.values.name !== undefined) name.value = props.values.name
if (props.values.infraGroup_code !== undefined) infraGroup_code.value = props.values.infraGroup_code
if (props.values.parent_id !== undefined)
parent_id.value = props.values.parent_id ? Number(props.values.parent_id) : null
}
const resetForm = () => {
code.value = ''
name.value = ''
infraGroup_code.value = infraGroupCodesKeys.bed
parent_id.value = null
}
function onSubmitForm() {
const formData: InfraFormData = {
code: code.value || '',
name: name.value || '',
infraGroup_code: infraGroup_code.value || infraGroupCodesKeys.bed,
parent_id: parent_id.value ? Number(parent_id.value) : null,
}
emit('submit', formData, resetForm)
}
function onCancelForm() {
emit('cancel', resetForm)
}
</script>
<template>
<form
id="form-floor"
@submit.prevent
>
<Block
labelSize="thin"
class="!mb-2.5 !pt-0 xl:!mb-3"
:colCount="1"
>
<Cell>
<Label height="compact">Kode</Label>
<Field :errMessage="errors.code">
<Input
id="code"
v-model="code"
v-bind="codeAttrs"
:disabled="isLoading || isReadonly"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Nama</Label>
<Field :errMessage="errors.name">
<Input
id="name"
v-model="name"
v-bind="nameAttrs"
:disabled="isLoading || isReadonly"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Kamar</Label>
<Field :errMessage="errors.parent_id">
<Combobox
id="parent"
v-model="parent_id"
v-bind="parentIdAttrs"
:items="parents"
:is-disabled="isLoading || isReadonly"
placeholder="Pilih Kamar"
search-placeholder="Cari Kamar"
empty-message="Item tidak ditemukan"
/>
</Field>
</Cell>
</Block>
<div class="my-2 flex justify-end gap-2 py-2">
<Button
type="button"
variant="secondary"
class="w-[120px]"
@click="onCancelForm"
>
Kembali
</Button>
<Button
v-if="!isReadonly"
type="button"
class="w-[120px]"
:disabled="isLoading || !meta.valid"
@click="onSubmitForm"
>
Simpan
</Button>
</div>
</form>
</template>
+44
View File
@@ -0,0 +1,44 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{}, {}, {}, { width: 50 }],
headers: [[
{ label: 'Kode' },
{ label: 'Nama' },
{ label: 'Kamar' },
{ label: '' },
]],
keys: ['code', 'name', 'parent', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
+36
View File
@@ -0,0 +1,36 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,90 @@
<script setup lang="ts">
import { ActionEvents, type LinkItem, type ListItemDto } from '~/components/pub/my-ui/data/types';
const props = defineProps<{
rec: ListItemDto
}>()
const recId = inject<Ref<number>>('rec_id')!
const recAction = inject<Ref<string>>('rec_action')!
const recItem = inject<Ref<any>>('rec_item')!
const activeKey = ref<string | null>(null)
const linkItems: LinkItem[] = [
{
label: 'Print',
onClick: () => {
print()
},
icon: 'i-lucide-printer',
},
{
label: 'Log History',
onClick: () => {
history()
},
icon: 'i-lucide-logs',
},
{
label: 'Hapus',
onClick: () => {
del()
},
icon: 'i-lucide-trash',
},
]
function print() {
recId.value = props.rec.id || 0
recAction.value = ActionEvents.showProcess
recItem.value = props.rec
}
function history() {
recId.value = props.rec.id || 0
recAction.value = ActionEvents.showDetail
recItem.value = props.rec
}
function del() {
recId.value = props.rec.id || 0
recAction.value = ActionEvents.showConfirmDelete
recItem.value = props.rec
}
</script>
<template>
<div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<SidebarMenuButton
size="lg"
class="data-[state=open]:text-sidebar-accent-foreground data-[state=open]:bg-white dark:data-[state=open]:bg-slate-800"
>
<Icon
name="i-lucide-chevrons-up-down"
class="ml-auto size-4"
/>
</SidebarMenuButton>
</DropdownMenuTrigger>
<DropdownMenuContent
class="w-[--radix-dropdown-menu-trigger-width] min-w-40 rounded-lg border border-slate-200 bg-white text-black dark:border-slate-700 dark:bg-slate-800 dark:text-white"
align="end"
>
<DropdownMenuGroup>
<DropdownMenuItem
v-for="item in linkItems"
:key="item.label"
class="hover:bg-gray-100 dark:hover:bg-slate-700"
@click="item.onClick"
@mouseenter="activeKey = item.label"
@mouseleave="activeKey = null"
>
<Icon :name="item.icon ?? ''" />
<span :class="activeKey === item.label ? 'text-sidebar-accent-foreground' : ''">{{ item.label }}</span>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
</div>
</template>
@@ -0,0 +1,49 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import { toTypedSchema } from '@vee-validate/zod'
import FieldGroup from '~/components/pub/my-ui/form/field-group.vue'
import Field from '~/components/pub/my-ui/form/field.vue'
import Label from '~/components/pub/my-ui/form/label.vue'
import Select from '~/components/pub/my-ui/form/select.vue'
import { Form } from '~/components/pub/ui/form'
import InputBase from '~/components/pub/my-ui/form/input-base.vue'
import SelectOriginPolyclinic from '~/components/app/bpjs/control-letter/_common/select-origin-polyclinic.vue'
import SelectDestinationPolyclinic from '~/components/app/bpjs/control-letter/_common/select-destination-polyclinic.vue'
import { cn } from '~/lib/utils'
const props = defineProps()
const items = reactive([
{ id: 1, description: 'Shipped from warehouse', createdAt: new Date(Date.now() - 86400000 * 2) },
{ id: 2, description: 'In transit to distribution center', createdAt: new Date(Date.now() - 86400000) },
{ id: 3, description: 'Out for delivery (Current)', createdAt: new Date() },
])
const itemsCount = computed(() => items.length || 0)
</script>
<template>
<ul :class="cn('pb-5 flex flex-col min-h-[30rem]', '')">
<li v-for="(item, index) in items" :key="item.id" class="flex gap-3 items-start">
<div class="flex flex-col items-center">
<div class="h-5 w-5 rounded-full border-2 border-gray-300 flex items-center justify-center">
<div :class="cn('dark:bg-white border-gray-300 rounded-full p-1.5',
index === 0 ? 'bg-green-500' : 'bg-transparent'
)">
</div>
</div>
<hr v-if="index !== itemsCount - 1" class="h-8 w-0.5 bg-gray-300 dark:bg-gray-300" aria-hidden="true">
</div>
<div class="flex justify-between items-center min-w-96">
<div class="max-w-80">
<time :class="cn('font-medium text-gray-800 dark:text-gray-100', '')">
{{ item?.createdAt.toLocaleDateString('id-ID') }}
</time>
<h1 :class="cn('text-gray-500 dark:text-gray-400', '')">{{ item.description }}</h1>
</div>
</div>
</li>
</ul>
</template>
@@ -0,0 +1,104 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import { Calendar as CalendarIcon, Filter as FilterIcon, Search } from 'lucide-vue-next'
import { ref } from 'vue'
import type { Ref } from 'vue'
import type { DateRange } from 'radix-vue'
import { CalendarDate, DateFormatter, getLocalTimeZone } from '@internationalized/date'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
const dateRange = ref<{ from: Date | null; to: Date | null }>({
from: new Date(),
to: new Date(),
})
const df = new DateFormatter('en-US', {
dateStyle: 'medium',
})
const value = ref({
start: new CalendarDate(2022, 1, 20),
end: new CalendarDate(2022, 1, 20).add({ days: 20 }),
}) as Ref<DateRange>
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Popover>
<PopoverTrigger as-child>
<Button
variant="outline"
:class="cn('w-full bg-white border-gray-400 justify-start text-left font-normal', !value && 'text-muted-foreground')"
>
<CalendarIcon class="mr-2 h-4 w-4" />
<template v-if="value.start">
<template v-if="value.end">
{{ df.format(value.start.toDate(getLocalTimeZone())) }} -
{{ df.format(value.end.toDate(getLocalTimeZone())) }}
</template>
<template v-else>
{{ df.format(value.start.toDate(getLocalTimeZone())) }}
</template>
</template>
<template v-else> Pick a date </template>
</Button>
</PopoverTrigger>
<PopoverContent class="w-auto p-0">
<RangeCalendar
v-model="value"
initial-focus
:number-of-months="2"
@update:start-value="(startDate) => (value.start = startDate)"
/>
</PopoverContent>
</Popover>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,70 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
// Generate job options from constants, sama seperti pola genderCodes
const jobOptions = mapToComboboxOptList(occupationCodes)
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="jobOptions"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,70 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
// Generate job options from constants, sama seperti pola genderCodes
const jobOptions = mapToComboboxOptList(occupationCodes)
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="jobOptions"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,128 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import { toTypedSchema } from '@vee-validate/zod'
import FieldGroup from '~/components/pub/my-ui/form/field-group.vue'
import Field from '~/components/pub/my-ui/form/field.vue'
import Label from '~/components/pub/my-ui/form/label.vue'
import Select from '~/components/pub/my-ui/form/select.vue'
import { Form } from '~/components/pub/ui/form'
import InputBase from '~/components/pub/my-ui/form/input-base.vue'
import SelectOriginPolyclinic from '~/components/app/bpjs/control-letter/_common/select-origin-polyclinic.vue'
import SelectDestinationPolyclinic from '~/components/app/bpjs/control-letter/_common/select-destination-polyclinic.vue'
import { cn } from '~/lib/utils'
import SelectDateRange from './_common/select-date-range.vue'
interface InstallationFormData {
name: string
code: string
encounterClassCode: string
}
const props = defineProps<{
installation: {
msg: {
placeholder: string
}
items: {
value: string
label: string
code: string
}[]
}
schema: any
initialValues?: Partial<InstallationFormData>
errors?: FormErrors
}>()
const emit = defineEmits<{
submit: [values: InstallationFormData, resetForm: () => void]
reset: [resetForm: () => void]
}>()
const formSchema = toTypedSchema(props.schema)
// Form submission handler
function onSubmitForm(values: any, { resetForm }: { resetForm: () => void }) {
const formData: InstallationFormData = {
name: values.name || '',
code: values.code || '',
encounterClassCode: values.encounterClassCode || '',
}
emit('submit', formData, resetForm)
}
// Form cancel handler
function onResetForm({ resetForm }: { resetForm: () => void }) {
emit('reset', resetForm)
}
const items = ref([
{ label: 'Rujukan Internal', value: 'ri' },
{ label: 'SEP Rujukan', value: 'sr' },
])
</script>
<template>
<Form
v-slot="{ handleSubmit, resetForm }"
as=""
keep-values
:validation-schema="formSchema"
:initial-values="initialValues"
>
<form id="entry-form" @submit="handleSubmit($event, (values) => onSubmitForm(values, { resetForm }))">
<div class="mb-5 border-b border-b-slate-300 pb-7 text-lg xl:text-xl">
<div class="flex flex-col justify-between">
<SelectDateRange
field-name="releaseDate"
label="Tanggal Penerbitan"
placeholder="Tanggal Penerbitan"
:errors="errors"
is-required
/>
<SelectDateRange
field-name="controlPlanDate"
label="Tanggal Rencana Kontrol"
placeholder="Tanggal Rencana Kontrol"
:errors="errors"
is-required
/>
<InputBase
field-name="patientName"
label="Nama Pasien"
placeholder="Nama Pasien"
/>
<InputBase
field-name="cardNumber"
label="Nomor Kartu"
placeholder="Nomor Kartu"
/>
<InputBase
field-name="sepNumber"
label="Nomor SEP"
placeholder="Nomor SEP"
/>
<SelectOriginPolyclinic
field-name="originPolyclinic"
label="Poliklinik Asal"
placeholder="Pilih Poliklinik Asal"
:errors="errors"
is-required
/>
<SelectDestinationPolyclinic
field-name="destinationPolyclinic"
label="Poliklinik Tujuan"
placeholder="Pilih Poliklinik Tujuan"
:errors="errors"
is-required
/>
</div>
</div>
<div class="my-2 flex items-center gap-3 justify-end">
<Button @click="onResetForm" variant="secondary">Reset</Button>
<Button @click="onSubmitForm">Terapkan</Button>
</div>
</form>
</Form>
</template>
@@ -0,0 +1,108 @@
import type { Config } from '~/components/pub/my-ui/data-table'
import type { Patient } from '~/models/patient'
import { defineAsyncComponent } from 'vue'
import { educationCodes, genderCodes } from '~/lib/constants'
import { calculateAge } from '~/lib/utils'
const action = defineAsyncComponent(() => import('./_common/dropdown-action.vue'))
const statusBadge = defineAsyncComponent(() => import('~/components/pub/my-ui/badge/status-badge.vue'))
export const config: Config = {
cols: [{}, {}, {}, {},{}, {}, {}, {}, {}, {width: 90},{width: 10},],
headers: [
[
{ label: 'No Surat' },
{ label: 'No MR' },
{ label: 'Nama' },
{ label: 'Tgl Rencana Kontrol' },
{ label: 'Tgl Penerbitan' },
{ label: 'Klinik Asal' },
{ label: 'Klinik Tujuan' },
{ label: 'DPJP' },
{ label: 'No SEP Asal' },
{ label: 'Status' },
{ label: 'Action' },
],
],
keys: ['birth_date', 'number', 'person.name', 'birth_date', 'birth_date',
'birth_date', 'number', 'person.name', 'birth_date', 'status', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
patientId: (rec: unknown): unknown => {
const patient = rec as Patient
return patient.number
},
identity_number: (rec: unknown): unknown => {
const { person } = rec as Patient
if (person.nationality == 'WNA') {
return person.passportNumber
}
return person.residentIdentityNumber || '-'
},
birth_date: (rec: unknown): unknown => {
const { person } = rec as Patient
if (typeof person.birthDate == 'object' && person.birthDate) {
return (person.birthDate as Date).toLocaleDateString('id-ID')
} else if (typeof person.birthDate == 'string') {
return (person.birthDate as string).substring(0, 10)
}
return person.birthDate
},
patient_age: (rec: unknown): unknown => {
const { person } = rec as Patient
return calculateAge(person.birthDate)
},
gender: (rec: unknown): unknown => {
const { person } = rec as Patient
if (typeof person.gender_code == 'number' && person.gender_code >= 0) {
return person.gender_code
} else if (typeof person.gender_code === 'string' && person.gender_code) {
return genderCodes[person.gender_code] || '-'
}
return '-'
},
education: (rec: unknown): unknown => {
const { person } = rec as Patient
if (typeof person.education_code == 'number' && person.education_code >= 0) {
return person.education_code
} else if (typeof person.education_code === 'string' && person.education_code) {
return educationCodes[person.education_code] || '-'
}
return '-'
},
},
components: {
action(rec, idx) {
return {
idx,
rec: rec as object,
component: action,
}
},
status(rec, idx) {
return {
idx,
rec: rec as object,
component: statusBadge,
}
},
},
htmls: {
patient_address(_rec) {
return '-'
},
},
}
@@ -0,0 +1,31 @@
<script setup lang="ts">
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
+108
View File
@@ -0,0 +1,108 @@
<script setup lang="ts">
// Components
import Block from '~/components/pub/my-ui/doc-entry/block.vue'
import Cell from '~/components/pub/my-ui/doc-entry/cell.vue'
import Field from '~/components/pub/my-ui/doc-entry/field.vue'
import Label from '~/components/pub/my-ui/doc-entry/label.vue'
import Button from '~/components/pub/ui/button/Button.vue'
// Constants
import { infraGroupCodesKeys } from "~/lib/constants"
// Types
import type { InfraFormData } from '~/schemas/infra.schema'
// Helpers
import type z from 'zod'
import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
interface Props {
schema: z.ZodSchema<any>
values: any
isLoading?: boolean
isReadonly?: boolean
}
const props = defineProps<Props>()
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const emit = defineEmits<{
submit: [values: InfraFormData, resetForm: () => void]
cancel: [resetForm: () => void]
}>()
const { defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(props.schema),
initialValues: {
code: '',
name: '',
infraGroup_code: infraGroupCodesKeys.building,
parent_id: null,
} as Partial<InfraFormData>,
})
const [code, codeAttrs] = defineField('code')
const [name, nameAttrs] = defineField('name')
const [infraGroup_code] = defineField('infraGroup_code')
const [parent_id] = defineField('parent_id')
if (props.values) {
if (props.values.code !== undefined) code.value = props.values.code
if (props.values.name !== undefined) name.value = props.values.name
if (props.values.infraGroup_code !== undefined) infraGroup_code.value = props.values.infraGroup_code
if (props.values.parent_id !== undefined) parent_id.value = props.values.parent_id
}
const resetForm = () => {
code.value = ''
name.value = ''
infraGroup_code.value = infraGroupCodesKeys.building
parent_id.value = null
}
function onSubmitForm() {
const formData: InfraFormData = {
code: code.value || '',
name: name.value || '',
infraGroup_code: infraGroup_code.value || infraGroupCodesKeys.building,
parent_id: parent_id.value || null,
}
emit('submit', formData, resetForm)
}
function onCancelForm() {
emit('cancel', resetForm)
}
</script>
<template>
<form id="form-building" @submit.prevent>
<Block labelSize="thin" class="!mb-2.5 !pt-0 xl:!mb-3" :colCount="1">
<Cell>
<Label height="compact">Kode</Label>
<Field :errMessage="errors.code">
<Input id="code" v-model="code" v-bind="codeAttrs" :disabled="isLoading || isReadonly" />
</Field>
</Cell>
<Cell>
<Label height="compact">Nama</Label>
<Field :errMessage="errors.name">
<Input id="name" v-model="name" v-bind="nameAttrs" :disabled="isLoading || isReadonly" />
</Field>
</Cell>
</Block>
<div class="my-2 flex justify-end gap-2 py-2">
<Button type="button" variant="secondary" class="w-[120px]" @click="onCancelForm"> Kembali </Button>
<Button
v-if="!isReadonly"
type="button"
class="w-[120px]"
:disabled="isLoading || !meta.valid"
@click="onSubmitForm"
>
Simpan
</Button>
</div>
</form>
</template>
+36
View File
@@ -0,0 +1,36 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{}, {}, { width: 50 }],
headers: [[
{ label: 'Kode' },
{ label: 'Nama' },
{ label: '' },
]],
keys: ['code', 'name', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
+36
View File
@@ -0,0 +1,36 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
+150
View File
@@ -0,0 +1,150 @@
<script setup lang="ts">
// Components
import Block from '~/components/pub/my-ui/doc-entry/block.vue'
import Cell from '~/components/pub/my-ui/doc-entry/cell.vue'
import Field from '~/components/pub/my-ui/doc-entry/field.vue'
import Label from '~/components/pub/my-ui/doc-entry/label.vue'
import Button from '~/components/pub/ui/button/Button.vue'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
// Constants
import { infraGroupCodesKeys } from '~/lib/constants'
// Types
import type { InfraFormData } from '~/schemas/infra.schema'
// Helpers
import type z from 'zod'
import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
interface Props {
schema: z.ZodSchema<any>
parents: any[]
values: any
isLoading?: boolean
isReadonly?: boolean
}
const props = defineProps<Props>()
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const emit = defineEmits<{
submit: [values: InfraFormData, resetForm: () => void]
cancel: [resetForm: () => void]
}>()
const { defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(props.schema),
initialValues: {
code: '',
name: '',
infraGroup_code: infraGroupCodesKeys.chamber,
parent_id: null,
} as Partial<InfraFormData>,
})
const [code, codeAttrs] = defineField('code')
const [name, nameAttrs] = defineField('name')
const [infraGroup_code] = defineField('infraGroup_code')
const [parent_id, parentIdAttrs] = defineField('parent_id')
if (props.values) {
if (props.values.code !== undefined) code.value = props.values.code
if (props.values.name !== undefined) name.value = props.values.name
if (props.values.infraGroup_code !== undefined) infraGroup_code.value = props.values.infraGroup_code
if (props.values.parent_id !== undefined)
parent_id.value = props.values.parent_id ? Number(props.values.parent_id) : null
}
const resetForm = () => {
code.value = ''
name.value = ''
infraGroup_code.value = infraGroupCodesKeys.chamber
parent_id.value = null
}
function onSubmitForm() {
const formData: InfraFormData = {
code: code.value || '',
name: name.value || '',
infraGroup_code: infraGroup_code.value || infraGroupCodesKeys.chamber,
parent_id: parent_id.value ? Number(parent_id.value) : null,
}
emit('submit', formData, resetForm)
}
function onCancelForm() {
emit('cancel', resetForm)
}
</script>
<template>
<form
id="form-floor"
@submit.prevent
>
<Block
labelSize="thin"
class="!mb-2.5 !pt-0 xl:!mb-3"
:colCount="1"
>
<Cell>
<Label height="compact">Kode</Label>
<Field :errMessage="errors.code">
<Input
id="code"
v-model="code"
v-bind="codeAttrs"
:disabled="isLoading || isReadonly"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Nama</Label>
<Field :errMessage="errors.name">
<Input
id="name"
v-model="name"
v-bind="nameAttrs"
:disabled="isLoading || isReadonly"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Lantai</Label>
<Field :errMessage="errors.parent_id">
<Combobox
id="parent"
v-model="parent_id"
v-bind="parentIdAttrs"
:items="parents"
:is-disabled="isLoading || isReadonly"
placeholder="Pilih Lantai"
search-placeholder="Cari Lantai"
empty-message="Item tidak ditemukan"
/>
</Field>
</Cell>
</Block>
<div class="my-2 flex justify-end gap-2 py-2">
<Button
type="button"
variant="secondary"
class="w-[120px]"
@click="onCancelForm"
>
Kembali
</Button>
<Button
v-if="!isReadonly"
type="button"
class="w-[120px]"
:disabled="isLoading || !meta.valid"
@click="onSubmitForm"
>
Simpan
</Button>
</div>
</form>
</template>
+44
View File
@@ -0,0 +1,44 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{}, {}, {}, { width: 50 }],
headers: [[
{ label: 'Kode' },
{ label: 'Nama' },
{ label: 'Lantai' },
{ label: '' },
]],
keys: ['code', 'name', 'parent', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
+36
View File
@@ -0,0 +1,36 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,30 @@
<script setup lang="ts">
import Button from '~/components/pub/ui/button/Button.vue'
const props = defineProps<{
rec: any
idx?: number
}>()
// Try to get proses handler from parent via inject
const prosesHandler = inject<(rec: any) => void>('proses-handler', null)
function handleProses() {
if (prosesHandler) {
prosesHandler(props.rec)
}
}
</script>
<template>
<div class="flex justify-center">
<Button
type="button"
class="border-orange-500 bg-orange-500 text-white hover:bg-orange-600"
@click="handleProses"
>
Proses
</Button>
</div>
</template>
@@ -0,0 +1,164 @@
<script setup lang="ts">
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '~/components/pub/ui/table'
import Input from '~/components/pub/ui/input/Input.vue'
import DatepickerSingle from '~/components/pub/my-ui/datepicker/datepicker-single.vue'
import Button from '~/components/pub/ui/button/Button.vue'
import { format, parseISO } from 'date-fns'
import { id as localeID } from 'date-fns/locale'
interface Props {
open?: boolean
tanggalPemeriksaan?: string | Date
jadwalTanggalPemeriksaan?: string | Date
isLoading?: boolean
}
const props = withDefaults(defineProps<Props>(), {
open: false,
tanggalPemeriksaan: undefined,
jadwalTanggalPemeriksaan: undefined,
isLoading: false,
})
const emit = defineEmits<{
'update:open': [value: boolean]
'update:date': [value: string | undefined]
'update:schedule': [value: string | undefined]
submit: [data: { tanggalPemeriksaan: string | undefined; jadwalTanggalPemeriksaan: string | undefined }]
}>()
// Local state for jadwal tanggal pemeriksaan
const jadwalTanggal = ref<string | undefined>(
props.jadwalTanggalPemeriksaan
? typeof props.jadwalTanggalPemeriksaan === 'string'
? props.jadwalTanggalPemeriksaan
: format(props.jadwalTanggalPemeriksaan, 'yyyy-MM-dd')
: undefined,
)
// Watch for external changes
watch(
() => props.jadwalTanggalPemeriksaan,
(newValue) => {
if (newValue) {
jadwalTanggal.value =
typeof newValue === 'string' ? newValue : format(newValue, 'yyyy-MM-dd')
} else {
jadwalTanggal.value = undefined
}
},
)
// Watch local changes
watch(jadwalTanggal, (newValue) => {
emit('update:schedule', newValue)
})
// Format date for display
const formattedTanggalPemeriksaan = computed(() => {
if (!props.tanggalPemeriksaan) return ''
try {
const date =
props.tanggalPemeriksaan instanceof Date
? props.tanggalPemeriksaan
: parseISO(props.tanggalPemeriksaan)
return format(date, 'dd MMMM yyyy', { locale: localeID })
} catch {
return props.tanggalPemeriksaan.toString()
}
})
// Handle submit
function handleSubmit() {
emit('submit', {
tanggalPemeriksaan: props.tanggalPemeriksaan
? typeof props.tanggalPemeriksaan === 'string'
? props.tanggalPemeriksaan
: format(props.tanggalPemeriksaan, 'yyyy-MM-dd')
: undefined,
jadwalTanggalPemeriksaan: jadwalTanggal.value,
})
}
// Table data for Jadwal Ruang Tindakan
const scheduleData = [
{
no: 1,
namaJenis: 'Ruang Tindakan',
jenisPemeriksaan: 'KEMOTERAPI',
},
]
</script>
<template>
<Dialog
:open="open"
size="lg"
title="Verifikasi Jadwal Pasien"
@update:open="$emit('update:open', $event)"
>
<div class="space-y-6 py-4">
<!-- Jadwal Ruang Tindakan Section -->
<div class="space-y-3">
<h4 class="text-base font-semibold">Jadwal Ruang Tindakan</h4>
<div class="overflow-hidden rounded-md border">
<Table>
<TableHeader class="bg-gray-50">
<TableRow>
<TableHead class="font-semibold">NO</TableHead>
<TableHead class="font-semibold">NAMA JENIS</TableHead>
<TableHead class="font-semibold">JENIS PEMERIKSAAN</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow v-for="(row, index) in scheduleData" :key="index">
<TableCell>{{ row.no }}</TableCell>
<TableCell>{{ row.namaJenis }}</TableCell>
<TableCell>{{ row.jenisPemeriksaan }}</TableCell>
</TableRow>
</TableBody>
</Table>
</div>
</div>
<!-- Tanggal Pemeriksaan Section -->
<div class="space-y-2">
<label class="text-sm font-medium">Tanggal Pemeriksaan</label>
<Input
:model-value="formattedTanggalPemeriksaan"
:disabled="true"
class="bg-gray-100 text-gray-700"
readonly
/>
</div>
<!-- Jadwal Tanggal Pemeriksaan Section -->
<div class="space-y-2">
<label class="text-sm font-medium">
Jadwal Tanggal Pemeriksaan
<span class="text-red-500">*</span>
</label>
<DatepickerSingle
v-model="jadwalTanggal"
placeholder="Pilih Jadwal"
:disabled="isLoading"
/>
</div>
<!-- Action Button -->
<div class="flex justify-end pt-4">
<Button
type="button"
:disabled="isLoading || !jadwalTanggal"
class="bg-gradient-to-r from-orange-500 to-orange-400 hover:from-orange-600 hover:to-orange-500 text-white shadow-md"
@click="handleSubmit"
>
<Icon name="i-lucide-calendar-check" class="mr-2 h-4 w-4" />
Simpan Jadwal
</Button>
</div>
</div>
</Dialog>
</template>
@@ -0,0 +1,63 @@
<script setup lang="ts">
import type { LinkItem, ListItemDto } from '~/components/pub/my-ui/data/types'
const props = defineProps<{
rec: ListItemDto
}>()
const recId = inject<Ref<number>>('rec_id')!
const recAction = inject<Ref<string>>('rec_action')!
const recItem = inject<Ref<any>>('rec_item')!
const activeKey = ref<string | null>(null)
const linkItems: LinkItem[] = [
{
label: 'Proses',
onClick: () => {
process()
},
icon: 'i-lucide-pencil',
},
]
function process() {
recId.value = props.rec.id || 0
recAction.value = 'Process'
recItem.value = props.rec
}
</script>
<template>
<div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<SidebarMenuButton
size="lg"
class="data-[state=open]:text-sidebar-accent-foreground data-[state=open]:bg-white dark:data-[state=open]:bg-slate-800"
>
<Icon
name="i-lucide-chevrons-up-down"
class="ml-auto size-4"
/>
</SidebarMenuButton>
</DropdownMenuTrigger>
<DropdownMenuContent
class="w-[--radix-dropdown-menu-trigger-width] min-w-40 rounded-lg border border-slate-200 bg-white text-black dark:border-slate-700 dark:bg-slate-800 dark:text-white"
align="end"
>
<DropdownMenuGroup>
<DropdownMenuItem
v-for="item in linkItems"
:key="item.label"
class="hover:bg-gray-100 dark:hover:bg-slate-700"
@click="item.onClick"
@mouseenter="activeKey = item.label"
@mouseleave="activeKey = null"
>
<Icon :name="item.icon ?? ''" />
<span :class="activeKey === item.label ? 'text-sidebar-accent-foreground' : ''">{{ item.label }}</span>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
</div>
</template>
@@ -0,0 +1,302 @@
<script setup lang="ts">
// Components
import Block from '~/components/pub/my-ui/doc-entry/block.vue'
import Cell from '~/components/pub/my-ui/doc-entry/cell.vue'
import Field from '~/components/pub/my-ui/doc-entry/field.vue'
import Label from '~/components/pub/my-ui/doc-entry/label.vue'
import Input from '~/components/pub/ui/input/Input.vue'
import Button from '~/components/pub/ui/button/Button.vue'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import DatepickerSingle from '~/components/pub/my-ui/datepicker/datepicker-single.vue'
// Helpers
import type z from 'zod'
import { useForm } from 'vee-validate'
import { toTypedSchema } from '@vee-validate/zod'
import { chemotherapySchema } from "~/schemas/chemotherapy.schema"
interface Props {
values?: any
isLoading?: boolean
isReadonly?: boolean
}
const props = defineProps<Props>()
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const items = [
{ value: 'item-1', label: 'Item 1' },
{ value: 'item-2', label: 'Item 2' },
{ value: 'item-3', label: 'Item 3' },
]
const emit = defineEmits<{
submit: [values: any, resetForm: () => void]
cancel: [resetForm: () => void]
}>()
const { defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(chemotherapySchema),
initialValues: {
namaPasien: '',
tanggalLahir: '',
noRM: '',
alamat: '',
beratBadan: '',
tinggiBadan: '',
diagnosa: '',
siklus: '',
periodeAwal: '',
periodeAkhir: '',
tanggalKemoterapi: '',
dokterKRJ: '',
},
})
// Define form fields
const [namaPasien, namaPasienAttrs] = defineField('namaPasien')
const [tanggalLahir, tanggalLahirAttrs] = defineField('tanggalLahir')
const [noRM, noRMAttrs] = defineField('noRM')
const [alamat, alamatAttrs] = defineField('alamat')
const [beratBadan, beratBadanAttrs] = defineField('beratBadan')
const [tinggiBadan, tinggiBadanAttrs] = defineField('tinggiBadan')
const [diagnosa, diagnosaAttrs] = defineField('diagnosa')
const [siklus, siklusAttrs] = defineField('siklus')
const [periodeAwal, periodeAwalAttrs] = defineField('periodeAwal')
const [periodeAkhir, periodeAkhirAttrs] = defineField('periodeAkhir')
const [tanggalKemoterapi, tanggalKemoterapiAttrs] = defineField('tanggalKemoterapi')
const [dokterKRJ, dokterKRJAttrs] = defineField('dokterKRJ')
// Set initial values if provided
if (props.values) {
// Object.entries(props.values).forEach(([key, value]) => {
// if (value !== undefined) {
// const field = defineField(key)[0]
// field.value = value
// }
// })
}
const resetForm = () => {
// Object.keys(meta.value.initialValues).forEach((key) => {
// const field = defineField(key)[0]
// field.value = ''
// })
}
function onSubmitForm() {
const formData = {
namaPasien: namaPasien.value,
tanggalLahir: tanggalLahir.value,
noRM: noRM.value,
alamat: alamat.value,
beratBadan: beratBadan.value,
tinggiBadan: tinggiBadan.value,
diagnosa: diagnosa.value,
siklus: siklus.value,
periodeAwal: periodeAwal.value,
periodeAkhir: periodeAkhir.value,
tanggalKemoterapi: tanggalKemoterapi.value,
dokterKRJ: dokterKRJ.value,
}
emit('submit', formData, resetForm)
}
function onCancelForm() {
emit('cancel', resetForm)
}
</script>
<template>
<form @submit.prevent>
<!-- Data Pasien Section -->
<div class="mb-6">
<h3 class="mb-4 text-lg font-semibold">Data Pasien</h3>
<Block
labelSize="thin"
class="!mb-2.5 !pt-0 xl:!mb-3"
>
<Cell>
<Label height="compact">Nama Pasien</Label>
<Field :errMessage="errors.namaPasien">
<Input
v-model="namaPasien"
v-bind="namaPasienAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan nama pasien"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Tanggal Lahir</Label>
<Field :errMessage="errors.tanggalLahir">
<DatePicker
v-model="tanggalLahir"
v-bind="tanggalLahirAttrs"
:disabled="isLoading || isReadonly"
placeholder="Pilih tanggal lahir"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">No. RM</Label>
<Field :errMessage="errors.noRM">
<Input
v-model="noRM"
v-bind="noRMAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan nomor RM"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Alamat</Label>
<Field :errMessage="errors.alamat">
<Input
v-model="alamat"
v-bind="alamatAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan alamat"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Berat Badan</Label>
<Field :errMessage="errors.beratBadan">
<Input
v-model="beratBadan"
v-bind="beratBadanAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan berat badan"
type="number"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Tinggi Badan</Label>
<Field :errMessage="errors.tinggiBadan">
<Input
v-model="tinggiBadan"
v-bind="tinggiBadanAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan tinggi badan"
type="number"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Diagnosa</Label>
<Field :errMessage="errors.diagnosa">
<Combobox
id="diagnose"
v-model="diagnosa"
v-bind="diagnosaAttrs"
:items="items"
:is-disabled="isLoading || isReadonly"
placeholder="Tentukan diagnosa pasien"
search-placeholder="Cari diagnosa"
empty-message="Diagnosa tidak ditemukan"
/>
</Field>
</Cell>
</Block>
</div>
<!-- Protokol Kemoterapi Section -->
<div class="mb-6">
<h3 class="mb-4 text-lg font-semibold">Protokol Kemoterapi</h3>
<Block
labelSize="thin"
class="!mb-2.5 !pt-0 xl:!mb-3"
>
<Cell>
<Label height="compact">Siklus</Label>
<Field :errMessage="errors.siklus">
<Input
v-model="siklus"
v-bind="siklusAttrs"
:disabled="isLoading || isReadonly"
placeholder="Masukkan siklus"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Periode</Label>
<div class="flex items-center gap-4">
<Field
:errMessage="errors.periodeAwal"
class="flex-1"
>
<DatepickerSingle
v-model="periodeAwal"
v-bind="periodeAwalAttrs"
:disabled="isLoading || isReadonly"
placeholder="Mulai Periode"
/>
</Field>
<span>Sampai</span>
<Field
:errMessage="errors.periodeAkhir"
class="flex-1"
>
<DatepickerSingle
v-model="periodeAkhir"
v-bind="periodeAkhirAttrs"
:disabled="isLoading || isReadonly"
placeholder="Akhir Periode"
/>
</Field>
</div>
</Cell>
<Cell>
<Label height="compact">Tanggal Kemoterapi</Label>
<Field :errMessage="errors.tanggalKemoterapi">
<DatepickerSingle
v-model="tanggalKemoterapi"
v-bind="tanggalKemoterapiAttrs"
:disabled="isLoading || isReadonly"
placeholder="Pilih tanggal kemoterapi"
/>
</Field>
</Cell>
<Cell>
<Label height="compact">Dokter Ruang Tindakan</Label>
<Field :errMessage="errors.dokterKRJ">
<Combobox
id="doctor"
v-model="dokterKRJ"
v-bind="dokterKRJAttrs"
:items="items"
:is-disabled="isLoading || isReadonly"
placeholder="Pilih dokter"
search-placeholder="Cari dokter"
empty-message="Dokter tidak ditemukan"
/>
</Field>
</Cell>
</Block>
</div>
<!-- Form Actions -->
<div class="flex justify-end gap-2 py-2">
<Button
type="button"
variant="secondary"
class="w-[120px]"
@click="onCancelForm"
>
Kembali
</Button>
<Button
v-if="!isReadonly"
type="button"
class="w-[120px]"
:disabled="isLoading || !meta.valid"
@click="onSubmitForm"
>
Simpan
</Button>
</div>
</form>
</template>
@@ -0,0 +1,37 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.admin'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,80 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('./dropdown-action-process.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 50 },
],
headers: [
[
{ label: 'TANGGAL' },
{ label: 'NO. RM' },
{ label: 'NO. BILL' },
{ label: 'JK' },
{ label: 'ALAMAT' },
{ label: 'KLINIK ASAL' },
{ label: 'NAMA DOKTER' },
{ label: 'CARA BAYAR' },
{ label: 'RUJUKAN' },
{ label: 'KET. RUJUKAN' },
{ label: 'ASAL' },
{ label: '' },
],
],
keys: [
'tanggal',
'noRm',
'noBill',
'jk',
'alamat',
'klinik',
'dokter',
'caraBayar',
'rujukan',
'ketRujukan',
'asal',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,69 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [
{ width: 60 },
{ width: 200 },
{ width: 100 },
{ width: 100 },
{ width: 150 },
{ width: 80 },
{ width: 200 },
{ width: 120 },
],
headers: [
[
{ label: 'NO.' },
{ label: 'NAMA OBAT' },
{ label: 'DOSIS' },
{ label: 'SATUAN' },
{ label: 'RUTE PEMBERIAN' },
{ label: 'HARI' },
{ label: 'CATATAN' },
{ label: '' },
],
],
keys: [
'number',
'namaObat',
'dosis',
'satuan',
'rute',
'hari',
'catatan',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,62 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 50 },
],
headers: [
[
{ label: 'NO.' },
{ label: 'TANGGAL' },
{ label: 'SIKLUS' },
{ label: 'PERIODE KEMOTERAPI' },
{ label: 'KEHADIRAN' },
{ label: '' },
],
],
keys: [
'number',
'tanggal',
'siklus',
'periode',
'kehadiran',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,80 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 120 },
{ width: 50 },
],
headers: [
[
{ label: 'TANGGAL' },
{ label: 'NO. RM' },
{ label: 'NO. BILL' },
{ label: 'JK' },
{ label: 'ALAMAT' },
{ label: 'KLINIK ASAL' },
{ label: 'NAMA DOKTER' },
{ label: 'CARA BAYAR' },
{ label: 'RUJUKAN' },
{ label: 'KET. RUJUKAN' },
{ label: 'ASAL' },
{ label: '' },
],
],
keys: [
'tanggal',
'noRm',
'noBill',
'jk',
'alamat',
'klinik',
'dokter',
'caraBayar',
'rujukan',
'ketRujukan',
'asal',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,78 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
type SmallDetailDto = any
const statusBadge = defineAsyncComponent(() => import('./status-badge.vue'))
const verifyButton = defineAsyncComponent(() => import('./verify-button.vue'))
export const config: Config = {
cols: [
{ width: 120 },
{ width: 150 },
{ width: 150 },
{ width: 150 },
{ width: 150 },
{ width: 180 },
{ width: 150 },
{ width: 100 },
],
headers: [
[
{ label: 'TANGGAL MASUK' },
{ label: 'PJ BERKAS RM' },
{ label: 'DOKTER' },
{ label: 'JENIS RUANGAN' },
{ label: 'JENIS TINDAKAN' },
{ label: 'TANGGAL JADWAL TINDAKAN' },
{ label: 'STATUS' },
{ label: 'AKSI' },
],
],
keys: [
'tanggalMasuk',
'pjBerkasRm',
'dokter',
'jenisRuangan',
'jenisTindakan',
'tanggalJadwalTindakan',
'status',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
parent: (rec: unknown): unknown => {
const recX = rec as SmallDetailDto
return recX.parent?.name || '-'
},
},
components: {
status(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: statusBadge,
}
return res
},
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: verifyButton,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,99 @@
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
import { format, parseISO } from 'date-fns'
import { id as localeID } from 'date-fns/locale'
type VisitDto = any
const statusBadge = defineAsyncComponent(() => import('./status-badge.vue'))
const verifyButton = defineAsyncComponent(() => import('./verify-button.vue'))
export const config: Config = {
cols: [
{ width: 150 }, // TANGGAL MASUK
{ width: 180 }, // PJ BERKAS RM
{ width: 200 }, // DOKTER
{ width: 150 }, // JENIS RUANGAN
{ width: 150 }, // JENIS TINDAKAN
{ width: 180 }, // TANGGAL JADWAL TINDAKAN
{ width: 150 }, // STATUS
{ width: 120 }, // AKSI
],
headers: [
[
{ label: 'TANGGAL MASUK' },
{ label: 'PJ BERKAS RM' },
{ label: 'DOKTER' },
{ label: 'JENIS RUANGAN' },
{ label: 'JENIS TINDAKAN' },
{ label: 'TANGGAL JADWAL TINDAKAN' },
{ label: 'STATUS' },
{ label: 'AKSI' },
],
],
keys: [
'tanggal_masuk',
'pj_berkas_rm',
'dokter',
'jenis_ruangan',
'jenis_tindakan',
'tanggal_jadwal_tindakan',
'status',
'action',
],
delKeyNames: [
{ key: 'id', label: 'ID' },
{ key: 'nama', label: 'Nama' },
],
parses: {
tanggal_masuk: (rec: unknown): string => {
const recX = rec as VisitDto
if (!recX.tanggal_masuk) return '-'
try {
const date = typeof recX.tanggal_masuk === 'string' ? parseISO(recX.tanggal_masuk) : recX.tanggal_masuk
return format(date, 'dd MMMM yyyy', { locale: localeID })
} catch {
return recX.tanggal_masuk.toString()
}
},
tanggal_jadwal_tindakan: (rec: unknown): string => {
const recX = rec as VisitDto
if (!recX.tanggal_jadwal_tindakan) return '-'
try {
const date =
typeof recX.tanggal_jadwal_tindakan === 'string'
? parseISO(recX.tanggal_jadwal_tindakan)
: recX.tanggal_jadwal_tindakan
return format(date, 'dd MMMM yyyy', { locale: localeID })
} catch {
return recX.tanggal_jadwal_tindakan.toString()
}
},
},
components: {
status(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: statusBadge,
}
return res
},
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: verifyButton,
}
return res
},
},
htmls: {},
}
@@ -0,0 +1,37 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.verification'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,76 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.medicine'
const searchQuery = ref('')
function handleSearch(event: Event) {
const target = event.target as HTMLInputElement
searchQuery.value = target.value
// TODO: Implement search logic here
// You can emit an event to parent or filter data directly
}
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<!-- Title and Search Section -->
<div class="flex flex-col items-start">
<div class="flex items-center justify-between w-full">
<div>
<h2 class="mb-1 text-xl font-semibold">Protokol Obat Kemoterapi</h2>
<p class="mb-4 text-sm text-gray-500">Daftar obat-obatan yang digunakan dalam protokol kemoterapi.</p>
</div>
<button class="rounded bg-orange-500 px-3 py-2 text-white hover:bg-orange-600">
<i class="ri-add-line"></i>
Tambah Obat Kemoterapi
</button>
</div>
<div class="relative mt-10 w-72">
<input
v-model="searchQuery"
type="text"
placeholder="Cari obat..."
class="w-full rounded-md border px-4 py-2 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20"
@input="handleSearch"
/>
<span class="absolute right-3 top-2.5 text-gray-400">
<i class="ri-search-line"></i>
</span>
</div>
</div>
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,75 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.protocol'
const searchQuery = ref('')
function handleSearch(event: Event) {
const target = event.target as HTMLInputElement
searchQuery.value = target.value
// TODO: Implement search logic here
// You can emit an event to parent or filter data directly
}
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<!-- Title and Search Section -->
<div class="flex flex-col items-start">
<div class="flex items-center justify-between w-full">
<div>
<h2 class="mb-1 text-xl font-semibold">Protokol Kemoterapi</h2>
<p class="mb-4 text-sm text-gray-500">Rangkaian prosedur kemoterapi yang terintegrasi dan konsisten.</p>
</div>
<button class="rounded bg-orange-500 px-3 py-2 text-white hover:bg-orange-600">
<i class="ri-add-line"></i>
Tambah Protokol Kemoterapi
</button>
</div>
<div class="relative mt-10 w-72">
<input
v-model="searchQuery"
type="text"
placeholder="Cari protokol..."
class="w-full rounded-md border px-4 py-2 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20"
@input="handleSearch"
/>
<span class="absolute right-3 top-2.5 text-gray-400">
<i class="ri-search-line"></i>
</span>
</div>
</div>
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,71 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.protocol'
const searchQuery = ref('')
function handleSearch(event: Event) {
const target = event.target as HTMLInputElement
searchQuery.value = target.value
// TODO: Implement search logic here
// You can emit an event to parent or filter data directly
}
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<!-- Title and Search Section -->
<div class="flex flex-col items-start">
<div class="flex items-center justify-between w-full">
<div>
<h2 class="mb-1 text-xl font-semibold">Daftar Kunjungan Rawat Jalan Kemoterapi</h2>
<p class="mb-4 text-sm text-gray-500">Manajemen pendaftaran serta monitoring terapi pasien tindakan rawat jalan.</p>
</div>
</div>
<div class="relative mt-10 w-72">
<input
v-model="searchQuery"
type="text"
placeholder="Cari jadwal pemeriksaan..."
class="w-full rounded-md border px-4 py-2 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/20"
@input="handleSearch"
/>
<span class="absolute right-3 top-2.5 text-gray-400">
<i class="ri-search-line"></i>
</span>
</div>
</div>
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView
:pagination-meta="paginationMeta"
@page-change="handlePageChange"
/>
</div>
</template>
@@ -0,0 +1,45 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg.visit'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
verify: [rec: any]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
// Provide verify handler to child components via provide/inject
function handleVerify(rec: any) {
emit('verify', rec)
}
provide('verify-handler', handleVerify)
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
+36
View File
@@ -0,0 +1,36 @@
<script setup lang="ts">
// Components
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
// Types
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
// Configs
import { config } from './list-cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
+49
View File
@@ -0,0 +1,49 @@
export type ChemotherapyData = {
id: number
tanggal: string
noRm: string
noBill: string
nama: string
jk: string
alamat: string
klinik: string
dokter: string
caraBayar: string
rujukan: string
ketRujukan: string
asal: string
}
export const sampleRows: ChemotherapyData[] = [
{
id: 1,
tanggal: '12 Agustus 2025',
noRm: 'RM23311224',
noBill: '-',
nama: 'Ahmad Baidowi',
jk: 'L',
alamat: 'Jl Jaksa Agung S. No. 9',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
{
id: 2,
tanggal: '11 Agustus 2025',
noRm: 'RM23455667',
noBill: '-',
nama: 'Abraham Sulaiman',
jk: 'L',
alamat: 'Purwantoro, Blimbing',
klinik: 'Penyakit dalam',
dokter: 'Dr. Andreas Sutaji',
caraBayar: 'JKN',
rujukan: 'Faskes BPJS',
ketRujukan: 'RUMAH SAKIT - RS Lawang Medika - Malang',
asal: 'Rawat Jalan Reguler',
},
// tambahkan lebih banyak baris contoh jika perlu
]
@@ -0,0 +1,28 @@
<script setup lang="ts">
import { Badge } from '~/components/pub/ui/badge'
const props = defineProps<{
rec: any
idx?: number
}>()
const statusMap: Record<string, { text: string; variant: 'default' | 'secondary' | 'fresh' | 'positive' | 'negative' | 'warning' | 'destructive' | 'outline' }> = {
'belum_terverifikasi': { text: 'Belum Terverifikasi', variant: 'secondary' },
'terverifikasi': { text: 'Terverifikasi', variant: 'positive' },
'ditolak': { text: 'Ditolak', variant: 'destructive' },
}
const statusInfo = computed(() => {
const status = props.rec.status?.toLowerCase() || props.rec.status_code?.toLowerCase() || 'belum_terverifikasi'
return statusMap[status] || statusMap['belum_terverifikasi']
})
</script>
<template>
<div class="flex justify-center">
<Badge :variant="statusInfo.variant">
{{ statusInfo.text }}
</Badge>
</div>
</template>
@@ -0,0 +1,31 @@
<script setup lang="ts">
import Button from '~/components/pub/ui/button/Button.vue'
const props = defineProps<{
rec: any
idx?: number
}>()
// Try to get verify handler from parent via inject
const verifyHandler = inject<(rec: any) => void>('verify-handler', null)
function handleVerify() {
if (verifyHandler) {
verifyHandler(props.rec)
}
}
</script>
<template>
<div class="flex justify-center">
<Button
type="button"
variant="outline"
class="border-orange-500 bg-orange-50 text-orange-600 hover:bg-orange-100 hover:text-orange-700"
@click="handleVerify"
>
Verifikasi
</Button>
</div>
</template>
+126
View File
@@ -0,0 +1,126 @@
<script setup lang="ts">
// Components
import * as DE from '~/components/pub/my-ui/doc-entry'
// Types
import type { ConsultationFormData } from '~/schemas/consultation.schema.ts'
// Helpers
import type z from 'zod'
import { toTypedSchema } from '@vee-validate/zod'
import { useForm } from 'vee-validate'
import Textarea from '~/components/pub/ui/textarea/Textarea.vue'
import type { CreateDto } from '~/models/consultation'
interface Props {
schema: z.ZodSchema<any>
values: CreateDto
encounter_id: number
units: { value: string; label: string }[]
isLoading?: boolean
isReadonly?: boolean
}
const props = defineProps<Props>()
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const emit = defineEmits<{
submit: [values: ConsultationFormData, resetForm: () => void]
cancel: [resetForm: () => void]
}>()
const today = new Date()
const { defineField, errors, meta } = useForm({
validationSchema: toTypedSchema(props.schema),
initialValues: {
date: props.values.date || today.toISOString().slice(0, 10),
problem: '',
dstUnit_code: '',
} as ConsultationFormData,
})
const [date, dateAttrs] = defineField('date')
const [unit_code, unitAttrs] = defineField('unit_code')
const [problem, problemAttrs] = defineField('problem')
// Fill fields from props.values if provided
if (props.values) {
if (props.values.date !== undefined) date.value = props.values.date.substring(0, 10)
if (props.values.dstUnit_code !== undefined) unit_code.value = props.values.dstUnit_code
if (props.values.problem !== undefined) problem.value = props.values.problem
}
const resetForm = () => {
date.value = date.value ?? today.toISOString().slice(0, 10)
unit_code.value = 0
problem.value = ''
}
// Form submission handler
function onSubmitForm(values: any) {
const formData: ConsultationFormData = {
encounter_id: props.encounter_id,
date: date.value ? `${date.value}T00:00:00Z` : '',
problem: problem.value || '',
dstUnit_code: unit_code.value || '',
}
emit('submit', formData, resetForm)
}
// Form cancel handler
function onCancelForm() {
emit('cancel', resetForm)
}
</script>
<template>
<form id="form-division" @submit.prevent>
<DE.Block labelSize="thin" class="!mb-2.5 !pt-0 xl:!mb-3" :colCount="3" :cellFlex="false">
<DE.Cell>
<DE.Label>Tanggal</DE.Label>
<DE.Field :errMessage="errors.code">
<Input
v-model.number="date"
icon-name="i-lucide-chevron-down"
v-bind="dateAttrs"
readonly
/>
</DE.Field>
</DE.Cell>
<DE.Cell>
<DE.Label>Unit</DE.Label>
<DE.Field :errMessage="errors.unit_code">
{{ errors.unit_code }}
<Select
id="strUnit_code"
v-model="unit_code"
icon-name="i-lucide-chevron-down"
placeholder="Pilih poliklinik tujuan"
v-bind="unitAttrs"
:items="props.units || []"
:disabled="isLoading || isReadonly"
/>
<!-- <Input type="number" id="unit_code" v-model.number="unit_code" v-bind="unitAttrs" :disabled="isLoading || isReadonly" /> -->
</DE.Field>
</DE.Cell>
<DE.Cell :colSpan="3">
<DE.Label>Uraian</DE.Label>
<DE.Field :errMessage="errors.problem">
<Textarea id="problem" v-model="problem" v-bind="problemAttrs" :disabled="isLoading || isReadonly" />
</DE.Field>
</DE.Cell>
</DE.Block>
<div class="my-2 flex justify-end gap-2 py-2">
<Button type="button" variant="secondary" class="w-[120px]" @click="onCancelForm"> Kembali </Button>
<Button
v-if="!isReadonly"
type="button"
class="w-[120px]"
:disabled="isLoading || !meta.valid"
@click="onSubmitForm"
>
Simpan
</Button>
</div>
</form>
</template>
@@ -0,0 +1,54 @@
import type { Config, RecComponent, RecStrFuncComponent, RecStrFuncUnknown } from '~/components/pub/my-ui/data-table'
import { defineAsyncComponent } from 'vue'
import type { Consultation } from '~/models/consultation'
type SmallDetailDto = any
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-ud.vue'))
export const config: Config = {
cols: [{ width: 100 }, {}, {}, {}, { width: 50 }],
headers: [[
{ label: 'Tanggal' },
{ label: 'Tujuan' },
{ label: 'Dokter' },
{ label: 'Pertanyaan' },
{ label: 'Jawaban' },
{ label: '' },
]],
keys: ['date', 'dstUnit.name', 'dstDoctor.name', 'problem', 'solution', 'action'],
delKeyNames: [
{ key: 'data', label: 'Tanggal' },
{ key: 'dstDoctor.name', label: 'Dokter' },
],
parses: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
props: {
size: 'sm',
},
}
return res
},
date(rec) {
const recX = rec as Consultation
return recX.date?.substring(0, 10) || '-'
}
},
components: {
action(rec, idx) {
const res: RecComponent = {
idx,
rec: rec as object,
component: action,
props: {
size: 'sm',
},
}
return res
},
} as RecStrFuncComponent,
htmls: {} as RecStrFuncUnknown,
}
+31
View File
@@ -0,0 +1,31 @@
<script setup lang="ts">
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
import { config } from './list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
const props = defineProps<Props>()
const emit = defineEmits<{
pageChange: [page: number]
}>()
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<div class="space-y-4">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="paginationMeta?.pageSize"
/>
<!-- FIXME: pindahkan ke content/division/list.vue -->
<PaginationView :pagination-meta="paginationMeta" @page-change="handlePageChange" />
</div>
</template>
@@ -0,0 +1,116 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import { differenceInDays, differenceInMonths, differenceInYears, parseISO } from 'date-fns'
import { Input } from '~/components/pub/ui/input'
import { cn } from '~/lib/utils'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'birthDate',
label = 'Tanggal Lahir',
placeholder = 'Pilih tanggal lahir',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
// Reactive variables for age calculation
const patientAge = ref<string>('Masukkan tanggal lahir')
// Function to calculate age with years, months, and days
function calculateAge(birthDate: string | Date | undefined): string {
if (!birthDate) {
return 'Masukkan tanggal lahir'
}
try {
let dateObj: Date
if (typeof birthDate === 'string') {
dateObj = parseISO(birthDate)
} else {
dateObj = birthDate
}
const today = new Date()
// Calculate years, months, and days
const totalYears = differenceInYears(today, dateObj)
// Calculate remaining months after years
const yearsPassed = new Date(dateObj)
yearsPassed.setFullYear(yearsPassed.getFullYear() + totalYears)
const remainingMonths = differenceInMonths(today, yearsPassed)
// Calculate remaining days after years and months
const monthsPassed = new Date(yearsPassed)
monthsPassed.setMonth(monthsPassed.getMonth() + remainingMonths)
const remainingDays = differenceInDays(today, monthsPassed)
// Format the result
const parts = []
if (totalYears > 0) parts.push(`${totalYears} Tahun`)
if (remainingMonths > 0) parts.push(`${remainingMonths} Bulan`)
if (remainingDays > 0) parts.push(`${remainingDays} Hari`)
return parts.length > 0 ? parts.join(' ') : '0 Hari'
} catch {
return 'Masukkan tanggal lahir'
}
}
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Input
id="birthDate"
type="date"
min="1900-01-01"
v-bind="componentField"
:placeholder="placeholder"
@update:model-value="
(value: string | number) => {
const dateStr = typeof value === 'number' ? String(value) : value
patientAge = calculateAge(dateStr)
}
"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,98 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import { getValueLabelList as getDoctorLabelList } from '~/services/doctor.service'
import * as DE from '~/components/pub/my-ui/doc-entry'
import type { Item } from '~/components/pub/my-ui/combobox'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
const doctors = ref<Array<Item>>([])
async function fetchDpjp(specialistId: string, subspecialistId: string) {
doctors.value = await getDoctorLabelList({
serviceType: 1,
serviceDate: new Date().toISOString().substring(0, 10),
includes: 'employee-person',
// "unit-id": parseInt(unitId),
"specialist-code": String(specialistId),
"subspecialist-code": String(subspecialistId),
}, true)
}
// const selectedUnitId = inject<Ref<string | null>>("selectedUnitId")!
const selectedSpecialistId = inject<Ref<string | null>>("selectedSpecialistId")!
const selectedSubSpecialistId = inject<Ref<string | null>>("selectedSubSpecialistId")!
// function handleDpjpChange(selected: string) {
// selectedDpjpId.value = selected ?? null
// }
watch([ selectedSpecialistId, selectedSubSpecialistId], () => {
if (selectedSpecialistId.value && selectedSubSpecialistId.value) {
console.log(`Select Doctor`)
fetchDpjp( selectedSpecialistId.value, selectedSubSpecialistId.value)
}
})
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="doctors"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
:is-disabled="selectedSubSpecialistId === null"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,98 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import type { Item } from '~/components/pub/my-ui/combobox'
import { getValueLabelList as getSpecialistLabelList } from '~/services/specialist.service'
import { getValueLabelList as getSubspecialistLabelList } from '~/services/subspecialist.service'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
const specialists = ref<Array<Item>>([])
async function fetchSpecialists(unitId: string) {
specialists.value = await getSpecialistLabelList({
serviceType: 1,
serviceDate: new Date().toISOString().substring(0, 10),
specialistCode: 0,
"unit-id": String(unitId),
}, true)
}
const selectedUnitId = inject<Ref<string | null>>("selectedUnitId")!
const selectedSpecialistId = inject<Ref<string | null>>("selectedSpecialistId")!
function handleSpecialistChange(selected: string) {
selectedSpecialistId.value = selected ?? null
}
watch([selectedUnitId], () => {
if (selectedUnitId.value) {
fetchSpecialists(selectedUnitId.value)
}
})
</script>
<template>
<DE.Block :class="cn('select-field-group', fieldGroupClass, containerClass)">
<div>
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
Spesialis
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="specialists"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
@update:model-value="handleSpecialistChange"
:is-disabled="selectedUnitId === null"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</div>
</DE.Block>
</template>
@@ -0,0 +1,97 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import type { Item } from '~/components/pub/my-ui/combobox'
import { getValueLabelList as getSubspecialistLabelList } from '~/services/subspecialist.service'
import * as DE from '~/components/pub/my-ui/doc-entry'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
const subspecialists = ref<Array<Item>>([])
async function fetchSubSpecialists(specialistId: string) {
subspecialists.value = await getSubspecialistLabelList({
serviceType: 1,
serviceDate: new Date().toISOString().substring(0, 10),
specialistCode: 0,
"specialist-code": String(specialistId),
}, true)
}
const selectedSpecialistId = inject<Ref<string | null>>("selectedSpecialistId")!
const selectedSubSpecialistId = inject<Ref<string | null>>("selectedSubSpecialistId")!
function handleSubSpecialistChange(selected: string) {
selectedSubSpecialistId.value = selected ?? null
}
watch([selectedSpecialistId], () => {
if (selectedSpecialistId.value) {
fetchSubSpecialists(selectedSpecialistId.value)
}
})
</script>
<template>
<DE.Block :class="cn('select-field-group', fieldGroupClass, containerClass)">
<div>
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
Sub Spesialis
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="subspecialists"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
@update:model-value="handleSubSpecialistChange"
:is-disabled="selectedSpecialistId === null"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</div>
</DE.Block>
</template>
@@ -0,0 +1,85 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import { cn, mapToComboboxOptList } from '~/lib/utils'
import { occupationCodes } from '~/lib/constants'
import { getValueLabelList as getUnitLabelList } from '~/services/unit.service'
import * as DE from '~/components/pub/my-ui/doc-entry'
import type { Item } from '~/components/pub/my-ui/combobox'
const props = defineProps<{
fieldName?: string
label?: string
placeholder?: string
errors?: FormErrors
class?: string
selectClass?: string
fieldGroupClass?: string
labelClass?: string
isRequired?: boolean
}>()
const {
fieldName = 'job',
label = 'Pekerjaan',
placeholder = 'Pilih pekerjaan',
errors,
class: containerClass,
fieldGroupClass,
labelClass,
} = props
const units = ref<Array<Item>>([])
async function fetchData() {
units.value = await getUnitLabelList({})
}
const selectedUnitId = inject<Ref<string | null>>("selectedUnitId")!
function handleDataChange(selected: string) {
selectedUnitId.value = selected ?? null
}
onMounted(() => {
fetchData()
})
</script>
<template>
<DE.Cell :class="cn('select-field-group', fieldGroupClass, containerClass)">
<DE.Label
:label-for="fieldName"
:class="cn('select-field-label', labelClass)"
:is-required="isRequired"
>
{{ label }}
</DE.Label>
<DE.Field
:id="fieldName"
:errors="errors"
:class="cn('select-field-wrapper')"
>
<FormField
v-slot="{ componentField }"
:name="fieldName"
>
<FormItem>
<FormControl>
<Combobox
class="focus:ring-0 focus:ring-offset-0"
:id="fieldName"
v-bind="componentField"
:items="units"
:placeholder="placeholder"
search-placeholder="Cari..."
empty-message="Data tidak ditemukan"
@update:model-value="handleDataChange"
/>
</FormControl>
<FormMessage />
</FormItem>
</FormField>
</DE.Field>
</DE.Cell>
</template>
@@ -0,0 +1,94 @@
<script setup lang="ts">
import type { FormErrors } from '~/types/error'
import { toTypedSchema } from '@vee-validate/zod'
import { Form } from '~/components/pub/ui/form'
import SelectDate from './_common/select-date.vue'
import InputBase from '~/components/pub/my-ui/form/input-base.vue'
import SelectSpeciality from './_common/select-specialist.vue'
import SelectDpjp from './_common/select-dpjp.vue'
import * as DE from '~/components/pub/my-ui/doc-entry'
import SelectUnit from './_common/select-unit.vue'
import SelectSubspecialist from './_common/select-subspecialist.vue'
import SelectSpecialist from './_common/select-specialist.vue'
const props = defineProps<{
schema: any
initialValues?: any
errors?: FormErrors
selectedUnitId?: number | null
selectedSpecialistId?: number | null
selectedSubSpecialistId?: number | null
}>()
const formSchema = toTypedSchema(props.schema)
const formRef = ref()
defineExpose({
validate: () => formRef.value?.validate(),
resetForm: () => formRef.value?.resetForm(),
setValues: (values: any, shouldValidate = true) => formRef.value?.setValues(values, shouldValidate),
values: computed(() => formRef.value?.values),
})
</script>
<template>
<Form
ref="formRef"
v-slot="{ values }"
as=""
keep-values
:validation-schema="formSchema"
:validate-on-mount="false"
validation-mode="onSubmit"
:initial-values="initialValues ? initialValues : {}"
>
<DE.Block :col-count="2" :cell-flex="false">
<InputBase
field-name="sepStatus"
label="Status Sep"
placeholder="Status Sep"
:is-disabled="true"
/>
<SelectDate
field-name="date"
label="Tanggal Rencana Kontrol"
:errors="errors"
is-required
/>
<DE.Cell :col-span="2">
<DE.Block :col-count="4" :cell-flex="false">
<SelectUnit
field-name="unit_code"
label="Unit"
placeholder="Pilih Unit"
:errors="errors"
is-required
/>
<SelectSpecialist
field-name="specialist_code"
label="Spesialis/Sub Spesialis"
placeholder="Pilih Spesialis/Sub Spesialis"
:errors="errors"
is-required
/>
<SelectSubspecialist
field-name="subspecialist_code"
label="Spesialis/Sub Spesialis"
placeholder="Pilih Spesialis/Sub Spesialis"
:errors="errors"
is-required
/>
<SelectDpjp
field-name="doctor_code"
label="DPJP"
placeholder="Pilih DPJP"
:errors="errors"
is-required
/>
</DE.Block>
</DE.Cell>
</DE.Block>
</Form>
</template>
@@ -0,0 +1,28 @@
<script setup lang="ts">
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
import type { PaginationMeta } from '~/components/pub/my-ui/pagination/pagination.type'
import PaginationView from '~/components/pub/my-ui/pagination/pagination-view.vue'
import { config } from './history-list.cfg'
interface Props {
data: any[]
paginationMeta: PaginationMeta
}
const props = defineProps<Props>()
const isModalOpen = inject(`isHistoryDialogOpen`) as Ref<boolean>
function handlePageChange(page: number) {
emit('pageChange', page)
}
</script>
<template>
<Dialog v-model:open="isModalOpen" title="Riwayat Surat Kontrol" size="full">
<PubMyUiDataTable
v-bind="config"
:rows="data"
:skeleton-size="props.paginationMeta?.pageSize"
/>
<PaginationView :pagination-meta="props.paginationMeta" @page-change="handlePageChange" />
</Dialog>
</template>
@@ -0,0 +1,85 @@
import type { Config } from '~/components/pub/my-ui/data-table'
import type { Patient } from '~/models/patient'
import { defineAsyncComponent } from 'vue'
import { educationCodes, genderCodes } from '~/lib/constants'
import { calculateAge } from '~/lib/utils'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/print-btn.vue'))
export const config: Config = {
cols: [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {width: 130}, {width: 30},],
headers: [
[
{ label: 'NAMA PASIEN' },
{ label: 'NO.SURAT KONTROL' },
{ label: 'NO.SEP' },
{ label: 'TANGGAL RENCANA KONTROL' },
{ label: 'TANGGAL TERBIT' },
{ label: 'DPJP' },
{ label: 'SPESIALIS' },
{ label: 'SUBSPESIALIS' },
{ label: 'TIPE RAWAT' },
{ label: 'DIBUAT OLEH' },
{ label: 'DIEDIT OLEH' },
{ label: 'STATUS' },
{ label: 'AKSI' },
],
],
keys: [
'date',
'name',
'name',
'name',
'name',
'name',
'name',
'name',
'name',
'name',
'name',
'status',
'action',
],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
date: (rec: unknown): unknown => {
const date = (rec as any).date
if (typeof date == 'object' && date) {
return (date as Date).toLocaleDateString('id-ID')
} else if (typeof date == 'string') {
return (date as string).substring(0, 10)
}
return date
},
specialist_subspecialist: (rec: unknown): unknown => {
return '-'
},
dpjp: (rec: unknown): unknown => {
// const { person } = rec as Patient
return '-'
},
},
components: {
action(rec, idx) {
return {
idx,
rec: rec as object,
component: action,
}
},
},
htmls: {
sep_status(_rec) {
return 'SEP Internal'
},
},
}
@@ -0,0 +1,64 @@
import type { Config } from '~/components/pub/my-ui/data-table'
import type { Patient } from '~/models/patient'
import { defineAsyncComponent } from 'vue'
import { educationCodes, genderCodes } from '~/lib/constants'
import { calculateAge } from '~/lib/utils'
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
export const config: Config = {
cols: [{width: 180}, {}, {}, {}, {}, {width: 30},],
headers: [
[
{ label: 'Tgl Rencana Kontrol' },
{ label: 'Spesialis' },
{ label: 'Sub Spesialis' },
{ label: 'DPJP' },
{ label: 'Status SEP' },
{ label: 'Action' },
],
],
keys: ['date', 'specialist.name', 'subspecialist.name', 'doctor.employee.person.name', 'sep_status', 'action'],
delKeyNames: [
{ key: 'code', label: 'Kode' },
{ key: 'name', label: 'Nama' },
],
parses: {
date: (rec: unknown): unknown => {
const date = (rec as any).date
if (typeof date == 'object' && date) {
return (date as Date).toLocaleDateString('id-ID')
} else if (typeof date == 'string') {
return (date as string).substring(0, 10)
}
return date
},
specialist_subspecialist: (rec: unknown): unknown => {
return '-'
},
dpjp: (rec: unknown): unknown => {
// const { person } = rec as Patient
return '-'
},
},
components: {
action(rec, idx) {
return {
idx,
rec: rec as object,
component: action,
}
},
},
htmls: {
sep_status(_rec) {
return 'SEP Internal'
},
},
}

Some files were not shown because too many files have changed in this diff Show More