191 lines
6.6 KiB
TypeScript
191 lines
6.6 KiB
TypeScript
import { z } from 'zod'
|
|
import type { Soap } from '~/models/soapi'
|
|
|
|
const DiagnosisCodeSchema = z.object({
|
|
code: z.string().default(''),
|
|
name: z.string().default(''),
|
|
})
|
|
|
|
const AssessmentSectionSchema = z.object({
|
|
note: z.string().default(''),
|
|
codes: z.array(DiagnosisCodeSchema).default([]),
|
|
})
|
|
|
|
export const EarlySchema = z.object({
|
|
'prim-compl': z.string({ required_error: 'Keluhan utama harus diisi' }).min(1, 'Keluhan utama harus diisi'),
|
|
'cur-disea-hist': z.string().default(''),
|
|
'syst-bp': z.string().default(''),
|
|
'diast-bp': z.string().default(''),
|
|
pulse: z.string().default(''),
|
|
'resp-rate': z.string().default(''),
|
|
temp: z.string().default(''),
|
|
weight: z.string().default(''),
|
|
height: z.string().default(''),
|
|
'reflect-fisio': z.string().default(''),
|
|
'reflect-pato': z.string().default(''),
|
|
'autonom-neuron': z.string().default(''),
|
|
'medical-act': z.string().default(''),
|
|
therapy: z.string().default(''),
|
|
})
|
|
|
|
export const EarlyRehabSchema = z.object({
|
|
'prim-compl': z.string({ required_error: 'Keluhan utama harus diisi' }).min(1, 'Keluhan utama harus diisi'),
|
|
'medical-plan': z.string().default(''),
|
|
'diagnosis-medical': z.string().default(''),
|
|
'rehab-trouble': z.string().default(''),
|
|
'medical-trouble': z.string().default(''),
|
|
'physic-modal': z.string().default(''),
|
|
exercise: z.string().default(''),
|
|
'ortho-pesa': z.string().default(''),
|
|
education: z.string().default(''),
|
|
other: z.string().default(''),
|
|
cranialis: z.string().default(''),
|
|
sensoris: z.string().default(''),
|
|
'reflect-fisio': z.string().default(''),
|
|
'reflect-pato': z.string().default(''),
|
|
otonom: z.string().default(''),
|
|
localis: z.string().default(''),
|
|
'medical-trial': z.string().default(''),
|
|
therapy: z.string().default(''),
|
|
'syst-bp': z.string().default(''),
|
|
'diast-bp': z.string().default(''),
|
|
pulse: z.string().default(''),
|
|
gcs: z.string().default(''),
|
|
'respiratory-rate': z.string().default(''),
|
|
temp: z.string().default(''),
|
|
weight: z.string().default(''),
|
|
height: z.string().default(''),
|
|
ambulance: z.string().default(''),
|
|
gait: z.string().default(''),
|
|
'neck-rom': z.string().default(''),
|
|
'body-rom': z.string().default(''),
|
|
'aga-rom': z.string().default(''),
|
|
'agb-rom': z.string().default(''),
|
|
'neck-mmt': z.string().default(''),
|
|
'body-mmt': z.string().default(''),
|
|
'aga-mmt': z.string().default(''),
|
|
'agb-mmt': z.string().default(''),
|
|
})
|
|
|
|
export const FunctionSoapiSchema = z.object({
|
|
'prim-compl': z.string({ required_error: 'Keluhan utama harus diisi' }).min(1, 'Keluhan utama harus diisi'),
|
|
'past-disease': z.string().default(''),
|
|
'current-disease': z.string().default(''),
|
|
gcs: z.string().default(''),
|
|
'respiratory-rate': z.string().default(''),
|
|
'respiratory-rate-type': z.string().default(''),
|
|
pulse: z.string().default(''),
|
|
'pulse-type': z.string().default(''),
|
|
'right-arm-bp': z.string().default(''),
|
|
'left-arm-bp': z.string().default(''),
|
|
'axillary-temp': z.string().default(''),
|
|
'rektal-temp': z.string().default(''),
|
|
skin: z.string().default(''),
|
|
head: z.string().default(''),
|
|
ear: z.string().default(''),
|
|
nose: z.string().default(''),
|
|
'oral-cavity': z.string().default(''),
|
|
eye: z.string().default(''),
|
|
'other-body-part': z.string().default(''),
|
|
neck: z.string().default(''),
|
|
thyroid: z.string().default(''),
|
|
thorax: z.string().default(''),
|
|
heart: z.string().default(''),
|
|
lung: z.string().default(''),
|
|
abdomen: z.string().default(''),
|
|
heart2: z.string().default(''),
|
|
lien: z.string().default(''),
|
|
back: z.string().default(''),
|
|
extremity: z.string().default(''),
|
|
gender: z.string().default(''),
|
|
rectum: z.string().default(''),
|
|
'system-syaraf': z.string().default(''),
|
|
'nervous-system': z.string().default(''),
|
|
'cardio-respiratory': z.string().default(''),
|
|
imaging: z.string().default(''),
|
|
laboratory: z.string().default(''),
|
|
})
|
|
|
|
export const SubjectSchema = z.object({
|
|
note: z.string().default(''),
|
|
'prim-compl': z.string({ required_error: 'Keluhan utama harus diisi' }).min(1, 'Keluhan utama harus diisi'),
|
|
'sec-compl': z.string().default(''),
|
|
'pri-complain': z.string().default(''),
|
|
'sec-complain': z.string().default(''),
|
|
'cur-disea-hist': z.string().default(''),
|
|
'pas-disea-hist': z.string().default(''),
|
|
'fam-disea-hist': z.string().default(''),
|
|
'alg-hist': z.string().default(''),
|
|
'alg-react': z.string().default(''),
|
|
'med-hist': z.string().default(''),
|
|
'blood-type': z.string().default(''),
|
|
})
|
|
|
|
export const ObjectSchema = z.object({
|
|
note: z.string().default(''),
|
|
'consc-level': z.string().default(''),
|
|
'consc-level-det': z.string().default(''),
|
|
'syst-bp': z.string().default(''),
|
|
'diast-bp': z.string().default(''),
|
|
pulse: z.string().default(''),
|
|
'resp-rate': z.string().default(''),
|
|
'hear-rt': z.string().default(''),
|
|
'neuro-cranialis': z.string().default(''),
|
|
sensoris: z.string().default(''),
|
|
'reflect-fisio': z.string().default(''),
|
|
'reflect-pato': z.string().default(''),
|
|
'autonom-neuron': z.string().default(''),
|
|
'neck-rom': z.string().default(''),
|
|
'body-rom': z.string().default(''),
|
|
'aga-rom': z.string().default(''),
|
|
'agb-rom': z.string().default(''),
|
|
'neck-mmt': z.string().default(''),
|
|
'body-mmt': z.string().default(''),
|
|
'aga-mmt': z.string().default(''),
|
|
'agb-mmt': z.string().default(''),
|
|
localis: z.string().default(''),
|
|
'medical-trouble': z.string().default(''),
|
|
'rehab-medic-trouble': z.string().default(''),
|
|
temp: z.string().default(''),
|
|
spo2: z.string().default(''),
|
|
weight: z.string().default(''),
|
|
height: z.string().default(''),
|
|
'head-to-toe': z.record(z.string()).default({}),
|
|
})
|
|
|
|
const AssessmentSchema = z.object({
|
|
'early-diag': AssessmentSectionSchema,
|
|
'late-diag': AssessmentSectionSchema,
|
|
'sec-diag': AssessmentSectionSchema,
|
|
})
|
|
|
|
const InstructionCodeGroupSchema = z.object({
|
|
note: z.string().default(''),
|
|
codes: z.array(DiagnosisCodeSchema).default([]),
|
|
})
|
|
|
|
const InstructionSchema = z.object({
|
|
detail: z.string().default(''),
|
|
'medical-act': InstructionCodeGroupSchema,
|
|
'supporting-exam': z.array(DiagnosisCodeSchema).default([]),
|
|
therapy: z.string().default(''),
|
|
medication: z.array(DiagnosisCodeSchema).default([]),
|
|
material: z.array(DiagnosisCodeSchema).default([]),
|
|
'rehab-program': z.string().default(''),
|
|
'physic-modal': z.string().default(''),
|
|
exercise: z.string().default(''),
|
|
'ortes-protesa': z.string().default(''),
|
|
education: z.string().default(''),
|
|
other: z.string().default(''),
|
|
})
|
|
|
|
export const SoapSchema = z.object({
|
|
subject: SubjectSchema,
|
|
object: ObjectSchema,
|
|
assessment: AssessmentSchema,
|
|
plan: z.string().default(''),
|
|
instruction: InstructionSchema,
|
|
})
|
|
|
|
export type SoapiFormData = z.infer<typeof SoapSchema> & Partial<Soap>
|