Files
simrsx-fe/app/lib/utils.ts
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

169 lines
4.7 KiB
TypeScript

import type { ClassValue } from 'clsx'
import { clsx } from 'clsx'
import { format } from 'date-fns'
import { twMerge } from 'tailwind-merge'
import { toast } from '~/components/pub/ui/toast'
export interface SelectOptionType<_T = string> {
value: string
label: string
code?: string
}
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
}
export function mapToComboboxOptList(items: Record<string, string>): SelectOptionType<string>[] {
if (!items) {
return []
}
const result: SelectOptionType<string>[] = []
Object.keys(items).forEach((item) => {
result.push({
label: items[item] as string,
value: item,
code: item,
})
})
return result
}
/**
* Mengkonversi string menjadi title case (huruf pertama setiap kata kapital)
* @param str - String yang akan dikonversi
* @returns String dalam format title case
*/
export function toTitleCase(str: string): string {
return str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase())
}
/**
* Menghitung umur berdasarkan tanggal lahir
* @param birthDate - Tanggal lahir dalam format Date atau string
* @returns String umur dalam format "X tahun Y bulan" atau "X bulan" untuk bayi
*/
export function calculateAge(birthDate: Date | string | null | undefined): string {
if (!birthDate) {
return '-'
}
let birth: Date
// Konversi ke Date object
if (typeof birthDate === 'string') {
birth = new Date(birthDate)
} else {
birth = birthDate
}
// Validasi tanggal
if (isNaN(birth.getTime())) {
return '-'
}
const today = new Date()
const birthYear = birth.getFullYear()
const birthMonth = birth.getMonth()
const birthDay = birth.getDate()
const currentYear = today.getFullYear()
const currentMonth = today.getMonth()
const currentDay = today.getDate()
// Hitung tahun
let years = currentYear - birthYear
let months = currentMonth - birthMonth
// Adjust jika bulan atau hari belum lewat
if (months < 0 || (months === 0 && currentDay < birthDay)) {
years--
months += 12
}
if (currentDay < birthDay) {
months--
}
// Pastikan months tidak negatif
if (months < 0) {
months += 12
}
// Format output
if (years === 0) {
if (months === 0) {
// Hitung hari untuk bayi baru lahir
const diffTime = today.getTime() - birth.getTime()
const days = Math.floor(diffTime / (1000 * 60 * 60 * 24))
return days <= 30 ? `${days} hari` : '1 bulan'
}
return `${months} bulan`
} else if (months === 0) {
return `${years} tahun`
} else {
return `${years} tahun ${months} bulan`
}
}
export function formatDateToDatetimeLocal(inputDate: Date) {
const formattedString = format(inputDate, "yyyy-MM-dd'T'HH:mm")
return formattedString
}
/**
* Converts a plain JavaScript object (including File objects) into a FormData instance.
* @param {object} data - The object to convert (e.g., form values).
* @returns {FormData} The new FormData object suitable for API submission.
*/
export function toFormData(data: Record<string, any>): FormData {
const formData = new FormData();
for (const key in data) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
const value = data[key];
// Handle File objects, Blobs, or standard JSON values
if (value !== null && value !== undefined) {
// Check if the value is a File/Blob instance
if (value instanceof File || value instanceof Blob) {
// Append the file directly
formData.append(key, value);
} else if (typeof value === 'object') {
// Handle nested objects/arrays by stringifying them (optional, depends on API)
// Note: Most APIs expect nested data to be handled separately or passed as JSON string
// For simplicity, we stringify non-File objects.
formData.append(key, JSON.stringify(value));
} else {
// Append standard string, number, or boolean values
formData.append(key, value);
}
}
}
}
return formData;
}
export function printFormData(formData: FormData) {
console.log("--- FormData Contents ---");
// Use the entries() iterator to loop through key/value pairs
for (const [key, value] of formData.entries()) {
if (value instanceof File) {
console.log(`Key: ${key}, Value: [File: ${value.name}, Type: ${value.type}, Size: ${value.size} bytes]`);
} else {
console.log(`Key: ${key}, Value: "${value}"`);
}
}
console.log("-------------------------");
}
export function unauthorizedToast() {
toast({
title: 'Unauthorized',
description: 'You are not authorized to perform this action.',
variant: 'destructive',
})
}