feat: tindakan dokter create validation for admin
This commit is contained in:
parent
0487f50c53
commit
ed5ec161a0
|
|
@ -136,6 +136,37 @@ export class TindakanDokterService {
|
||||||
return response;
|
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) {
|
async getTindakanDokterById(id: number) {
|
||||||
const tindakanId = Number(id);
|
const tindakanId = Number(id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,10 @@ import { ValidationService } from './validation.service';
|
||||||
import { PrismaModule } from '../prisma/prisma.module';
|
import { PrismaModule } from '../prisma/prisma.module';
|
||||||
import { LogModule } from '../log/log.module';
|
import { LogModule } from '../log/log.module';
|
||||||
import { RekamMedisModule } from '../rekammedis/rekammedis.module';
|
import { RekamMedisModule } from '../rekammedis/rekammedis.module';
|
||||||
|
import { TindakanDokterModule } from '../tindakandokter/tindakandokter.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [PrismaModule, LogModule, RekamMedisModule],
|
imports: [PrismaModule, LogModule, RekamMedisModule, TindakanDokterModule],
|
||||||
controllers: [ValidationController],
|
controllers: [ValidationController],
|
||||||
providers: [ValidationService],
|
providers: [ValidationService],
|
||||||
exports: [ValidationService],
|
exports: [ValidationService],
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@ import { PrismaService } from '../prisma/prisma.service';
|
||||||
import { ActiveUserPayload } from '../auth/decorator/current-user.decorator';
|
import { ActiveUserPayload } from '../auth/decorator/current-user.decorator';
|
||||||
import { RekammedisService } from '../rekammedis/rekammedis.service';
|
import { RekammedisService } from '../rekammedis/rekammedis.service';
|
||||||
import { CreateRekamMedisDto } from '../rekammedis/dto/create-rekammedis.dto';
|
import { CreateRekamMedisDto } from '../rekammedis/dto/create-rekammedis.dto';
|
||||||
|
import { TindakanDokterService } from '../tindakandokter/tindakandokter.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ValidationService {
|
export class ValidationService {
|
||||||
constructor(
|
constructor(
|
||||||
private prisma: PrismaService,
|
private prisma: PrismaService,
|
||||||
private rekamMedisService: RekammedisService,
|
private rekamMedisService: RekammedisService,
|
||||||
|
private tindakanDokterService: TindakanDokterService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
private handlers: Record<
|
private handlers: Record<
|
||||||
|
|
@ -50,12 +52,15 @@ export class ValidationService {
|
||||||
pemberian_tindakan: {
|
pemberian_tindakan: {
|
||||||
approveCreate: async (queue: any) => {
|
approveCreate: async (queue: any) => {
|
||||||
const payload = queue.dataPayload;
|
const payload = queue.dataPayload;
|
||||||
console.log('Approving create for pemberian_tindakan:', payload);
|
const result =
|
||||||
// return this.prisma.pemberian_tindakan.create({
|
await this.tindakanDokterService.createTindakanDokterToDBAndBlockchain(
|
||||||
// data: {
|
payload,
|
||||||
// ...payload,
|
Number(queue.user_id_request),
|
||||||
// },
|
);
|
||||||
// });
|
return {
|
||||||
|
...result,
|
||||||
|
id: result.id,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pemberian_obat: {},
|
pemberian_obat: {},
|
||||||
|
|
@ -157,7 +162,7 @@ export class ValidationService {
|
||||||
const updated = await this.prisma.validation_queue.update({
|
const updated = await this.prisma.validation_queue.update({
|
||||||
where: { id: validationQueue.id },
|
where: { id: validationQueue.id },
|
||||||
data: {
|
data: {
|
||||||
record_id: approvalResult.id,
|
record_id: approvalResult.id.toString(),
|
||||||
status: 'APPROVED',
|
status: 'APPROVED',
|
||||||
user_id_process: Number(user.sub),
|
user_id_process: Number(user.sub),
|
||||||
processed_at: new Date(),
|
processed_at: new Date(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user