Files
simrsx-fe/app/schemas/therapy-protocol.schema.ts
hasyim_kai 1dd8e8e7b3 Squashed commit of the following:
commit 72ce2260c50597f782f07d29db3985607ecc2f34
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 17 15:19:36 2025 +0700

    Feat: add doc preview in Therpay protocol List

commit 7032cd2409a660d40899ffd421137e4158cfde4a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 15:34:30 2025 +0700

    Fix: prepare API integration protokol terapi verification

commit dbf6f78d00afc818baf2b34d128ee2153814cc88
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Wed Nov 12 14:09:28 2025 +0700

    Feat: add basic CRUD therapy protocol

commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 11 15:57:54 2025 +0700

    Fix: Prepare protokol terapi API Integration

commit 4674090566727cebd947e50e2c06c44e8c7afa7e
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:33:22 2025 +0700

    Fix: hotfix style add protokol terapi

commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:17:14 2025 +0700

    Fix: Typo drpodown-action-p in protokol-terapi

commit e21d30eacf1a08118e289d4bb64889e708d5023a
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 10 15:14:33 2025 +0700

    Fix: add diagnose & procedure dialog picker in add protokol terapi

commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 10:21:24 2025 +0700

    Fix: Add Schema therapy protocol rehab medik

commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Tue Nov 4 09:30:55 2025 +0700

    Fix: refactor Actions Btn ba-dr-su

commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8
Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com>
Date:   Mon Nov 3 17:08:20 2025 +0700

    Feat: UI protokol terapi in Rehab medik

commit 63010f69ff30532bb8ac91443112f31d4942b221
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Tue Oct 21 09:54:13 2025 +0700

    wip: list protokol terapi

commit 44eedc298680a5255fee0ee8feee3e24beda93dd
Author: Khafid Prayoga <khafidp@pm.me>
Date:   Mon Oct 20 12:54:01 2025 +0700

    feat(therapy-protocol): init form entry

    feat(therapy-protocol): init page routes

    wip: init entry form

    wip: form entry protokol terapi

    todo: table procedure, and diagnose  picker

    wip: schema form new entry

    todo: picker/modal yang relateds ke form entry
2025-11-25 09:23:57 +07:00

160 lines
4.1 KiB
TypeScript

import { z } from 'zod'
const TherapyProtocolSchema = z.object({
examinationDate: z.string({
required_error: 'Pilih tanggal pemeriksaan',
}),
relationshipToInsured: z.enum(['spouse', 'child'], {
required_error: 'Pilih hubungan',
}),
anamnesis: z.string({
required_error: 'Mohon lengkapi catatan anamnesa',
}),
medicalHistory: z.string({
required_error: 'Mohon lengkapi catatan riwayat penyakit',
}),
medicationHistory: z.string({
required_error: 'Mohon lengkapi catatan riwayat obat',
}),
supportDiagnosis: z.array(
z.object({
diagnosis: z.string({
required_error: 'Isi diagnosis',
}),
}),
{
required_error: 'Isi diagnosis',
},
),
functionalDiagnosis: z.array(
z
.object({
diagnosis: z.string({}),
})
.optional(),
{
required_error: 'Isi diagnosis',
},
),
treatmentDiagnosis: z.array(
z.object({
diagnosis: z.string({
required_error: 'Isi diagnosis',
}),
}),
{
required_error: 'Isi diagnosis',
},
),
supportExamination: z.string({
required_error: 'Mohon lengkapi catatan pemeriksaan penunjang',
}),
recommendation: z.string({
required_error: 'Mohon lengkapi catatan anjuran',
}),
evaluation: z.string({
required_error: 'Mohon lengkapi catatan evaluasi',
}),
isWorkRelatedDisease: z.string({
required_error: 'Pilih apakah penyakit berkaitan dengan pekerjaan',
}),
})
const PickerItemSchema = z.object({
id: z.number().optional(),
code: z.string(),
name: z.string()
})
const TherapyProtocolMedicRehabilitationSchema = z.object({
form1ExaminationDate: z.string({
required_error: 'Pilih tanggal pemeriksaan',
}),
form1Diagnose: z.string({
required_error: 'Mohon lengkapi catatan diagnosa',
}),
form1TherapyRequest: z.string({
required_error: 'Mohon lengkapi catatan terapi',
}),
form1TargetPeriod: z.number({
required_error: 'Mohon lengkapi catatan terapi',
}),
form1TherapyTarget: z.string({
required_error: 'Mohon lengkapi catatan terapi',
}),
form2RelationshipToInsured: z.enum(['spouse', 'child'], {
required_error: 'Pilih hubungan',
}),
anamnesis: z.string({
required_error: 'Mohon lengkapi catatan anamnesa',
}),
form2PhysicalExamination: z.string({
required_error: 'Mohon lengkapi catatan pemeriksaan fisik',
}),
medicalDiagnoses: z.array(PickerItemSchema).default([]),
functionDiagnoses: z.array(PickerItemSchema).default([]),
procedures: z.array(PickerItemSchema).default([]),
supportingExams: z.string({
required_error: 'Mohon lengkapi catatan pemeriksaan penunjang',
}),
evaluation: z.string({
required_error: 'Mohon lengkapi catatan evaluasi',
}),
instruction: z.string({
required_error: 'Mohon lengkapi catatan anjuran',
}),
workCauseStatus: z.enum(['YA', 'TIDAK'], {
required_error: 'Pilih apakah penyakit berkaitan dengan pekerjaan',
}),
form3ExaminationDate: z.string({
required_error: 'Pilih tanggal pemeriksaan',
}),
form3Diagnose: z.string({
required_error: 'Mohon lengkapi catatan diagnosa',
}),
form3TherapyRequest: z.string({
required_error: 'Mohon lengkapi catatan terapi',
}),
form3ProgramActivities: z.array(
z.string({
required_error: 'Mohon lengkapi Program/Kegiatan',
}),
{
required_error: 'Isi Program/Kegiatan',
},
).default(['']),
})
// {
// "encounter_id": 4,
// "doctor_code": "doc-3",
// "anamnesis": "",
// "medicalDiagnoses": "", //json
// "functionDiagnoses": "", //json
// "procedures":"",
// "supportingExams":"",
// "instruction":"",
// "evaluation":"",
// "workCauseStatus":"YA",
// "frequency":1,
// "intervalUnit_code":"day",
// "duration":30,
// "durationUnit_code":"min"
// }
type TherapyProtocolFormData = z.infer<typeof TherapyProtocolSchema>
type TherapyProtocolMedicRehabilitationFormData = z.infer<typeof TherapyProtocolMedicRehabilitationSchema>
export { TherapyProtocolSchema, TherapyProtocolMedicRehabilitationSchema }
export type { TherapyProtocolFormData, TherapyProtocolMedicRehabilitationFormData }