Files
simrsx-fe/app/schemas/assessment-education.ts
T
Khafid Prayoga dd33bbac8e finish: integrasi create education assessment
note: masih perlu cek terkait new api domain
2025-10-23 16:20:50 +07:00

84 lines
2.3 KiB
TypeScript

import * as z from 'zod'
import { genEduAssessmentRaw, type EduAssessment, type EduAssessmentRaw } from '../models/edu-assessment'
import { serializeKeyToBoolean } from '../lib/clinical.constants'
const AssessmentEducationSchema = z.object({
generalEducationNeeds: z
.array(z.string(), {
required_error: 'Mohon pilih setidaknya item',
})
.min(1, 'Mohon pilih setidaknya item'),
specificEducationNeeds: z
.array(z.string(), {
required_error: 'Mohon pilih setidaknya item',
})
.min(1, 'Mohon pilih setidaknya item'),
learningAbility: z.string({
required_error: 'Mohon pilih kemampuan belajar',
}),
learningWillingness: z.string({
required_error: 'Mohon pilih kemauan belajar',
}),
barrier: z.string({
required_error: 'Mohon pilih hambatan',
}),
learningMethod: z.string({
required_error: 'Mohon pilih metode pembelajaran',
}),
language: z.string({
required_error: 'Mohon pilih bahasa',
}),
languageBarrier: z.string({
required_error: 'Mohon pilih hambatan bahasa',
}),
beliefValue: z.string({
required_error: 'Mohon pilih keyakinan pada nilai-nilai yang dianut',
}),
plans: z
.array(
z.object({
id: z.number(),
value: z.string().nonempty('Mohon masukkan catatan'),
}),
)
.min(1, 'Minimal 1 catatan rencana studi'),
})
type AssessmentEducationFormData = z.infer<typeof AssessmentEducationSchema>
export { AssessmentEducationSchema }
export type { AssessmentEducationFormData }
export function encode(encounterId: number, formData: AssessmentEducationFormData): EduAssessmentRaw {
let base = genEduAssessmentRaw()
// serialize general data
const general = serializeKeyToBoolean('general', formData.generalEducationNeeds)
const special = serializeKeyToBoolean('special', formData.specificEducationNeeds)
base.encounter_id = encounterId
base.generalEdus = JSON.stringify(general)
base.specialEdus = JSON.stringify(special)
base.assessments = JSON.stringify({
'learn-ability': formData.learningAbility,
'learn-will': formData.learningWillingness,
obstacle: formData.barrier,
'learn-method': formData.learningMethod,
lang: formData.language,
'lang-obstacle': formData.languageBarrier,
belief: formData.beliefValue,
})
base.plan = JSON.stringify(formData.plans)
return base
}