fix: recheck create sep

This commit is contained in:
riefive
2025-10-28 16:14:18 +07:00
parent b330609212
commit 0ecac1c183
5 changed files with 55 additions and 33 deletions
+26 -9
View File
@@ -19,6 +19,7 @@ import type { PatientEntity } from '~/models/patient'
// Helpers
import { toTypedSchema } from '@vee-validate/zod'
import { useForm } from 'vee-validate'
import { is } from "date-fns/locale"
const props = defineProps<{
isLoading?: boolean
@@ -104,16 +105,28 @@ const mode = props.mode !== undefined ? props.mode : 'add'
const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const isService = ref(props.isService || false)
const isDateReload = ref(false)
if (mode === 'add') {
// sepDate.value = new Date().toISOString()
// Set default sepDate to current date in YYYY-MM-DD format
const today = new Date()
const year = today.getFullYear()
const month = String(today.getMonth() + 1).padStart(2, '0')
const day = String(today.getDate()).padStart(2, '0')
sepDate.value = `${year}-${month}-${day}`
}
// Submit handler
const onSubmit = handleSubmit((values) => {
console.log('✅ Validated form values:', JSON.stringify(values, null, 2))
emit('event', 'save-sep', values)
})
watch(props, (value) => {
const patient = value.patient || ({} as PatientEntity)
const objects = value.objects || ({} as any)
if (Object.keys(objects).length > 0) {
sepDate.value = objects?.registerDate || '-'
sepDate.value = objects?.registerDate || new Date().toISOString().substring(0, 10)
bpjsNumber.value = objects?.bpjsNumber || '-'
nationalId.value = objects?.nationalIdentity || '-'
medicalRecordNumber.value = objects?.medicalRecordNumber || '-'
@@ -122,6 +135,13 @@ watch(props, (value) => {
if (objects?.sepType) {
admissionType.value = '1'
}
isDateReload.value = true
setTimeout(() => {
if (objects?.letterDate) {
referralLetterDate.value = objects?.letterDate
}
isDateReload.value = false
}, 100)
}
if (Object.keys(patient).length > 0) {
bpjsNumber.value = '-'
@@ -132,12 +152,6 @@ watch(props, (value) => {
}
})
// Submit handler
const onSubmit = handleSubmit((values) => {
console.log('✅ Validated form values:', JSON.stringify(values, null, 2))
emit('event', 'save-sep', values)
})
onMounted(() => {
if (!isService.value) {
serviceType.value = '2'
@@ -331,7 +345,9 @@ onMounted(() => {
v-model="referralLetterNumber"
v-bind="referralLetterNumberAttrs"
:disabled="isLoading || isReadonly"
@change="emit('event', 'search-letter', { admissionType, serviceType, search: $event })"
@change="
emit('event', 'search-letter', { admissionType, serviceType, search: referralLetterNumber || '' })
"
/>
<Button
variant="outline"
@@ -358,6 +374,7 @@ onMounted(() => {
</Label>
<Field :errMessage="errors.referralLetterDate">
<DatepickerSingle
v-if="!isDateReload"
id="referralLetterDate"
v-model="referralLetterDate"
v-bind="referralLetterDateAttrs"
+7 -7
View File
@@ -19,13 +19,13 @@ export const config: Config = {
headers: [
[
{ label: '' },
{ label: 'CONTROL LETTER NO.' },
{ label: 'PLANNED DATE' },
{ label: 'SEP NO.' },
{ label: 'PATIENT NAME' },
{ label: 'BPJS CARD NO.' },
{ label: 'CLINIC' },
{ label: 'DOCTOR' },
{ label: 'NO. SURAT' },
{ label: 'TANGGAL SURAT' },
{ label: 'NO. SEP' },
{ label: 'NAMA PASIEN' },
{ label: 'NO. KARTU BPJS' },
{ label: 'KLINIK TUJUAN' },
{ label: 'DOKTER' },
],
],
+19 -14
View File
@@ -197,13 +197,13 @@ async function getLetterMappers(admissionType: string, search: string) {
} else {
letters.value = [
{
letterNumber: lettersRaw.rujukan.noRujukan || '',
letterNumber: lettersRaw.rujukan.noKunjungan || '',
plannedDate: lettersRaw.rujukan.tglKunjungan || '',
sepNumber: lettersRaw.rujukan.informasi.eSEP || '',
sepNumber: lettersRaw.rujukan?.informasi?.eSEP || '-',
patientName: lettersRaw.rujukan.peserta.nama || '',
bpjsCardNo: lettersRaw.rujukan.peserta.noKartu || '',
clinic: lettersRaw.rujukan.poliRujukan.nama || '',
doctor: lettersRaw.rujukan.namaDokter || '',
doctor: lettersRaw.rujukan.namaDokter || '-',
},
]
}
@@ -218,7 +218,11 @@ function handleSavePatient() {
}
function handleSaveLetter() {
console.log('Letter dipilih:', selectedLetter.value)
// Find the selected letter and get its plannedDate
const selectedLetterData = letters.value.find((letter) => letter.letterNumber === selectedLetter.value)
if (selectedLetterData && selectedLetterData.plannedDate) {
selectedObjects.value['letterDate'] = selectedLetterData.plannedDate
}
}
async function handleEvent(menu: string, value: any) {
@@ -242,7 +246,15 @@ async function handleEvent(menu: string, value: any) {
}
if (menu === 'search-letter') {
getLetterMappers(value.admissionType, value.search).then(() => {
console.log('letters:', letters.value)
if (letters.value.length > 0) {
const copyObjects = { ...selectedObjects.value }
selectedObjects.value = {}
selectedLetter.value = letters.value[0].letterNumber
setTimeout(() => {
selectedObjects.value = copyObjects
selectedObjects.value['letterDate'] = letters.value[0].plannedDate
}, 100)
}
})
return
}
@@ -371,12 +383,11 @@ async function handleInit() {
label: classPaySources[item],
})) as any
if (route.query) {
// resource=encounter&register-date=2025-10-23&payment-type=bpjs&bpjs-number=121212121222&sep-type=ri
// resource=encounter&is-service=false&patient-name=Slathem&national-identity=5617213001231231&medical-record-number=0000000018
const queries = route.query as any
isServiceHidden.value = queries['is-service'] === 'true'
selectedObjects.value = {}
if (queries['bpjs-number']) selectedObjects.value['bpjsNumber'] = queries['bpjs-number']
if (queries['register-date']) selectedObjects.value['registerDate'] = queries['register-date']
if (queries['sep-type']) selectedObjects.value['sepType'] = queries['sep-type']
if (queries['sep-number']) selectedObjects.value['sepNumber'] = queries['sep-number']
if (queries['register-date']) selectedObjects.value['registerDate'] = queries['register-date']
@@ -463,12 +474,6 @@ onMounted(async () => {
"
@save="handleSavePatient"
/>
<AppSepTableSearchLetter
v-model:open="openLetter"
v-model:selected="selectedLetter"
:letters="letters"
@save="handleSaveLetter"
/>
<AppViewHistory
v-model:open="openHistory"
:histories="histories"
@@ -477,7 +482,7 @@ onMounted(async () => {
v-model:open="openLetter"
:letters="letters"
:selected="selectedLetter"
:pagination-meta="paginationMeta"
:pagination-meta="{ recordCount: 0, page: 1, pageSize: 10, totalPage: 0 } as any"
@fetch="(value) => getLetterMappers(value.admissionType, value.search)"
@save="handleSaveLetter"
/>
+2 -2
View File
@@ -67,10 +67,10 @@ const IntegrationBpjsSchema = z
.min(1, ERROR_MESSAGES.required.phoneNumber),
referralLetterNumber: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterNumber })
.min(1, ERROR_MESSAGES.required.referralLetterNumber),
.min(1, ERROR_MESSAGES.required.referralLetterNumber).optional(),
referralLetterDate: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterDate })
.min(1, ERROR_MESSAGES.required.referralLetterDate),
.min(1, ERROR_MESSAGES.required.referralLetterDate).optional(),
fromClinic: z
.string({ required_error: ERROR_MESSAGES.required.fromClinic })
.min(1, ERROR_MESSAGES.required.fromClinic)
@@ -1,7 +1,7 @@
// Base
import * as base from './_crud-base'
const path = '/api/vclaim/v1/monitoring/history'
const path = '/api/vclaim/v1/monitoring/hist'
const name = 'monitoring-history'
export function getList(params: any = null) {