From cf4f5574d3cbe2d5af30aa55744c9c94e733b9de Mon Sep 17 00:00:00 2001 From: Abizrh Date: Wed, 19 Nov 2025 23:46:21 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat=20(generate-file):=20add=20gen?= =?UTF-8?q?erate=20file=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/general-consent/form.vue | 32 +++++++++++++++---- app/handlers/general-consent.handler.ts | 24 ++++++++++++++ app/models/general-consent.ts | 3 +- app/schemas/_generate-file.ts | 5 +++ app/schemas/general-consent.schema.ts | 5 +-- app/services/generate-file.service.ts | 15 +++++++++ 6 files changed, 74 insertions(+), 10 deletions(-) create mode 100644 app/handlers/general-consent.handler.ts create mode 100644 app/schemas/_generate-file.ts create mode 100644 app/services/generate-file.service.ts diff --git a/app/components/content/general-consent/form.vue b/app/components/content/general-consent/form.vue index 889e5799..d9b67fec 100644 --- a/app/components/content/general-consent/form.vue +++ b/app/components/content/general-consent/form.vue @@ -4,9 +4,10 @@ import Entry from '~/components/app/general-consent/entry.vue' import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su-pr.vue' import ActionDialog from '~/components/pub/my-ui/nav-footer/ba-su.vue' import Dialog from '~/components/pub/my-ui/modal/dialog.vue' -import { FunctionSoapiSchema } from '~/schemas/soapi.schema' +import { GeneralConsentSchema } from '~/schemas/general-consent.schema' import { toast } from '~/components/pub/ui/toast' -import { handleActionSave, handleActionEdit } from '~/handlers/soapi-early.handler' +import { handleActionSave, handleActionEdit } from '~/handlers/general-consent.handler' +import { create } from '~/services/generate-file.service' const { backToList } = useQueryMode('mode') const route = useRoute() @@ -19,14 +20,15 @@ const fungsional = ref([]) const selectedProcedure = ref(null) const selectedDiagnose = ref(null) const selectedFungsional = ref(null) -const schema = FunctionSoapiSchema +const schema = GeneralConsentSchema const payload = ref({ encounter_id: 0, value: '', }) const model = ref({ relatives: [], - responsible: '', + responsibleName: '', + responsiblePhone: '', informant: '', witness1: '', witness2: '', @@ -81,16 +83,32 @@ async function actionHandler(type: string) { } const result = await entryGeneralConsent.value?.validate() if (result?.valid) { - console.log('data', result.data) - handleActionSave( + if (result.data.relatives.length > 0) { + result.data.relatives = result.data.relatives.map((item: any) => { + return item.name + }) + } + + console.log('data', result) + const resp = await handleActionSave( { ...payload.value, value: JSON.stringify(result.data), encounter_id: +route.params.id, }, - {}, + () => {}, + () => {}, toast, ) + const data = resp.body?.data + if (data) { + const resp2 = await create({ + entityType_code: 'encounter', + ref_id: +data?.id, + type_code: 'general-consent', + }) + console.log('resp2', resp2.body?.data) + } } else { console.log('Ada error di form', result) } diff --git a/app/handlers/general-consent.handler.ts b/app/handlers/general-consent.handler.ts new file mode 100644 index 00000000..2f949f3f --- /dev/null +++ b/app/handlers/general-consent.handler.ts @@ -0,0 +1,24 @@ +// Handlers +import { genCrudHandler } from '~/handlers/_handler' + +// Services +import { create, update, remove } from '~/services/general-consent.service' + +export const { + recId, + recAction, + recItem, + isReadonly, + isProcessing, + isFormEntryDialogOpen, + isRecordConfirmationOpen, + onResetState, + handleActionSave, + handleActionEdit, + handleActionRemove, + handleCancelForm, +} = genCrudHandler({ + create, + update, + remove, +}) diff --git a/app/models/general-consent.ts b/app/models/general-consent.ts index 643230ef..fe3ac97a 100644 --- a/app/models/general-consent.ts +++ b/app/models/general-consent.ts @@ -6,7 +6,8 @@ export interface GeneralConsent { export interface ValueCreateDto { relatives: string[] - responsible: string + responsibleName: string + responsiblePhone: string informant: string witness1: string witness2: string diff --git a/app/schemas/_generate-file.ts b/app/schemas/_generate-file.ts new file mode 100644 index 00000000..0e0b05fc --- /dev/null +++ b/app/schemas/_generate-file.ts @@ -0,0 +1,5 @@ +export interface GenerateFile { + entityType_code: string + ref_id: number + type_code: string +} diff --git a/app/schemas/general-consent.schema.ts b/app/schemas/general-consent.schema.ts index 43014fa0..e06c7240 100644 --- a/app/schemas/general-consent.schema.ts +++ b/app/schemas/general-consent.schema.ts @@ -2,8 +2,9 @@ import { z } from 'zod' import type { CreateDto } from '~/models/general-consent' const GeneralConsentSchema = z.object({ - relatives: z.string().optional(), - responsible_doctor: z.string().optional(), + relatives: z.array(z.object({ name: z.string(), phone: z.string() })), + responsibleName: z.string().optional(), + responsiblePhone: z.string().optional(), informant: z.string().optional(), witness1: z.string().optional(), witness2: z.string().optional(), diff --git a/app/services/generate-file.service.ts b/app/services/generate-file.service.ts new file mode 100644 index 00000000..5849e3d0 --- /dev/null +++ b/app/services/generate-file.service.ts @@ -0,0 +1,15 @@ +import * as base from './_crud-base' + +const path = '/api/v1/generate-file' + +export function create(data: any) { + return base.create(path, data) +} + +export function getList(params: any = null) { + return base.getList(path, params) +} + +export function getDetail(id: number | string) { + return base.getDetail(path, id) +}