diff --git a/app/components/app/therapy-protocol/_common/banner-patient-in-therapy.vue b/app/components/app/therapy-protocol/_common/banner-patient-in-therapy.vue
new file mode 100644
index 00000000..46ea79d9
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/banner-patient-in-therapy.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
Pasien ini sedang menjalankan program terapi sampai {{ new Date(props.therapyEndDate).toDateString() }}
+
+
diff --git a/app/components/app/therapy-protocol/_common/btn-confirmation-detail.vue b/app/components/app/therapy-protocol/_common/btn-confirmation-detail.vue
new file mode 100644
index 00000000..e09432d5
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/btn-confirmation-detail.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Konfirmasi
+
+
diff --git a/app/components/app/therapy-protocol/_common/radio-illness-bcs-work.vue b/app/components/app/therapy-protocol/_common/radio-illness-bcs-work.vue
new file mode 100644
index 00000000..86953443
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/radio-illness-bcs-work.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/radio-relationship.vue b/app/components/app/therapy-protocol/_common/radio-relationship.vue
new file mode 100644
index 00000000..07aad8b8
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/radio-relationship.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-arrangement.vue b/app/components/app/therapy-protocol/_common/select-arrangement.vue
new file mode 100644
index 00000000..9a945d44
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-arrangement.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-date-range.vue b/app/components/app/therapy-protocol/_common/select-date-range.vue
new file mode 100644
index 00000000..c9048fcf
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-date-range.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+ {{ df.format(dateValueStart.toDate(getLocalTimeZone())) }} -
+ {{ df.format(dateValueEnd.toDate(getLocalTimeZone())) }}
+
+
+
+ {{ df.format(dateValueStart.toDate(getLocalTimeZone())) }}
+
+
+ Pick a date
+
+
+
+ (dateValueStart = startDate)" />
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-date.vue b/app/components/app/therapy-protocol/_common/select-date.vue
new file mode 100644
index 00000000..74245e7e
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-date.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+ {
+ const dateStr = typeof value === 'number' ? String(value) : value
+ patientAge = calculateAge(dateStr)
+ }
+ "
+ />
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-death-cause.vue b/app/components/app/therapy-protocol/_common/select-death-cause.vue
new file mode 100644
index 00000000..a155b139
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-death-cause.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-faskes.vue b/app/components/app/therapy-protocol/_common/select-faskes.vue
new file mode 100644
index 00000000..0852195b
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-faskes.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-primary-diagnosis.vue b/app/components/app/therapy-protocol/_common/select-primary-diagnosis.vue
new file mode 100644
index 00000000..0852195b
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-primary-diagnosis.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/select-secondary-diagnosis.vue b/app/components/app/therapy-protocol/_common/select-secondary-diagnosis.vue
new file mode 100644
index 00000000..a155b139
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/select-secondary-diagnosis.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/_common/text-captcha.vue b/app/components/app/therapy-protocol/_common/text-captcha.vue
new file mode 100644
index 00000000..de9d7f4b
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/text-captcha.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
{{ errorMessage }}
+
Correct
+
Not case-sensitive
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/_common/verify-badge.vue b/app/components/app/therapy-protocol/_common/verify-badge.vue
new file mode 100644
index 00000000..30cd4c54
--- /dev/null
+++ b/app/components/app/therapy-protocol/_common/verify-badge.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+ {{ statusText }}
+
+
+
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/add-list.cfg.ts b/app/components/app/therapy-protocol/add-list.cfg.ts
new file mode 100644
index 00000000..856ae82b
--- /dev/null
+++ b/app/components/app/therapy-protocol/add-list.cfg.ts
@@ -0,0 +1,51 @@
+import type { Config } from '~/components/pub/my-ui/data-table'
+
+export const medicalDiagnosisConfig: Config = {
+ cols: [{width: 10}, {}, {},],
+
+ headers: [
+ [
+ { label: 'No' },
+ { label: 'Diagnosa' },
+ { label: 'ICD-X' },
+ ],
+ ],
+
+ keys: ['number', 'diagnosis', 'icd_x'],
+
+ parses: { },
+}
+
+export const functionalDiagnosisConfig: Config = {
+ cols: [{width: 10}, {}, {},],
+
+ headers: [
+ [
+ { label: 'No' },
+ { label: 'Diagnosa' },
+ { label: 'ICD-X' },
+ ],
+ ],
+
+ keys: ['number', 'diagnosis', 'icd_x'],
+
+ parses: { },
+}
+
+
+
+export const proceduralConfig: Config = {
+ cols: [{width: 10}, {}, {},],
+
+ headers: [
+ [
+ { label: 'No' },
+ { label: 'Prosedur' },
+ { label: 'ICD-IX' },
+ ],
+ ],
+
+ keys: ['number', 'procedure', 'icd_x'],
+
+ parses: { },
+}
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/detail-list.cfg.ts b/app/components/app/therapy-protocol/detail-list.cfg.ts
new file mode 100644
index 00000000..e50113d7
--- /dev/null
+++ b/app/components/app/therapy-protocol/detail-list.cfg.ts
@@ -0,0 +1,28 @@
+import type { Config } from '~/components/pub/my-ui/data-table'
+const action = defineAsyncComponent(() => import('./_common/btn-confirmation-detail.vue'))
+
+export const detailTherapyProtocolListConfig: Config = {
+ cols: [{}, {}, {}, {width: 100},],
+
+ headers: [
+ [
+ { label: 'Program Kegiatan' },
+ { label: 'Paraf Terapis' },
+ { label: 'Paraf Dokter' },
+ { label: 'Action' },
+ ],
+ ],
+
+ keys: ['program', 'therapistSign', 'doctorSign', 'action'],
+
+ parses: { },
+ components: {
+ action(rec, idx) {
+ return {
+ idx,
+ rec: rec as object,
+ component: action,
+ }
+ },
+ },
+}
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/detail.vue b/app/components/app/therapy-protocol/detail.vue
new file mode 100644
index 00000000..e57ff3b1
--- /dev/null
+++ b/app/components/app/therapy-protocol/detail.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+ Kembali
+
+
+
+
+ Form 1
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa bulan` }}
+
+
+
+
+ Form 2
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+
+ aaaaaa
+
+
+ aaaaaa
+
+
+ aaaaaa
+
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+
+
+
+
+ Form 3
+ {{ `aaaaaa` }}
+ {{ `aaaaaa` }}
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/edit.vue b/app/components/app/therapy-protocol/edit.vue
new file mode 100644
index 00000000..e871fc90
--- /dev/null
+++ b/app/components/app/therapy-protocol/edit.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/entry-form.vue b/app/components/app/therapy-protocol/entry-form.vue
new file mode 100644
index 00000000..22bae769
--- /dev/null
+++ b/app/components/app/therapy-protocol/entry-form.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/entry.vue b/app/components/app/therapy-protocol/entry.vue
new file mode 100644
index 00000000..48065416
--- /dev/null
+++ b/app/components/app/therapy-protocol/entry.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/field/base-textarea.vue b/app/components/app/therapy-protocol/field/base-textarea.vue
new file mode 100644
index 00000000..e6e7a63c
--- /dev/null
+++ b/app/components/app/therapy-protocol/field/base-textarea.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/field/index.ts b/app/components/app/therapy-protocol/field/index.ts
new file mode 100644
index 00000000..f3df2c2d
--- /dev/null
+++ b/app/components/app/therapy-protocol/field/index.ts
@@ -0,0 +1,4 @@
+export { default as RadioRelations } from './radio-relations.vue'
+export { default as SelectExaminationDate } from './select-examination-date.vue'
+export { default as BaseTextarea } from './base-textarea.vue'
+export { default as RadioWorkDisease } from './radio-work-disease.vue'
diff --git a/app/components/app/therapy-protocol/field/radio-relations.vue b/app/components/app/therapy-protocol/field/radio-relations.vue
new file mode 100644
index 00000000..aba12b86
--- /dev/null
+++ b/app/components/app/therapy-protocol/field/radio-relations.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/field/radio-work-disease.vue b/app/components/app/therapy-protocol/field/radio-work-disease.vue
new file mode 100644
index 00000000..9eeaa0d8
--- /dev/null
+++ b/app/components/app/therapy-protocol/field/radio-work-disease.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/field/select-examination-date.vue b/app/components/app/therapy-protocol/field/select-examination-date.vue
new file mode 100644
index 00000000..6ab232b9
--- /dev/null
+++ b/app/components/app/therapy-protocol/field/select-examination-date.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/history-dialog.vue b/app/components/app/therapy-protocol/history-dialog.vue
new file mode 100644
index 00000000..7bfcac10
--- /dev/null
+++ b/app/components/app/therapy-protocol/history-dialog.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/history-list.cfg.ts b/app/components/app/therapy-protocol/history-list.cfg.ts
new file mode 100644
index 00000000..0467589e
--- /dev/null
+++ b/app/components/app/therapy-protocol/history-list.cfg.ts
@@ -0,0 +1,45 @@
+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'))
+
+export const config: Config = {
+ cols: [{}, {}, {}, {}, {width: 140}, {width: 3},],
+
+ headers: [
+ [
+ { label: 'Tgl Pemeriksaan' },
+ { label: 'DPJP' },
+ { label: 'Anamnesa' },
+ { label: 'Permintaan Terapi' },
+ { label: 'Program/Kegiatan' },
+ { label: 'Action' },
+ ],
+ ],
+
+ keys: ['birth_date', 'person.name', 'person.name', 'person.name', 'birth_date', "action"],
+
+ parses: {
+ 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
+ },
+ },
+
+ components: {
+ action(rec, idx) {
+ return {
+ idx,
+ rec: rec as object,
+ component: action,
+ }
+ },
+ },
+}
diff --git a/app/components/app/therapy-protocol/list.cfg.ts b/app/components/app/therapy-protocol/list.cfg.ts
new file mode 100644
index 00000000..34155752
--- /dev/null
+++ b/app/components/app/therapy-protocol/list.cfg.ts
@@ -0,0 +1,53 @@
+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-duvp.vue'))
+const statusBadge = defineAsyncComponent(() => import('./_common/verify-badge.vue'))
+
+export const config: Config = {
+ cols: [{}, {}, {}, {}, {width: 140}, {width: 3},],
+
+ headers: [
+ [
+ { label: 'Tgl Pemeriksaan' },
+ { label: 'Anamnesa' },
+ { label: 'Permintaan Terapi' },
+ { label: 'Program' },
+ { label: 'Status' },
+ { label: 'Action' },
+ ],
+ ],
+
+ keys: ['anamnesis', 'anamnesis', 'anamnesis', 'anamnesis', 'status', 'action'],
+
+ parses: {
+ 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
+ },
+ },
+
+ components: {
+ 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/therapy-protocol/list.vue b/app/components/app/therapy-protocol/list.vue
new file mode 100644
index 00000000..0d62cc6c
--- /dev/null
+++ b/app/components/app/therapy-protocol/list.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/dropdown-action-p.vue b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/dropdown-action-p.vue
new file mode 100644
index 00000000..91e9f72c
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/dropdown-action-p.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list-cfg.ts b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list-cfg.ts
new file mode 100644
index 00000000..cc02aa1d
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list-cfg.ts
@@ -0,0 +1,33 @@
+import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
+import { defineAsyncComponent } from 'vue'
+
+const action = defineAsyncComponent(() => import('./dropdown-action-p.vue'))
+
+export const config: Config = {
+ cols: [{}, {}, {}, { width: 50 }],
+
+ headers: [[{ label: 'Kode' }, { label: 'Nama (FHIR)' }, { label: 'Nama (ID)' }, { label: '' }]],
+
+ keys: ['code', 'name', 'indName', 'action'],
+
+ delKeyNames: [
+ { key: 'code', label: 'Kode' },
+ { key: 'name', label: 'Nama (FHIR)' },
+ { key: 'indName', label: 'Nama (ID)' },
+ ],
+
+ parses: {},
+
+ components: {
+ action(rec, idx) {
+ const res: RecComponent = {
+ idx,
+ rec: rec as object,
+ component: action,
+ }
+ return res
+ },
+ },
+
+ htmls: {},
+}
diff --git a/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list.vue b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list.vue
new file mode 100644
index 00000000..e4836c7c
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-list.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue
new file mode 100644
index 00000000..4a44a40f
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
{{ title }}
+
+
+ Pilih Diagnosis
+
+
+
+
+
+
+
+
+
+
+ Prosedur
+ ICD-X
+ Action
+
+
+
+
+ {{ field.value?.name }}
+ {{ field.value?.code }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list-cfg.ts b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list-cfg.ts
new file mode 100644
index 00000000..cc02aa1d
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list-cfg.ts
@@ -0,0 +1,33 @@
+import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
+import { defineAsyncComponent } from 'vue'
+
+const action = defineAsyncComponent(() => import('./dropdown-action-p.vue'))
+
+export const config: Config = {
+ cols: [{}, {}, {}, { width: 50 }],
+
+ headers: [[{ label: 'Kode' }, { label: 'Nama (FHIR)' }, { label: 'Nama (ID)' }, { label: '' }]],
+
+ keys: ['code', 'name', 'indName', 'action'],
+
+ delKeyNames: [
+ { key: 'code', label: 'Kode' },
+ { key: 'name', label: 'Nama (FHIR)' },
+ { key: 'indName', label: 'Nama (ID)' },
+ ],
+
+ parses: {},
+
+ components: {
+ action(rec, idx) {
+ const res: RecComponent = {
+ idx,
+ rec: rec as object,
+ component: action,
+ }
+ return res
+ },
+ },
+
+ htmls: {},
+}
diff --git a/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list.vue b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list.vue
new file mode 100644
index 00000000..67be3075
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-list.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-picker.vue b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-picker.vue
new file mode 100644
index 00000000..e609450b
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/diagnosis-picker.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
{{ title }}
+
+
+ Pilih Diagnosis
+
+
+
+
+
+
+
+
+
+
+ Diagnosis
+ ICD-X
+ Action
+
+
+
+
+ {{ field.value?.name }}
+ {{ field.value?.code }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/dropdown-action-p.vue b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/dropdown-action-p.vue
new file mode 100644
index 00000000..ac7c8f29
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/functional-diagnosis/dropdown-action-p.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list-cfg.ts b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list-cfg.ts
new file mode 100644
index 00000000..cc02aa1d
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list-cfg.ts
@@ -0,0 +1,33 @@
+import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
+import { defineAsyncComponent } from 'vue'
+
+const action = defineAsyncComponent(() => import('./dropdown-action-p.vue'))
+
+export const config: Config = {
+ cols: [{}, {}, {}, { width: 50 }],
+
+ headers: [[{ label: 'Kode' }, { label: 'Nama (FHIR)' }, { label: 'Nama (ID)' }, { label: '' }]],
+
+ keys: ['code', 'name', 'indName', 'action'],
+
+ delKeyNames: [
+ { key: 'code', label: 'Kode' },
+ { key: 'name', label: 'Nama (FHIR)' },
+ { key: 'indName', label: 'Nama (ID)' },
+ ],
+
+ parses: {},
+
+ components: {
+ action(rec, idx) {
+ const res: RecComponent = {
+ idx,
+ rec: rec as object,
+ component: action,
+ }
+ return res
+ },
+ },
+
+ htmls: {},
+}
diff --git a/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list.vue b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list.vue
new file mode 100644
index 00000000..d299219f
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-list.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-picker.vue b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-picker.vue
new file mode 100644
index 00000000..76ce6dfd
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/diagnosis-picker.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
{{ title }}
+
+
+ Pilih Diagnosis
+
+
+
+
+
+
+
+
+
+
+ Diagnosis
+ ICD-X
+ Action
+
+
+
+
+ {{ field.value?.name }}
+ {{ field.value?.code }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/dropdown-action-p.vue b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/dropdown-action-p.vue
new file mode 100644
index 00000000..a30ca20c
--- /dev/null
+++ b/app/components/app/therapy-protocol/picker-dialog/medical-diagnosis/dropdown-action-p.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/components/app/therapy-protocol/verify-dialog.vue b/app/components/app/therapy-protocol/verify-dialog.vue
new file mode 100644
index 00000000..d72a96c2
--- /dev/null
+++ b/app/components/app/therapy-protocol/verify-dialog.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
diff --git a/app/components/content/encounter/process.vue b/app/components/content/encounter/process.vue
index 23640af7..c7ac7b4f 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 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'
import Radiology from '~/components/content/radiology-order/main.vue'
@@ -59,7 +60,7 @@ const tabs: TabItem[] = [
component: AssesmentFunctionList,
props: { encounter: data, type: 'function', label: 'Asesmen Fungsi' },
},
- { value: 'therapy-protocol', label: 'Protokol Terapi' },
+ { value: 'therapy-protocol', label: 'Protokol Terapi', component: TherapyProtocolList, props: { encounter: data } },
{ value: 'education-assessment', label: 'Asesmen Kebutuhan Edukasi' },
{ value: 'consent', label: 'General Consent' },
{ value: 'patient-note', label: 'CPRJ' },
@@ -85,10 +86,6 @@ const tabs: TabItem[] = [