diff --git a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts index a3b50bc..0591597 100644 --- a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts +++ b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts @@ -136,6 +136,37 @@ export class TindakanDokterService { return response; } + async createTindakanDokterToDBAndBlockchain( + dto: CreateTindakanDokterDto, + userId: number, + ) { + try { + const newTindakan = await this.prisma.$transaction(async (tx) => { + const createdTindakan = await tx.pemberian_tindakan.create({ + data: dto, + }); + const logPayload = JSON.stringify(dto); + const payloadHash = sha256(logPayload); + const data = { + id: `TINDAKAN_${createdTindakan.id}`, + event: 'tindakan_dokter_created', + user_id: userId.toString(), + payload: payloadHash, + }; + + const createdLog = await this.logService.storeLog(data); + return { + ...createdTindakan, + log: createdLog, + }; + }); + return newTindakan; + } catch (error) { + console.error('Error creating Rekam Medis:', error); + throw error; + } + } + async getTindakanDokterById(id: number) { const tindakanId = Number(id); diff --git a/backend/api/src/modules/validation/validation.module.ts b/backend/api/src/modules/validation/validation.module.ts index cdb3d24..aba7e98 100644 --- a/backend/api/src/modules/validation/validation.module.ts +++ b/backend/api/src/modules/validation/validation.module.ts @@ -4,9 +4,10 @@ import { ValidationService } from './validation.service'; import { PrismaModule } from '../prisma/prisma.module'; import { LogModule } from '../log/log.module'; import { RekamMedisModule } from '../rekammedis/rekammedis.module'; +import { TindakanDokterModule } from '../tindakandokter/tindakandokter.module'; @Module({ - imports: [PrismaModule, LogModule, RekamMedisModule], + imports: [PrismaModule, LogModule, RekamMedisModule, TindakanDokterModule], controllers: [ValidationController], providers: [ValidationService], exports: [ValidationService], diff --git a/backend/api/src/modules/validation/validation.service.ts b/backend/api/src/modules/validation/validation.service.ts index 033ca28..de8cf01 100644 --- a/backend/api/src/modules/validation/validation.service.ts +++ b/backend/api/src/modules/validation/validation.service.ts @@ -3,12 +3,14 @@ import { PrismaService } from '../prisma/prisma.service'; import { ActiveUserPayload } from '../auth/decorator/current-user.decorator'; import { RekammedisService } from '../rekammedis/rekammedis.service'; import { CreateRekamMedisDto } from '../rekammedis/dto/create-rekammedis.dto'; +import { TindakanDokterService } from '../tindakandokter/tindakandokter.service'; @Injectable() export class ValidationService { constructor( private prisma: PrismaService, private rekamMedisService: RekammedisService, + private tindakanDokterService: TindakanDokterService, ) {} private handlers: Record< @@ -50,12 +52,15 @@ export class ValidationService { 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, - // }, - // }); + const result = + await this.tindakanDokterService.createTindakanDokterToDBAndBlockchain( + payload, + Number(queue.user_id_request), + ); + return { + ...result, + id: result.id, + }; }, }, pemberian_obat: {}, @@ -157,7 +162,7 @@ export class ValidationService { const updated = await this.prisma.validation_queue.update({ where: { id: validationQueue.id }, data: { - record_id: approvalResult.id, + record_id: approvalResult.id.toString(), status: 'APPROVED', user_id_process: Number(user.sub), processed_at: new Date(),