From 0487f50c53902f1d4f4801c9728bc73d726ae70a Mon Sep 17 00:00:00 2001 From: yosaphatprs Date: Wed, 26 Nov 2025 10:27:39 +0700 Subject: [PATCH] fix: fix bug record_id not showing on validation table after approving validation --- .../tindakandokter.controller.ts | 1 - .../tindakandokter/tindakandokter.service.ts | 67 +------------------ .../modules/validation/validation.service.ts | 34 ++++++++-- 3 files changed, 28 insertions(+), 74 deletions(-) diff --git a/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts b/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts index bd6c2e0..eff4049 100644 --- a/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts +++ b/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts @@ -51,7 +51,6 @@ export class TindakanDokterController { @Body() data: CreateTindakanDokterDto, @CurrentUser() user: ActiveUserPayload, ) { - // console.log('APASIH'); return await this.tindakanDokterService.createTindakanDokter(data, user); } diff --git a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts index 26379df..a3b50bc 100644 --- a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts +++ b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts @@ -115,9 +115,7 @@ export class TindakanDokterService { }); if (!visitExists) { - throw new BadRequestException( - `Visit dengan ID ${dto.id_visit} tidak ditemukan`, - ); + throw new BadRequestException(`ID Visit ${dto.id_visit} tidak ditemukan`); } const response = await this.prisma.validation_queue.create({ @@ -135,45 +133,6 @@ export class TindakanDokterService { }, }); - // const createValidate = await this.validationService.storeQueueValidation( - // { - // table_name: 'pemberian_tindakan', - // record_id: null, - // dataPayload: { - // id_visit: dto.id_visit, - // tindakan: dto.tindakan, - // kategori_tindakan: dto.kategori_tindakan ?? null, - // kelompok_tindakan: dto.kelompok_tindakan ?? null, - // }, - // }, - // user, - // ); - - // const createdTindakan = await this.prisma.pemberian_tindakan.create({ - // data: { - // id_visit: dto.id_visit, - // tindakan: dto.tindakan, - // kategori_tindakan: dto.kategori_tindakan ?? null, - // kelompok_tindakan: dto.kelompok_tindakan ?? null, - // }, - // }); - - // const hashingPayload = this.createHashingPayload({ - // id_visit: createdTindakan.id_visit, - // tindakan: createdTindakan.tindakan, - // kategori_tindakan: createdTindakan.kategori_tindakan ?? null, - // kelompok_tindakan: createdTindakan.kelompok_tindakan ?? null, - // }); - - // const logPayloadHash = hashingPayload; - - // const logResult = await this.logService.storeLog({ - // id: `TINDAKAN_${createdTindakan.id}`, - // event: 'tindakan_dokter_created', - // user_id: user.sub, - // payload: logPayloadHash, - // }); - return response; } @@ -264,30 +223,6 @@ export class TindakanDokterService { }); return validationQueue; - - // const updatedTindakan = await this.prisma.pemberian_tindakan.update({ - // where: { id: tindakanId }, - // data: updateData, - // }); - - // const hashingPayload = this.createHashingPayload({ - // id_visit: updatedTindakan.id_visit, - // tindakan: updatedTindakan.tindakan, - // kategori_tindakan: updatedTindakan.kategori_tindakan ?? null, - // kelompok_tindakan: updatedTindakan.kelompok_tindakan ?? null, - // }); - - // const logResult = await this.logService.storeLog({ - // id: `TINDAKAN_${tindakanId}`, - // event: 'tindakan_dokter_updated', - // user_id: user.sub, - // payload: hashingPayload, - // }); - - // return { - // ...updatedTindakan, - // log: logResult, - // }; } async getTindakanLogById(id: string) { diff --git a/backend/api/src/modules/validation/validation.service.ts b/backend/api/src/modules/validation/validation.service.ts index c1e1c85..033ca28 100644 --- a/backend/api/src/modules/validation/validation.service.ts +++ b/backend/api/src/modules/validation/validation.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable } from '@nestjs/common'; import { PrismaService } from '../prisma/prisma.service'; import { ActiveUserPayload } from '../auth/decorator/current-user.decorator'; import { RekammedisService } from '../rekammedis/rekammedis.service'; @@ -22,10 +22,16 @@ export class ValidationService { rekam_medis: { approveCreate: async (queue: any) => { const payload = queue.dataPayload as Partial; - return this.rekamMedisService.createRekamMedisToDBAndBlockchain( - payload as CreateRekamMedisDto, - Number(queue.user_id_request), - ); + const result = + await this.rekamMedisService.createRekamMedisToDBAndBlockchain( + payload as CreateRekamMedisDto, + Number(queue.user_id_request), + ); + + return { + ...result, + id: result.id_visit, + }; }, approveUpdate: async (queue: any) => { const payload = queue.dataPayload as Partial; @@ -41,7 +47,17 @@ export class ValidationService { } as ActiveUserPayload); }, }, - pemberian_tindakan: {}, + pemberian_tindakan: { + approveCreate: async (queue: any) => { + const payload = queue.dataPayload; + console.log('Approving create for pemberian_tindakan:', payload); + // return this.prisma.pemberian_tindakan.create({ + // data: { + // ...payload, + // }, + // }); + }, + }, pemberian_obat: {}, }; @@ -67,12 +83,14 @@ export class ValidationService { return { data: result, totalCount }; } + // For service internal use async getValidationQueueById(id: number) { return await this.prisma.validation_queue.findUnique({ where: { id }, }); } + // For front-end detail view async getValidationQueue(id: number) { const result = await this.getValidationQueueById(id); if (!result) return null; @@ -128,16 +146,18 @@ export class ValidationService { async approveValidation(id: number, user: ActiveUserPayload) { const validationQueue = await this.getValidationQueueById(id); if (!validationQueue) { - throw new Error('Validation queue not found'); + throw new BadRequestException('Validation queue not found'); } if (!validationQueue.dataPayload) { throw new Error('Data payload is missing'); } try { const approvalResult = await this.approveWithHandler(validationQueue); + console.log('Approval result:', approvalResult); const updated = await this.prisma.validation_queue.update({ where: { id: validationQueue.id }, data: { + record_id: approvalResult.id, status: 'APPROVED', user_id_process: Number(user.sub), processed_at: new Date(),