feat: tindakan dokter create validation for admin

This commit is contained in:
yosaphatprs 2025-11-26 11:29:27 +07:00
parent 0487f50c53
commit ed5ec161a0
3 changed files with 45 additions and 8 deletions

View File

@ -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);

View File

@ -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],

View File

@ -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(),