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

No files matched your search

+26 -9
View File
@@ -19,6 +19,7 @@ import type { PatientEntity } from '~/models/patient'
// Helpers // Helpers
import { toTypedSchema } from '@vee-validate/zod' import { toTypedSchema } from '@vee-validate/zod'
import { useForm } from 'vee-validate' import { useForm } from 'vee-validate'
import { is } from "date-fns/locale"
const props = defineProps<{ const props = defineProps<{
isLoading?: boolean isLoading?: boolean
@@ -104,16 +105,28 @@ const mode = props.mode !== undefined ? props.mode : 'add'
const isLoading = props.isLoading !== undefined ? props.isLoading : false const isLoading = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
const isService = ref(props.isService || false) const isService = ref(props.isService || false)
const isDateReload = ref(false)
if (mode === 'add') { 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) => { watch(props, (value) => {
const patient = value.patient || ({} as PatientEntity) const patient = value.patient || ({} as PatientEntity)
const objects = value.objects || ({} as any) const objects = value.objects || ({} as any)
if (Object.keys(objects).length > 0) { if (Object.keys(objects).length > 0) {
sepDate.value = objects?.registerDate || '-' sepDate.value = objects?.registerDate || new Date().toISOString().substring(0, 10)
bpjsNumber.value = objects?.bpjsNumber || '-' bpjsNumber.value = objects?.bpjsNumber || '-'
nationalId.value = objects?.nationalIdentity || '-' nationalId.value = objects?.nationalIdentity || '-'
medicalRecordNumber.value = objects?.medicalRecordNumber || '-' medicalRecordNumber.value = objects?.medicalRecordNumber || '-'
@@ -122,6 +135,13 @@ watch(props, (value) => {
if (objects?.sepType) { if (objects?.sepType) {
admissionType.value = '1' admissionType.value = '1'
} }
isDateReload.value = true
setTimeout(() => {
if (objects?.letterDate) {
referralLetterDate.value = objects?.letterDate
}
isDateReload.value = false
}, 100)
} }
if (Object.keys(patient).length > 0) { if (Object.keys(patient).length > 0) {
bpjsNumber.value = '-' 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(() => { onMounted(() => {
if (!isService.value) { if (!isService.value) {
serviceType.value = '2' serviceType.value = '2'
@@ -331,7 +345,9 @@ onMounted(() => {
v-model="referralLetterNumber" v-model="referralLetterNumber"
v-bind="referralLetterNumberAttrs" v-bind="referralLetterNumberAttrs"
:disabled="isLoading || isReadonly" :disabled="isLoading || isReadonly"
@change="emit('event', 'search-letter', { admissionType, serviceType, search: $event })" @change="
emit('event', 'search-letter', { admissionType, serviceType, search: referralLetterNumber || '' })
"
/> />
<Button <Button
variant="outline" variant="outline"
@@ -358,6 +374,7 @@ onMounted(() => {
</Label> </Label>
<Field :errMessage="errors.referralLetterDate"> <Field :errMessage="errors.referralLetterDate">
<DatepickerSingle <DatepickerSingle
v-if="!isDateReload"
id="referralLetterDate" id="referralLetterDate"
v-model="referralLetterDate" v-model="referralLetterDate"
v-bind="referralLetterDateAttrs" v-bind="referralLetterDateAttrs"
+7 -7
View File
@@ -19,13 +19,13 @@ export const config: Config = {
headers: [ headers: [
[ [
{ label: '' }, { label: '' },
{ label: 'CONTROL LETTER NO.' }, { label: 'NO. SURAT' },
{ label: 'PLANNED DATE' }, { label: 'TANGGAL SURAT' },
{ label: 'SEP NO.' }, { label: 'NO. SEP' },
{ label: 'PATIENT NAME' }, { label: 'NAMA PASIEN' },
{ label: 'BPJS CARD NO.' }, { label: 'NO. KARTU BPJS' },
{ label: 'CLINIC' }, { label: 'KLINIK TUJUAN' },
{ label: 'DOCTOR' }, { label: 'DOKTER' },
], ],
], ],
+19 -14
View File
@@ -197,13 +197,13 @@ async function getLetterMappers(admissionType: string, search: string) {
} else { } else {
letters.value = [ letters.value = [
{ {
letterNumber: lettersRaw.rujukan.noRujukan || '', letterNumber: lettersRaw.rujukan.noKunjungan || '',
plannedDate: lettersRaw.rujukan.tglKunjungan || '', plannedDate: lettersRaw.rujukan.tglKunjungan || '',
sepNumber: lettersRaw.rujukan.informasi.eSEP || '', sepNumber: lettersRaw.rujukan?.informasi?.eSEP || '-',
patientName: lettersRaw.rujukan.peserta.nama || '', patientName: lettersRaw.rujukan.peserta.nama || '',
bpjsCardNo: lettersRaw.rujukan.peserta.noKartu || '', bpjsCardNo: lettersRaw.rujukan.peserta.noKartu || '',
clinic: lettersRaw.rujukan.poliRujukan.nama || '', clinic: lettersRaw.rujukan.poliRujukan.nama || '',
doctor: lettersRaw.rujukan.namaDokter || '', doctor: lettersRaw.rujukan.namaDokter || '-',
}, },
] ]
} }
@@ -218,7 +218,11 @@ function handleSavePatient() {
} }
function handleSaveLetter() { 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) { async function handleEvent(menu: string, value: any) {
@@ -242,7 +246,15 @@ async function handleEvent(menu: string, value: any) {
} }
if (menu === 'search-letter') { if (menu === 'search-letter') {
getLetterMappers(value.admissionType, value.search).then(() => { 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 return
} }
@@ -371,12 +383,11 @@ async function handleInit() {
label: classPaySources[item], label: classPaySources[item],
})) as any })) as any
if (route.query) { 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 const queries = route.query as any
isServiceHidden.value = queries['is-service'] === 'true' isServiceHidden.value = queries['is-service'] === 'true'
selectedObjects.value = {} selectedObjects.value = {}
if (queries['bpjs-number']) selectedObjects.value['bpjsNumber'] = queries['bpjs-number'] 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-type']) selectedObjects.value['sepType'] = queries['sep-type']
if (queries['sep-number']) selectedObjects.value['sepNumber'] = queries['sep-number'] if (queries['sep-number']) selectedObjects.value['sepNumber'] = queries['sep-number']
if (queries['register-date']) selectedObjects.value['registerDate'] = queries['register-date'] if (queries['register-date']) selectedObjects.value['registerDate'] = queries['register-date']
@@ -463,12 +474,6 @@ onMounted(async () => {
" "
@save="handleSavePatient" @save="handleSavePatient"
/> />
<AppSepTableSearchLetter
v-model:open="openLetter"
v-model:selected="selectedLetter"
:letters="letters"
@save="handleSaveLetter"
/>
<AppViewHistory <AppViewHistory
v-model:open="openHistory" v-model:open="openHistory"
:histories="histories" :histories="histories"
@@ -477,7 +482,7 @@ onMounted(async () => {
v-model:open="openLetter" v-model:open="openLetter"
:letters="letters" :letters="letters"
:selected="selectedLetter" :selected="selectedLetter"
:pagination-meta="paginationMeta" :pagination-meta="{ recordCount: 0, page: 1, pageSize: 10, totalPage: 0 } as any"
@fetch="(value) => getLetterMappers(value.admissionType, value.search)" @fetch="(value) => getLetterMappers(value.admissionType, value.search)"
@save="handleSaveLetter" @save="handleSaveLetter"
/> />
+2 -2
View File
@@ -67,10 +67,10 @@ const IntegrationBpjsSchema = z
.min(1, ERROR_MESSAGES.required.phoneNumber), .min(1, ERROR_MESSAGES.required.phoneNumber),
referralLetterNumber: z referralLetterNumber: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterNumber }) .string({ required_error: ERROR_MESSAGES.required.referralLetterNumber })
.min(1, ERROR_MESSAGES.required.referralLetterNumber), .min(1, ERROR_MESSAGES.required.referralLetterNumber).optional(),
referralLetterDate: z referralLetterDate: z
.string({ required_error: ERROR_MESSAGES.required.referralLetterDate }) .string({ required_error: ERROR_MESSAGES.required.referralLetterDate })
.min(1, ERROR_MESSAGES.required.referralLetterDate), .min(1, ERROR_MESSAGES.required.referralLetterDate).optional(),
fromClinic: z fromClinic: z
.string({ required_error: ERROR_MESSAGES.required.fromClinic }) .string({ required_error: ERROR_MESSAGES.required.fromClinic })
.min(1, ERROR_MESSAGES.required.fromClinic) .min(1, ERROR_MESSAGES.required.fromClinic)
@@ -1,7 +1,7 @@
// Base // Base
import * as base from './_crud-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' const name = 'monitoring-history'
export function getList(params: any = null) { export function getList(params: any = null) {