dd33bbac8e
note: masih perlu cek terkait new api domain
84 lines
2.3 KiB
TypeScript
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
|
|
}
|