diff --git a/app/components/app/kfr/_common/banner-patient-in-therapy.vue b/app/components/app/kfr/_common/banner-patient-in-therapy.vue new file mode 100644 index 00000000..27dc4445 --- /dev/null +++ b/app/components/app/kfr/_common/banner-patient-in-therapy.vue @@ -0,0 +1,22 @@ + + + diff --git a/app/components/app/kfr/_common/btn-confirmation-detail.vue b/app/components/app/kfr/_common/btn-confirmation-detail.vue new file mode 100644 index 00000000..e09432d5 --- /dev/null +++ b/app/components/app/kfr/_common/btn-confirmation-detail.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/app/kfr/_common/btn-history.vue b/app/components/app/kfr/_common/btn-history.vue new file mode 100644 index 00000000..6804c451 --- /dev/null +++ b/app/components/app/kfr/_common/btn-history.vue @@ -0,0 +1,21 @@ + + + diff --git a/app/components/app/kfr/_common/card-result.vue b/app/components/app/kfr/_common/card-result.vue new file mode 100644 index 00000000..d77302ef --- /dev/null +++ b/app/components/app/kfr/_common/card-result.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/app/components/app/kfr/_common/dropdown-action.vue b/app/components/app/kfr/_common/dropdown-action.vue new file mode 100644 index 00000000..f99c3c43 --- /dev/null +++ b/app/components/app/kfr/_common/dropdown-action.vue @@ -0,0 +1,100 @@ + + + diff --git a/app/components/app/kfr/_common/radio-followup.vue b/app/components/app/kfr/_common/radio-followup.vue new file mode 100644 index 00000000..94ede9cb --- /dev/null +++ b/app/components/app/kfr/_common/radio-followup.vue @@ -0,0 +1,93 @@ + + + diff --git a/app/components/app/kfr/_common/verify-badge.vue b/app/components/app/kfr/_common/verify-badge.vue new file mode 100644 index 00000000..c82c0c7c --- /dev/null +++ b/app/components/app/kfr/_common/verify-badge.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/app/components/app/kfr/entry.vue b/app/components/app/kfr/entry.vue new file mode 100644 index 00000000..e7d0c64f --- /dev/null +++ b/app/components/app/kfr/entry.vue @@ -0,0 +1,128 @@ + + + diff --git a/app/components/app/kfr/history-list.cfg.ts b/app/components/app/kfr/history-list.cfg.ts new file mode 100644 index 00000000..bc86241e --- /dev/null +++ b/app/components/app/kfr/history-list.cfg.ts @@ -0,0 +1,60 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import type { Patient } from '~/models/patient' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dp.vue')) +const resultData = defineAsyncComponent(() => import('./_common/card-result.vue')) +const statusBadge = defineAsyncComponent(() => import('./_common/verify-badge.vue')) + +export const config: Config = { + cols: [{}, { width: 800 }, {}, { width: 120 }, { width: 3 },], + + headers: [ + [ + { label: 'Tanggal' }, + { label: 'Hasil Asesmen Pasien Dan Pemberian Pelayanan' }, + { label: 'Jenis Form' }, + { label: 'Status' }, + { label: 'Action' }, + ], + ], + + keys: ['date', 'result', 'type', 'status', 'action'], + + 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 + }, + }, + + components: { + result(rec, idx) { + return { + idx, + rec: rec as object, + component: resultData, + } + }, + action(rec, idx) { + return { + idx, + rec: rec as object, + component: action, + } + }, + status(rec, idx) { + return { + idx, + rec: rec as object, + component: statusBadge, + } + }, + }, +} diff --git a/app/components/app/kfr/history-list.vue b/app/components/app/kfr/history-list.vue new file mode 100644 index 00000000..d0a0619a --- /dev/null +++ b/app/components/app/kfr/history-list.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/app/components/app/kfr/list.cfg.ts b/app/components/app/kfr/list.cfg.ts new file mode 100644 index 00000000..1ba6a461 --- /dev/null +++ b/app/components/app/kfr/list.cfg.ts @@ -0,0 +1,59 @@ +import type { Config } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +const action = defineAsyncComponent(() => import('./_common/dropdown-action.vue')) +const statusBadge = defineAsyncComponent(() => import('./_common/verify-badge.vue')) +const resultData = defineAsyncComponent(() => import('./_common/card-result.vue')) + +export const config: Config = { + cols: [{}, { width: 800 }, {}, { width: 120 }, { width: 3 },], + + headers: [ + [ + { label: 'Tanggal' }, + { label: 'Hasil Asesmen Pasien Dan Pemberian Pelayanan' }, + { label: 'Jenis Form' }, + { label: 'Status' }, + { label: 'Action' }, + ], + ], + + keys: ['date', 'result', 'type', 'status', 'action'], + + 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 + }, + }, + + components: { + result(rec, idx) { + return { + idx, + rec: rec as object, + component: resultData, + } + }, + action(rec, idx) { + return { + idx, + rec: rec as object, + component: action, + } + }, + status(rec, idx) { + return { + idx, + rec: rec as object, + component: statusBadge, + } + }, + }, +} diff --git a/app/components/app/kfr/list.vue b/app/components/app/kfr/list.vue new file mode 100644 index 00000000..f5d7a6bb --- /dev/null +++ b/app/components/app/kfr/list.vue @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/app/components/app/kfr/verify-dialog.vue b/app/components/app/kfr/verify-dialog.vue new file mode 100644 index 00000000..c67bd977 --- /dev/null +++ b/app/components/app/kfr/verify-dialog.vue @@ -0,0 +1,108 @@ + + + diff --git a/app/components/content/encounter/process.vue b/app/components/content/encounter/process.vue index c7ac7b4f..7605897e 100644 --- a/app/components/content/encounter/process.vue +++ b/app/components/content/encounter/process.vue @@ -14,6 +14,7 @@ import Status from '~/components/content/encounter/status.vue' import AssesmentFunctionList from '~/components/content/soapi/entry.vue' import EarlyMedicalAssesmentList from '~/components/content/soapi/entry.vue' import EarlyMedicalRehabList from '~/components/content/soapi/entry.vue' +import KfrList from '~/components/content/kfr/list.vue' import TherapyProtocolList from '~/components/content/therapy-protocol/list.vue' import Prescription from '~/components/content/prescription/main.vue' import CpLabOrder from '~/components/content/cp-lab-order/main.vue' @@ -54,6 +55,12 @@ const tabs: TabItem[] = [ component: EarlyMedicalRehabList, props: { encounter: data, type: 'early-rehab', label: 'Pengkajian Awal Medis Rehabilitasi Medis' }, }, + { + value: 'kfr', + label: 'Formulir Rawat Jalan KFR', + component: KfrList, + props: { encounter: data, type: 'kfr', label: 'Formulir Rawat Jalan KFR' }, + }, { value: 'function-assessment', label: 'Asesmen Fungsi', diff --git a/app/components/content/kfr/entry.vue b/app/components/content/kfr/entry.vue new file mode 100644 index 00000000..743351bc --- /dev/null +++ b/app/components/content/kfr/entry.vue @@ -0,0 +1,138 @@ + + + diff --git a/app/components/content/kfr/list.vue b/app/components/content/kfr/list.vue new file mode 100644 index 00000000..4a4613e9 --- /dev/null +++ b/app/components/content/kfr/list.vue @@ -0,0 +1,372 @@ + + + \ No newline at end of file diff --git a/app/components/pub/my-ui/data/dropdown-action-dvvp.vue b/app/components/pub/my-ui/data/dropdown-action-dvvp.vue new file mode 100644 index 00000000..a9e14942 --- /dev/null +++ b/app/components/pub/my-ui/data/dropdown-action-dvvp.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/app/components/pub/my-ui/data/types.ts b/app/components/pub/my-ui/data/types.ts index c979fde5..48fc84b5 100644 --- a/app/components/pub/my-ui/data/types.ts +++ b/app/components/pub/my-ui/data/types.ts @@ -78,7 +78,9 @@ export const ActionEvents = { showEdit: 'showEdit', showDetail: 'showDetail', showProcess: 'showProcess', + showVerify: 'showVerify', showConfirmVerify: 'showConfirmVerify', + showValidate: 'showValidate', showPrint: 'showPrint', } diff --git a/app/components/pub/my-ui/form/text-area-input.vue b/app/components/pub/my-ui/form/text-area-input.vue index 70e288da..c8bdde02 100644 --- a/app/components/pub/my-ui/form/text-area-input.vue +++ b/app/components/pub/my-ui/form/text-area-input.vue @@ -47,7 +47,7 @@ function handleInput(event: Event) {