Merge branch 'dev' of github.com:dikstub-rssa/simrs-fe into feat/patient-63-adjustment
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
const isoDateTime = z
|
||||
.string()
|
||||
.min(1, 'Tanggal / waktu wajib diisi')
|
||||
.refine((val) => {
|
||||
const date = new Date(val)
|
||||
return !isNaN(date.getTime())
|
||||
}, 'Format tanggal / waktu tidak valid')
|
||||
|
||||
const positiveInt = z.coerce.number().int().nonnegative()
|
||||
|
||||
const OperatorTeamSchema = z.object({
|
||||
dpjpId: z.coerce
|
||||
.number({
|
||||
invalid_type_error: 'Silahkan pilih dpjp terlebih dahulu',
|
||||
})
|
||||
.int(),
|
||||
operatorName: z.string({
|
||||
required_error: 'Masukkan nama operator',
|
||||
}),
|
||||
assistantOperatorName: z.string({
|
||||
required_error: 'Masukkan nama asisten operator',
|
||||
}),
|
||||
instrumentNurseName: z.string({
|
||||
required_error: 'Masukkan nama instrumentir',
|
||||
}),
|
||||
|
||||
surgeryDate: isoDateTime,
|
||||
actionDiagnosis: z.string(),
|
||||
|
||||
postSurgeryNurseId: z.number().int().optional().nullable(),
|
||||
})
|
||||
|
||||
const ProcedureSchema = z.object({
|
||||
id: z.number().int(),
|
||||
name: z.string().min(1),
|
||||
code: z.string().min(1),
|
||||
})
|
||||
|
||||
const OperationExecutionSchema = z.object({
|
||||
surgeryType: z.enum(['kecil', 'sedang', 'besar', 'khusus'], { required_error: 'Silahkan pilih jenis operasi' }),
|
||||
billingCode: z.string({
|
||||
required_error: 'Silahkan pilih kode billing',
|
||||
}),
|
||||
operationSystem: z.enum(['khusus', 'cito', 'efektif', 'urgent'], { required_error: 'Silahkan pilih sistem operasi' }),
|
||||
|
||||
operationStartAt: isoDateTime,
|
||||
operationEndAt: isoDateTime,
|
||||
|
||||
anesthesiaStartAt: isoDateTime,
|
||||
anesthesiaEndAt: isoDateTime,
|
||||
|
||||
surgeryCleanType: z.enum(['bersih', 'bersih_terkontaminasi', 'terkontaminasi', 'kotor']).optional(),
|
||||
surgeryNumber: z.enum(['first', 'retry']).optional(),
|
||||
|
||||
birthPlaceNote: z.string().optional(),
|
||||
personWeight: positiveInt.optional(),
|
||||
birthCondition: z.string().optional(),
|
||||
|
||||
operationDescription: z.string({
|
||||
required_error: 'Mohon lengkapi uraian operasi',
|
||||
}),
|
||||
|
||||
bleedingAmountCc: positiveInt.optional(),
|
||||
|
||||
birthRemark: z.enum(['lahir_hidup', 'lahir_mati']).optional(),
|
||||
})
|
||||
|
||||
const BloodInputSchema = z
|
||||
.object({
|
||||
type: z.enum(['prc', 'wb', 'ffp', 'tc']),
|
||||
amount: z.object({
|
||||
prc: z.coerce.number().optional(),
|
||||
wb: z.coerce.number().optional(),
|
||||
ffp: z.coerce.number().optional(),
|
||||
tc: z.coerce.number().optional(),
|
||||
}),
|
||||
})
|
||||
.transform((val) => ({
|
||||
type: val.type,
|
||||
amount: Object.fromEntries(
|
||||
['prc', 'wb', 'ffp', 'tc'].map((k) => [k, val.type === k ? (val.amount[k] ?? null) : null]),
|
||||
),
|
||||
}))
|
||||
|
||||
const ImplantSchema = z.object({
|
||||
brand: z.string().optional(),
|
||||
name: z.string().optional(),
|
||||
stickerNumber: z.string().optional(),
|
||||
companionName: z.string().optional(),
|
||||
})
|
||||
|
||||
const SpecimenSchema = z.object({
|
||||
destination: z.string({
|
||||
required_error: 'Silahkan pilih specimen',
|
||||
}),
|
||||
})
|
||||
|
||||
const TissueNoteSchema = z.object({
|
||||
note: z
|
||||
.string()
|
||||
.trim()
|
||||
.transform((val) => (val === '' ? undefined : val))
|
||||
.optional(),
|
||||
})
|
||||
|
||||
export const ActionReportSchema = z.object({
|
||||
operatorTeam: OperatorTeamSchema,
|
||||
procedures: z.array(ProcedureSchema).min(1, { message: 'Silahkan pilih prosedur' }),
|
||||
|
||||
operationExecution: OperationExecutionSchema,
|
||||
|
||||
bloodInput: BloodInputSchema.optional(),
|
||||
implant: ImplantSchema.optional(),
|
||||
specimen: SpecimenSchema.optional(),
|
||||
|
||||
tissueNotes: z.array(TissueNoteSchema).optional(),
|
||||
})
|
||||
|
||||
export type ActionReportFormData = z.infer<typeof ActionReportSchema>
|
||||
@@ -4,9 +4,8 @@ import { InternalReferenceSchema } from './internal-reference.schema'
|
||||
// Check In
|
||||
const CheckInSchema = z.object({
|
||||
// registeredAt: z.string({ required_error: 'Tanggal masuk harus diisi' }),
|
||||
responsible_doctor_code: z.string({ required_error: 'Dokter harus diisi' }),
|
||||
// adm_employee_id: z.number({ required_error: 'PJA harus diisi' }).gt(0, 'PJA harus diisi'),
|
||||
registeredAt: z.string({ required_error: 'waktu harus diisi' }),
|
||||
responsible_doctor_id: z.number({ required_error: 'Dokter harus diisi' }).gt(0, 'Dokter harus diisi'),
|
||||
adm_employee_id: z.number({ required_error: 'PJA harus diisi' }).gt(0, 'PJA harus diisi'),
|
||||
})
|
||||
type CheckInFormData = z.infer<typeof CheckInSchema>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { isValid } from "date-fns"
|
||||
import { z } from 'zod'
|
||||
|
||||
const ERROR_MESSAGES = {
|
||||
@@ -16,6 +17,7 @@ const ERROR_MESSAGES = {
|
||||
}
|
||||
|
||||
const ACCEPTED_UPLOAD_TYPES = ['image/jpeg', 'image/png', 'application/pdf']
|
||||
const isValidationSep = false
|
||||
|
||||
const IntegrationEncounterSchema = z
|
||||
.object({
|
||||
@@ -116,7 +118,7 @@ const IntegrationEncounterSchema = z
|
||||
.refine(
|
||||
(data) => {
|
||||
// If payment type is jkn and SEP type is selected, then SEP number is required
|
||||
if (data.paymentMethod_code === 'jkn' && data.sepType && data.sepType.trim() !== '') {
|
||||
if (isValidationSep && data.paymentMethod_code === 'jkn' && data.sepType && data.sepType.trim() !== '') {
|
||||
return data.sepNumber && data.sepNumber.trim() !== ''
|
||||
}
|
||||
return true
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
const ItemPriceSchema = z.object({
|
||||
item_code: z.string({ required_error: 'Item harus diisi' }).min(1, 'Item harus diisi'),
|
||||
price: z.number({ required_error: 'Harga harus diisi' }).min(0, 'Harga tidak boleh kurang dari 0'),
|
||||
insuranceCompany_code: z.string({ required_error: 'Perusahaan Asuransi harus diisi' }).min(1, 'Perusahaan Asuransi harus diisi'),
|
||||
})
|
||||
|
||||
type ItemPriceFormData = z.infer<typeof ItemPriceSchema>
|
||||
|
||||
export { ItemPriceSchema }
|
||||
export type { ItemPriceFormData }
|
||||
@@ -0,0 +1,17 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
const ItemSchema = z.object({
|
||||
code: z.string({ required_error: 'Kode harus diisi' }).min(1, 'Kode minimum 1 karakter'),
|
||||
name: z.string({ required_error: 'Nama harus diisi' }).min(1, 'Nama minimum 1 karakter'),
|
||||
itemGroup_code: z.string({ required_error: 'Item Group harus diisi' }).min(1, 'Item Group harus diisi'),
|
||||
uom_code: z.string({ required_error: 'UOM harus diisi' }).min(1, 'UOM harus diisi'),
|
||||
infra_code: z.string({ required_error: 'Infra harus diisi' }).optional(),
|
||||
stock: z.number({ required_error: 'Stok harus diisi' }).min(0, 'Stok tidak boleh kurang dari 0').optional(),
|
||||
buyingPrice: z.number({ required_error: 'Harga Beli harus diisi' }).min(0, 'Harga Beli tidak boleh kurang dari 0').optional(),
|
||||
sellingPrice: z.number({ required_error: 'Harga Jual harus diisi' }).min(0, 'Harga Jual tidak boleh kurang dari 0').optional(),
|
||||
})
|
||||
|
||||
type ItemFormData = z.infer<typeof ItemSchema>
|
||||
|
||||
export { ItemSchema }
|
||||
export type { ItemFormData }
|
||||
@@ -153,6 +153,15 @@ export const ObjectSchema = z.object({
|
||||
'head-to-toe': z.record(z.string()).default({}),
|
||||
})
|
||||
|
||||
export const SummaryMedicSchema = z.object({
|
||||
date: z.string().default(''),
|
||||
doctor: z.string().default(''),
|
||||
diagnosis: z.string().default(''),
|
||||
essay: z.string().default(''),
|
||||
plan: z.string().default(''),
|
||||
note: z.string().default(''),
|
||||
})
|
||||
|
||||
export const InitialNursingSchema = z.object({
|
||||
'pri-complain': z.string().default(''),
|
||||
'med-type': z.string().default(''),
|
||||
|
||||
Reference in New Issue
Block a user