mv treatment-report to action-report based on encounter menu id list
This commit is contained in:
+6
-6
@@ -4,7 +4,7 @@ import { toTypedSchema } from '@vee-validate/zod'
|
|||||||
import { type Duration, intervalToDuration } from 'date-fns'
|
import { type Duration, intervalToDuration } from 'date-fns'
|
||||||
|
|
||||||
// schema
|
// schema
|
||||||
import { type TreatmentReportFormData, TreatmentReportSchema } from '~/schemas/treatment-report.schema'
|
import { type ActionReportFormData, ActionReportSchema } from '~/schemas/action-report.schema'
|
||||||
|
|
||||||
// type
|
// type
|
||||||
import type { Doctor } from '~/models/doctor'
|
import type { Doctor } from '~/models/doctor'
|
||||||
@@ -34,7 +34,7 @@ import { SelectDoctor } from '~/components/app/doctor/fields'
|
|||||||
// Helpers
|
// Helpers
|
||||||
|
|
||||||
// #region Props & Emits
|
// #region Props & Emits
|
||||||
interface FormData extends TreatmentReportFormData {
|
interface FormData extends ActionReportFormData {
|
||||||
_operationDuration: string
|
_operationDuration: string
|
||||||
_anesthesiaDuration: string
|
_anesthesiaDuration: string
|
||||||
}
|
}
|
||||||
@@ -71,10 +71,10 @@ const isReadonly = computed(() => {
|
|||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
const formSchema = toTypedSchema(TreatmentReportSchema)
|
const formSchema = toTypedSchema(ActionReportSchema)
|
||||||
|
|
||||||
const { errors, handleSubmit, values, meta, resetForm, setFieldValue, setValues, validate } = useForm<FormData>({
|
const { errors, handleSubmit, values, meta, resetForm, setFieldValue, setValues, validate } = useForm<FormData>({
|
||||||
name: 'treatmentReportForm',
|
name: 'encounterActionReportForm',
|
||||||
validationSchema: formSchema,
|
validationSchema: formSchema,
|
||||||
initialValues: props.initialValues ? props.initialValues : {},
|
initialValues: props.initialValues ? props.initialValues : {},
|
||||||
validateOnMount: false,
|
validateOnMount: false,
|
||||||
@@ -141,7 +141,7 @@ watch(
|
|||||||
|
|
||||||
setFieldValue('_operationDuration', formatTime(res))
|
setFieldValue('_operationDuration', formatTime(res))
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true },
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
@@ -163,7 +163,7 @@ watch(
|
|||||||
|
|
||||||
setFieldValue('_anesthesiaDuration', formatTime(res))
|
setFieldValue('_anesthesiaDuration', formatTime(res))
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true },
|
||||||
)
|
)
|
||||||
// #endregion
|
// #endregion
|
||||||
</script>
|
</script>
|
||||||
+3
-3
@@ -4,7 +4,7 @@ import { format } from 'date-fns'
|
|||||||
import { id } from 'date-fns/locale'
|
import { id } from 'date-fns/locale'
|
||||||
|
|
||||||
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
|
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
|
||||||
import type { TreatmentReportData } from '~/components/app/treatment-report/sample'
|
import type { ActionReportData } from '~/components/app/action-report/sample'
|
||||||
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-d.vue'))
|
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-d.vue'))
|
||||||
|
|
||||||
export const config: Config = {
|
export const config: Config = {
|
||||||
@@ -41,13 +41,13 @@ export const config: Config = {
|
|||||||
|
|
||||||
parses: {
|
parses: {
|
||||||
reportAt: (rec: unknown): unknown => {
|
reportAt: (rec: unknown): unknown => {
|
||||||
const attr = (rec as TreatmentReportData).reportAt
|
const attr = (rec as ActionReportData).reportAt
|
||||||
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
|
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
|
||||||
|
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
operationAt: (rec: unknown): unknown => {
|
operationAt: (rec: unknown): unknown => {
|
||||||
const attr = (rec as TreatmentReportData).operationAt
|
const attr = (rec as ActionReportData).operationAt
|
||||||
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
|
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
|
||||||
|
|
||||||
return result
|
return result
|
||||||
+3
-3
@@ -4,7 +4,7 @@ import { format } from 'date-fns'
|
|||||||
import { id } from 'date-fns/locale'
|
import { id } from 'date-fns/locale'
|
||||||
|
|
||||||
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
|
import type { Config, RecComponent } from '~/components/pub/my-ui/data-table'
|
||||||
import type { TreatmentReportData } from '~/components/app/treatment-report/sample'
|
import type { ActionReportData } from '~/components/app/action-report/sample'
|
||||||
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
|
const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue'))
|
||||||
|
|
||||||
export const config: Config = {
|
export const config: Config = {
|
||||||
@@ -42,13 +42,13 @@ export const config: Config = {
|
|||||||
|
|
||||||
parses: {
|
parses: {
|
||||||
reportAt: (rec: unknown): unknown => {
|
reportAt: (rec: unknown): unknown => {
|
||||||
const attr = (rec as TreatmentReportData).reportAt
|
const attr = (rec as ActionReportData).reportAt
|
||||||
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
|
const result = format(new Date(attr), 'd MMMM yyyy, HH:mm', { locale: id })
|
||||||
|
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
operationAt: (rec: unknown): unknown => {
|
operationAt: (rec: unknown): unknown => {
|
||||||
const attr = (rec as TreatmentReportData).operationAt
|
const attr = (rec as ActionReportData).operationAt
|
||||||
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
|
const result = format(new Date(attr), 'd MMMM yyyy', { locale: id })
|
||||||
|
|
||||||
return result
|
return result
|
||||||
+2
-2
@@ -4,7 +4,7 @@ import { id } from 'date-fns/locale'
|
|||||||
|
|
||||||
// type
|
// type
|
||||||
import { type ProcedureSrc } from '~/models/procedure-src'
|
import { type ProcedureSrc } from '~/models/procedure-src'
|
||||||
import { type TreatmentReportFormData } from '~/schemas/treatment-report.schema'
|
import { type ActionReportFormData } from '~/schemas/action-report.schema'
|
||||||
|
|
||||||
// componenets
|
// componenets
|
||||||
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '~/components/pub/ui/accordion'
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '~/components/pub/ui/accordion'
|
||||||
@@ -14,7 +14,7 @@ import ArrangementProcedurePicker from '~/components/app/therapy-protocol/picker
|
|||||||
|
|
||||||
// #region Props & Emits
|
// #region Props & Emits
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
data: TreatmentReportFormData
|
data: ActionReportFormData
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
import { addWeeks, formatISO } from 'date-fns'
|
import { addWeeks, formatISO } from 'date-fns'
|
||||||
|
|
||||||
export type TreatmentReportData = {
|
export type ActionReportData = {
|
||||||
id: number
|
id: number
|
||||||
reportAt: string
|
reportAt: string
|
||||||
operationAt: string
|
operationAt: string
|
||||||
@@ -17,7 +17,7 @@ export type TreatmentReportData = {
|
|||||||
asal: string
|
asal: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export const sampleRows: TreatmentReportData[] = [
|
export const sampleRows: ActionReportData[] = [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
reportAt: formatISO(addWeeks(new Date(), -1)),
|
reportAt: formatISO(addWeeks(new Date(), -1)),
|
||||||
+6
-6
@@ -3,18 +3,18 @@ import mockData from './sample'
|
|||||||
|
|
||||||
// type
|
// type
|
||||||
import { genDoctor, type Doctor } from '~/models/doctor'
|
import { genDoctor, type Doctor } from '~/models/doctor'
|
||||||
import type { TreatmentReportFormData } from '~/schemas/treatment-report.schema'
|
import type { ActionReportFormData } from '~/schemas/action-report.schema'
|
||||||
|
|
||||||
// components
|
// components
|
||||||
import { toast } from '~/components/pub/ui/toast'
|
import { toast } from '~/components/pub/ui/toast'
|
||||||
import AppTreatmentReportEntry from '~/components/app/treatment-report/entry-form.vue'
|
import AppActionReportEntry from '~/components/app/action-report/entry-form.vue'
|
||||||
import ArrangementProcedurePicker from '~/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue'
|
import ArrangementProcedurePicker from '~/components/app/therapy-protocol/picker-dialog/arrangement-procedure/procedure-picker.vue'
|
||||||
|
|
||||||
// states
|
// states
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { mode, goBack } = useQueryCRUDMode('mode')
|
const { mode, goBack } = useQueryCRUDMode('mode')
|
||||||
const { recordId } = useQueryCRUDRecordId('record-id')
|
const { recordId } = useQueryCRUDRecordId('record-id')
|
||||||
const reportData = ref<TreatmentReportFormData>({} as unknown as TreatmentReportFormData)
|
const reportData = ref<ActionReportFormData>({} as unknown as ActionReportFormData)
|
||||||
const doctors = ref<Doctor[]>([])
|
const doctors = ref<Doctor[]>([])
|
||||||
const isLoading = ref<boolean>(false)
|
const isLoading = ref<boolean>(false)
|
||||||
|
|
||||||
@@ -40,14 +40,14 @@ onMounted(async () => {
|
|||||||
async function loadEntryForEdit(id: number | string) {
|
async function loadEntryForEdit(id: number | string) {
|
||||||
isLoading.value = true
|
isLoading.value = true
|
||||||
const result = mockData
|
const result = mockData
|
||||||
reportData.value = result as TreatmentReportFormData
|
reportData.value = result as ActionReportFormData
|
||||||
isLoading.value = false
|
isLoading.value = false
|
||||||
isDataReady.value = true
|
isDataReady.value = true
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<AppTreatmentReportEntry
|
<AppActionReportEntry
|
||||||
v-if="isDataReady"
|
v-if="isDataReady"
|
||||||
:isLoading="isLoading"
|
:isLoading="isLoading"
|
||||||
:mode="entryMode"
|
:mode="entryMode"
|
||||||
@@ -72,7 +72,7 @@ async function loadEntryForEdit(id: number | string) {
|
|||||||
sub-title="Pilih Prosedur"
|
sub-title="Pilih Prosedur"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</AppTreatmentReportEntry>
|
</AppActionReportEntry>
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
class="flex items-center justify-center p-8"
|
class="flex items-center justify-center p-8"
|
||||||
+7
-7
@@ -1,20 +1,20 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// Components
|
// Components
|
||||||
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
|
import Dialog from '~/components/pub/my-ui/modal/dialog.vue'
|
||||||
import AppTreatmentReportList from '~/components/app/treatment-report/list.vue'
|
import AppActionReportList from '~/components/app/action-report/list.vue'
|
||||||
import AppTreatmentReportListHistory from '~/components/app/treatment-report/list-history.vue'
|
import AppActionReportListHistory from '~/components/app/action-report/list-history.vue'
|
||||||
import RecordConfirmation from '~/components/pub/my-ui/confirmation/record-confirmation.vue'
|
import RecordConfirmation from '~/components/pub/my-ui/confirmation/record-confirmation.vue'
|
||||||
import { ButtonAction } from '~/components/pub/my-ui/form'
|
import { ButtonAction } from '~/components/pub/my-ui/form'
|
||||||
|
|
||||||
// config
|
// config
|
||||||
import { config } from '~/components/app/treatment-report/list.cfg'
|
import { config } from '~/components/app/action-report/list.cfg'
|
||||||
|
|
||||||
// types
|
// types
|
||||||
import { ActionEvents } from '~/components/pub/my-ui/data/types'
|
import { ActionEvents } from '~/components/pub/my-ui/data/types'
|
||||||
import type { Encounter } from '~/models/encounter'
|
import type { Encounter } from '~/models/encounter'
|
||||||
|
|
||||||
// Samples
|
// Samples
|
||||||
import { sampleRows, type TreatmentReportData } from '~/components/app/treatment-report/sample'
|
import { sampleRows, type ActionReportData } from '~/components/app/action-report/sample'
|
||||||
import sampleReport from './sample'
|
import sampleReport from './sample'
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
@@ -63,7 +63,7 @@ import {
|
|||||||
// filter + pencarian sederhana (client-side)
|
// filter + pencarian sederhana (client-side)
|
||||||
const filtered = computed(() => {
|
const filtered = computed(() => {
|
||||||
const q = search.value.trim().toLowerCase()
|
const q = search.value.trim().toLowerCase()
|
||||||
return sampleRows.filter((r: TreatmentReportData) => {
|
return sampleRows.filter((r: ActionReportData) => {
|
||||||
if (q) {
|
if (q) {
|
||||||
return r.nama.toLowerCase().includes(q) || r.noRm.toLowerCase().includes(q) || r.dokter.toLowerCase().includes(q)
|
return r.nama.toLowerCase().includes(q) || r.noRm.toLowerCase().includes(q) || r.dokter.toLowerCase().includes(q)
|
||||||
}
|
}
|
||||||
@@ -205,7 +205,7 @@ watch([recId, recAction], (newVal) => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="overflow-x-auto p-4">
|
<div class="overflow-x-auto p-4">
|
||||||
<AppTreatmentReportList
|
<AppActionReportList
|
||||||
:data="filtered"
|
:data="filtered"
|
||||||
:pagination-meta="{
|
:pagination-meta="{
|
||||||
recordCount: 2,
|
recordCount: 2,
|
||||||
@@ -230,7 +230,7 @@ watch([recId, recAction], (newVal) => {
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<AppTreatmentReportListHistory
|
<AppActionReportListHistory
|
||||||
:data="filtered"
|
:data="filtered"
|
||||||
:pagination-meta="{
|
:pagination-meta="{
|
||||||
recordCount: 2,
|
recordCount: 2,
|
||||||
+6
-6
@@ -2,11 +2,11 @@
|
|||||||
import mockData from './sample'
|
import mockData from './sample'
|
||||||
|
|
||||||
// types
|
// types
|
||||||
import { type TreatmentReportFormData } from '~/schemas/treatment-report.schema'
|
import { type ActionReportFormData } from '~/schemas/action-report.schema'
|
||||||
import { type Encounter } from '~/models/encounter'
|
import { type Encounter } from '~/models/encounter'
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import AppTreatmentReportPreview from '~/components/app/treatment-report/preview.vue'
|
import AppActionReportPreview from '~/components/app/action-report/preview.vue'
|
||||||
import type { HeaderPrep } from '~/components/pub/my-ui/data/types'
|
import type { HeaderPrep } from '~/components/pub/my-ui/data/types'
|
||||||
|
|
||||||
// #region Props & Emits
|
// #region Props & Emits
|
||||||
@@ -25,7 +25,7 @@ const props = defineProps<{
|
|||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
// #region State & Computed
|
// #region State & Computed
|
||||||
const reportData = ref<TreatmentReportFormData | null>(null)
|
const reportData = ref<ActionReportFormData | null>(null)
|
||||||
|
|
||||||
const headerPrep: HeaderPrep = {
|
const headerPrep: HeaderPrep = {
|
||||||
title: 'Detail Laporan Tindakan',
|
title: 'Detail Laporan Tindakan',
|
||||||
@@ -36,7 +36,7 @@ const headerPrep: HeaderPrep = {
|
|||||||
|
|
||||||
// #region Lifecycle Hooks
|
// #region Lifecycle Hooks
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
reportData.value = mockData as unknown as TreatmentReportFormData
|
reportData.value = mockData as unknown as ActionReportFormData
|
||||||
})
|
})
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ onMounted(async () => {
|
|||||||
// #region Utilities & event handlers
|
// #region Utilities & event handlers
|
||||||
function onEdit() {
|
function onEdit() {
|
||||||
router.push({
|
router.push({
|
||||||
name: 'treatment-report-id-edit',
|
name: 'action-report-id-edit',
|
||||||
params: { id: 100 },
|
params: { id: 100 },
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ function onBack() {}
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<AppTreatmentReportPreview
|
<AppActionReportPreview
|
||||||
v-if="reportData"
|
v-if="reportData"
|
||||||
:data="reportData"
|
:data="reportData"
|
||||||
@back="backToList"
|
@back="backToList"
|
||||||
@@ -29,7 +29,7 @@ import CpLabOrder from '~/components/content/cp-lab-order/main.vue'
|
|||||||
import Radiology from '~/components/content/radiology-order/main.vue'
|
import Radiology from '~/components/content/radiology-order/main.vue'
|
||||||
import Consultation from '~/components/content/consultation/list.vue'
|
import Consultation from '~/components/content/consultation/list.vue'
|
||||||
import Cprj from '~/components/content/cprj/entry.vue'
|
import Cprj from '~/components/content/cprj/entry.vue'
|
||||||
import TreatmentReport from '~/components/content/treatment-report/entry.vue'
|
import ActionReport from '~/components/content/action-report/entry.vue'
|
||||||
import DocUploadList from '~/components/content/document-upload/list.vue'
|
import DocUploadList from '~/components/content/document-upload/list.vue'
|
||||||
import GeneralConsentList from '~/components/content/general-consent/entry.vue'
|
import GeneralConsentList from '~/components/content/general-consent/entry.vue'
|
||||||
import ResumeList from '~/components/content/resume/list.vue'
|
import ResumeList from '~/components/content/resume/list.vue'
|
||||||
@@ -115,7 +115,7 @@ const protocolRows = [
|
|||||||
value: 'report',
|
value: 'report',
|
||||||
label: 'Laporan Tindakan',
|
label: 'Laporan Tindakan',
|
||||||
groups: ['ambulatory', 'rehabilitation', 'chemotherapy'],
|
groups: ['ambulatory', 'rehabilitation', 'chemotherapy'],
|
||||||
component: TreatmentReport,
|
component: ActionReport,
|
||||||
props: { encounter: data },
|
props: { encounter: data },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ const DocUploadListAsync = defineAsyncComponent(() => import('~/components/conte
|
|||||||
const GeneralConsentListAsync = defineAsyncComponent(() => import('~/components/content/general-consent/entry.vue'))
|
const GeneralConsentListAsync = defineAsyncComponent(() => import('~/components/content/general-consent/entry.vue'))
|
||||||
const ResumeListAsync = defineAsyncComponent(() => import('~/components/content/resume/list.vue'))
|
const ResumeListAsync = defineAsyncComponent(() => import('~/components/content/resume/list.vue'))
|
||||||
const ControlLetterListAsync = defineAsyncComponent(() => import('~/components/content/control-letter/list.vue'))
|
const ControlLetterListAsync = defineAsyncComponent(() => import('~/components/content/control-letter/list.vue'))
|
||||||
const TreatmentReportEntryAsync = defineAsyncComponent(() => import('~/components/content/treatment-report/entry.vue'))
|
const ActionReportEntryAsync = defineAsyncComponent(() => import('~/components/content/action-report/entry.vue'))
|
||||||
|
|
||||||
const defaultKeys: Record<string, any> = {
|
const defaultKeys: Record<string, any> = {
|
||||||
status: {
|
status: {
|
||||||
@@ -247,12 +247,6 @@ const defaultKeys: Record<string, any> = {
|
|||||||
classCode: ['ambulatory', 'emergency', 'inpatient'],
|
classCode: ['ambulatory', 'emergency', 'inpatient'],
|
||||||
unit: 'all',
|
unit: 'all',
|
||||||
},
|
},
|
||||||
treatmentReport: {
|
|
||||||
id: 'treatment-report',
|
|
||||||
title: 'Laporan Tindakan',
|
|
||||||
classCode: ['ambulatory', 'emergency', 'inpatient'],
|
|
||||||
unit: 'all',
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getItemsByClassCode(classCode: string, items: EncounterItem[]) {
|
export function getItemsByClassCode(classCode: string, items: EncounterItem[]) {
|
||||||
@@ -413,15 +407,14 @@ export function injectComponents(id: string | number, data: EncounterListData, m
|
|||||||
currentKeys.priceList['props'] = { encounter_id: id }
|
currentKeys.priceList['props'] = { encounter_id: id }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentKeys?.treatmentReport) {
|
if (currentKeys?.actionReport) {
|
||||||
currentKeys.treatmentReport['component'] = TreatmentReportEntryAsync
|
currentKeys.actionReport['component'] = ActionReportEntryAsync
|
||||||
currentKeys.treatmentReport['props'] = {
|
currentKeys.actionReport['props'] = {
|
||||||
encounter: data?.encounter,
|
encounter: data?.encounter,
|
||||||
type: 'treatment-report',
|
type: 'action-report',
|
||||||
label: currentKeys.treatmentReport['title'],
|
label: currentKeys.actionReport['title'],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return currentKeys
|
return currentKeys
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ const TissueNoteSchema = z.object({
|
|||||||
.optional(),
|
.optional(),
|
||||||
})
|
})
|
||||||
|
|
||||||
export const TreatmentReportSchema = z.object({
|
export const ActionReportSchema = z.object({
|
||||||
operatorTeam: OperatorTeamSchema,
|
operatorTeam: OperatorTeamSchema,
|
||||||
procedures: z.array(ProcedureSchema).min(1, { message: 'Silahkan pilih prosedur' }),
|
procedures: z.array(ProcedureSchema).min(1, { message: 'Silahkan pilih prosedur' }),
|
||||||
|
|
||||||
@@ -118,4 +118,4 @@ export const TreatmentReportSchema = z.object({
|
|||||||
tissueNotes: z.array(TissueNoteSchema).optional(),
|
tissueNotes: z.array(TissueNoteSchema).optional(),
|
||||||
})
|
})
|
||||||
|
|
||||||
export type TreatmentReportFormData = z.infer<typeof TreatmentReportSchema>
|
export type ActionReportFormData = z.infer<typeof ActionReportSchema>
|
||||||
Reference in New Issue
Block a user