Merge branch 'dev' into fe-prescription-56

This commit is contained in:
Andrian Roshandy
2025-10-24 12:40:59 +07:00
19 changed files with 1340 additions and 181 deletions
+11 -3
View File
@@ -95,14 +95,22 @@ provide('table_data_loader', isLoading)
</script>
<template>
<Header :prep="{ ...hreaderPrep }" :ref-search-nav="refSearchNav" />
<Header
:prep="{ ...hreaderPrep }"
:ref-search-nav="refSearchNav"
/>
<Separator class="my-4 xl:my-5" />
<Filter :ref-search-nav="refSearchNav" />
<AppEncounterList :data="data" />
<Dialog v-model:open="isFormEntryDialogOpen" title="Filter" size="lg" prevent-outside>
<Dialog
v-model:open="isFormEntryDialogOpen"
title="Filter"
size="lg"
prevent-outside
>
<AppEncounterFilter />
</Dialog>
<!-- <Pagination :pagination-meta="paginationMeta" @page-change="handlePageChange" /> -->
</template>
+8 -9
View File
@@ -5,18 +5,14 @@ import { useRoute, useRouter } from 'vue-router'
import { getDetail } from '~/services/encounter.service'
import type { Encounter } from '~/models/encounter'
// Components
import CompTab from '~/components/pub/my-ui/comp-tab/comp-tab.vue'
import type { TabItem } from '~/components/pub/my-ui/comp-tab/type'
import Status from '~/components/app/encounter/status.vue'
import AssesmentFunctionList from '~/components/content/assesment-function/list.vue'
import CompTab from '~/components/pub/my-ui/comp-tab/comp-tab.vue'
import AssesmentFunctionList from '~/components/content/soapi/entry.vue'
import EarlyMedicalAssesmentList from '~/components/content/soapi/entry.vue'
// import AssesmentFunctionList from '~/components/content/assesment-function/list.vue'
import Prescription from '~/components/content/prescription/main.vue'
import EarlyMedicalRehabList from '~/components/content/soapi/entry.vue'
import Prescription from '~/components/content/prescription/main.vue'
import Status from '~/components/app/encounter/status.vue'
import Consultation from '~/components/content/consultation/list.vue'
const route = useRoute()
@@ -31,7 +27,10 @@ const activeTab = computed({
})
const id = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0
const dataRes = await getDetail(id, { includes: 'patient,patient-person,patient-person-addresses,unit,Appointment_Doctor,Appointment_Doctor-employee,Appointment_Doctor-employee-person'})
const dataRes = await getDetail(id, {
includes:
'patient,patient-person,patient-person-addresses,unit,Appointment_Doctor,Appointment_Doctor-employee,Appointment_Doctor-employee-person',
})
const dataResBody = dataRes.body ?? null
const data = dataResBody?.data ?? null
+1 -1
View File
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed } from 'vue'
import { useRoute } from 'vue-router'
import { useQueryMode } from '@/composables/useQueryMode' // asumsikan ini ada
import { useQueryMode } from '@/composables/useQueryMode'
import SoapiList from './list.vue'
import EarlyForm from './form.vue'
+81 -3
View File
@@ -1,9 +1,61 @@
<script setup lang="ts">
import { z } from 'zod'
import Entry from '~/components/app/soapi/entry.vue'
import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
import { FunctionSoapiSchema } from '~/schemas/soapi.schema'
import { toast } from '~/components/pub/ui/toast'
import { handleActionSave, handleActionEdit } from '~/handlers/soapi-early.handler'
const route = useRoute()
const isOpen = ref(false)
const data = ref([])
const schema = FunctionSoapiSchema
const payload = ref({
encounter_id: 0,
time: '',
typeCode: 'function',
value: '',
})
const model = ref({
'prim-compl': '',
'past-disease': '',
'current-disease': '',
gcs: '',
'respiratory-rate': '',
'respiratory-rate-type': '',
pulse: '',
'pulse-type': '',
'right-arm-bp': '',
'left-arm-bp': '',
'axillary-temp': '',
'rektal-temp': '',
skin: '',
head: '',
ear: '',
nose: '',
'oral-cavity': '',
eye: '',
'other-body-part': '',
neck: '',
thyroid: '',
thorax: '',
heart: '',
lung: '',
abdomen: '',
heart2: '',
lien: '',
back: '',
extremity: '',
gender: '',
rectum: '',
'system-syaraf': '',
'nervous-system': '',
'cardio-respiratory': '',
imaging: '',
laboratory: '',
})
const isLoading = reactive<DataTableLoader>({
isTableLoading: false,
})
@@ -21,19 +73,45 @@ onMounted(() => {
getPatientList()
})
function handleClick(type: string) {
function handleOpen(type: string) {
console.log(type)
isOpen.value = true
}
const entryRehabRef = ref()
async function actionHandler(type: string) {
console.log(type)
const result = await entryRehabRef.value?.validate()
if (result?.valid) {
console.log('data', result.data)
handleActionSave(
{
...payload.value,
value: JSON.stringify(result.data),
encounter_id: +route.params.id,
time: new Date().toISOString(),
},
{},
toast,
)
} else {
console.log('Ada error di form', result)
}
}
provide('table_data_loader', isLoading)
</script>
<template>
<Entry
ref="entryRehabRef"
v-model="model"
:schema="schema"
type="function"
:exclude-fields="['prim-compl', 'sec-compl']"
@click="handleClick"
@modal="handleOpen"
/>
<div class="my-2 flex justify-end py-2">
<Action @click="actionHandler" />
</div>
<Dialog
v-model:open="isOpen"
title="Pilih Prosedur"
+86 -3
View File
@@ -1,9 +1,66 @@
<script setup lang="ts">
import { z } from 'zod'
import Entry from '~/components/app/soapi/entry.vue'
import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
import { EarlyRehabSchema } from '~/schemas/soapi.schema'
import { toast } from '~/components/pub/ui/toast'
import { handleActionSave, handleActionEdit } from '~/handlers/soapi-early.handler'
const route = useRoute()
const isOpen = ref(false)
const data = ref([])
const schema = EarlyRehabSchema
const payload = ref({
encounter_id: 0,
time: '',
typeCode: 'early-rehab',
value: '',
})
const model = ref({
'prim-compl': '',
'medical-plan': '',
'diagnosis-medical': '',
'rehab-trouble': '',
'medical-trouble': '',
'physic-modal': '',
exercise: '',
'ortho-pesa': '',
education: '',
other: '',
cranialis: '',
sensoris: '',
'reflect-fisio': '',
'reflect-pato': '',
otonom: '',
localis: '',
'medical-trial': '',
therapy: '',
'syst-bp': '',
'diast-bp': '',
pulse: '',
gcs: '',
'respiratory-rate': '',
temperature: '',
ambulance: '',
gait: '',
'neck-rom': '',
'body-rom': '',
'aga-rom': '',
'agb-rom': '',
'neck-mmt': '',
'body-mmt': '',
'aga-mmt': '',
'agb-mmt': '',
localis: '',
'medical-trouble': '',
'rehab-trouble': '',
temp: '',
spo2: '',
weight: '',
height: '',
})
const isLoading = reactive<DataTableLoader>({
isTableLoading: false,
})
@@ -21,19 +78,45 @@ onMounted(() => {
getPatientList()
})
function handleClick(type: string) {
function handleOpen(type: string) {
console.log(type)
isOpen.value = true
}
const entryRehabRef = ref()
async function actionHandler(type: string) {
console.log(type)
const result = await entryRehabRef.value?.validate()
if (result?.valid) {
console.log('data', result.data)
handleActionSave(
{
...payload.value,
value: JSON.stringify(result.data),
encounter_id: +route.params.id,
time: new Date().toISOString(),
},
{},
toast,
)
} else {
console.log('Ada error di form', result)
}
}
provide('table_data_loader', isLoading)
</script>
<template>
<Entry
ref="entryRehabRef"
v-model="model"
:schema="schema"
type="early-rehab"
:exclude-fields="['prim-compl', 'sec-compl']"
@click="handleClick"
@modal="handleOpen"
/>
<div class="my-2 flex justify-end py-2">
<Action @click="actionHandler" />
</div>
<Dialog
v-model:open="isOpen"
title="Pilih Prosedur"
+68 -3
View File
@@ -1,9 +1,39 @@
<script setup lang="ts">
import { z } from 'zod'
import Entry from '~/components/app/soapi/entry.vue'
import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
import { EarlySchema } from '~/schemas/soapi.schema'
import { toast } from '~/components/pub/ui/toast'
import { handleActionSave, handleActionEdit } from '~/handlers/soapi-early.handler'
const route = useRoute()
const isOpen = ref(false)
const data = ref([])
const schema = EarlySchema
const payload = ref({
encounter_id: 0,
time: '',
typeCode: 'early',
value: '',
})
const model = ref({
'prim-compl': '',
'cur-disea-hist': '',
'syst-bp': '',
'diast-bp': '',
pulse: '',
'resp-rate': '',
temp: '',
weight: '',
height: '',
'reflect-fisio': '',
'reflect-pato': '',
'autonom-neuron': '',
'medical-act': '',
therapy: '',
})
const isLoading = reactive<DataTableLoader>({
isTableLoading: false,
})
@@ -21,16 +51,51 @@ onMounted(() => {
getPatientList()
})
function handleClick(type: string) {
function handleOpen(type: string) {
console.log(type)
isOpen.value = true
}
const entryRef = ref()
async function actionHandler(type: string) {
console.log(type)
const result = await entryRef.value?.validate()
if (result?.valid) {
console.log('data', result.data)
handleActionSave(
{
...payload.value,
value: JSON.stringify(result.data),
encounter_id: +route.params.id,
time: new Date().toISOString(),
},
{},
toast,
)
} else {
console.log('Ada error di form', result)
}
}
provide('table_data_loader', isLoading)
</script>
<template>
<Entry type="early" :exclude-fields="['prim-compl', 'sec-compl']" @click="handleClick" />
<Dialog v-model:open="isOpen" title="Pilih Prosedur" size="xl" prevent-outside>
<Entry
ref="entryRef"
v-model="model"
:schema="schema"
type="early"
@modal="handleOpen"
/>
<div class="my-2 flex justify-end py-2">
<Action @click="actionHandler" />
</div>
<Dialog
v-model:open="isOpen"
title="Pilih Prosedur"
size="xl"
prevent-outside
>
<AppIcdMultiselectPicker :data="data" />
</Dialog>
</template>