diff --git a/backend/api/src/modules/audit/audit.controller.spec.ts b/backend/api/src/modules/audit/audit.controller.spec.ts index 861ce03..2689d2e 100644 --- a/backend/api/src/modules/audit/audit.controller.spec.ts +++ b/backend/api/src/modules/audit/audit.controller.spec.ts @@ -204,7 +204,7 @@ describe('AuditController', () => { const result = controller.createAuditTrail(); expect(result).toEqual({ - message: 'Proses audit trail dijalankan', + message: 'Audit trail process started', status: 'STARTED', }); expect(mockAuditService.storeAuditTrail).toHaveBeenCalled(); diff --git a/backend/api/src/modules/audit/audit.controller.ts b/backend/api/src/modules/audit/audit.controller.ts index 53977e4..8bec19c 100644 --- a/backend/api/src/modules/audit/audit.controller.ts +++ b/backend/api/src/modules/audit/audit.controller.ts @@ -41,6 +41,6 @@ export class AuditController { @UseGuards(AuthGuard) createAuditTrail() { this.auditService.storeAuditTrail(); - return { message: 'Proses audit trail dijalankan', status: 'STARTED' }; + return { message: 'Audit trail process started', status: 'STARTED' }; } } diff --git a/backend/api/src/modules/auth/auth.controller.spec.ts b/backend/api/src/modules/auth/auth.controller.spec.ts index 30e9d12..2ac157f 100644 --- a/backend/api/src/modules/auth/auth.controller.spec.ts +++ b/backend/api/src/modules/auth/auth.controller.spec.ts @@ -178,7 +178,7 @@ describe('AuthController', () => { const result = controller.logout(mockResponse as any); - expect(result).toEqual({ message: 'Logout berhasil' }); + expect(result).toEqual({ message: 'Logout successful' }); expect(mockResponse.clearCookie).toHaveBeenCalledWith('access_token', { httpOnly: true, secure: false, @@ -195,7 +195,7 @@ describe('AuthController', () => { const result = controller.logout(mockResponse as any); - expect(result).toEqual({ message: 'Logout berhasil' }); + expect(result).toEqual({ message: 'Logout successful' }); expect(mockResponse.clearCookie).toHaveBeenCalledWith('access_token', { httpOnly: true, secure: true, diff --git a/backend/api/src/modules/auth/auth.controller.ts b/backend/api/src/modules/auth/auth.controller.ts index 72b2948..514c434 100644 --- a/backend/api/src/modules/auth/auth.controller.ts +++ b/backend/api/src/modules/auth/auth.controller.ts @@ -63,6 +63,6 @@ export class AuthController { sameSite: 'strict', }); - return { message: 'Logout berhasil' }; + return { message: 'Logout successful' }; } } diff --git a/backend/api/src/modules/auth/auth.service.ts b/backend/api/src/modules/auth/auth.service.ts index 377a09b..19f4796 100644 --- a/backend/api/src/modules/auth/auth.service.ts +++ b/backend/api/src/modules/auth/auth.service.ts @@ -73,7 +73,7 @@ export class AuthService { }); if (!user || !(await bcrypt.compare(password, user.password_hash))) { - throw new UnauthorizedException('Username atau password salah'); + throw new UnauthorizedException('Wrong username or password'); } const csrfToken = crypto.randomBytes(32).toString('hex'); diff --git a/backend/api/src/modules/auth/dto/auth.dto.ts b/backend/api/src/modules/auth/dto/auth.dto.ts index bc29e51..a54deac 100644 --- a/backend/api/src/modules/auth/dto/auth.dto.ts +++ b/backend/api/src/modules/auth/dto/auth.dto.ts @@ -7,13 +7,13 @@ export enum UserRole { } export class AuthDto { - @IsNotEmpty({ message: 'Username wajib diisi' }) - @IsString({ message: 'Username harus berupa string' }) - @Length(1, 100, { message: 'Username maksimal 100 karakter' }) + @IsNotEmpty({ message: 'Username is required' }) + @IsString({ message: 'Username must be a string' }) + @Length(1, 100, { message: 'Username must be at most 100 characters' }) username: string; - @IsNotEmpty({ message: 'Password wajib diisi' }) - @IsString({ message: 'Password harus berupa string' }) - @Length(6, undefined, { message: 'Password minimal 6 karakter' }) + @IsNotEmpty({ message: 'Password is required' }) + @IsString({ message: 'Password must be a string' }) + @Length(6, undefined, { message: 'Password must be at least 6 characters' }) password: string; } diff --git a/backend/api/src/modules/auth/dto/create-user.dto.ts b/backend/api/src/modules/auth/dto/create-user.dto.ts index 2ea6edc..5807ea3 100644 --- a/backend/api/src/modules/auth/dto/create-user.dto.ts +++ b/backend/api/src/modules/auth/dto/create-user.dto.ts @@ -9,26 +9,26 @@ import { Expose, Transform } from 'class-transformer'; import { UserRole } from './auth.dto'; export class CreateUserDto { - @IsNotEmpty({ message: 'Nama lengkap wajib diisi' }) - @IsString({ message: 'Nama lengkap harus berupa string' }) - @Length(1, 255, { message: 'Nama lengkap maksimal 255 karakter' }) + @IsNotEmpty({ message: 'Full name is required' }) + @IsString({ message: 'Full name must be a string' }) + @Length(1, 255, { message: 'Full name must be at most 255 characters' }) nama_lengkap: string; - @IsNotEmpty({ message: 'Username wajib diisi' }) - @IsString({ message: 'Username harus berupa string' }) - @Length(1, 100, { message: 'Username maksimal 100 karakter' }) + @IsNotEmpty({ message: 'Username is required' }) + @IsString({ message: 'Username must be a string' }) + @Length(1, 100, { message: 'Username must be at most 100 characters' }) username: string; - @IsNotEmpty({ message: 'Password wajib diisi' }) - @IsString({ message: 'Password harus berupa string' }) + @IsNotEmpty({ message: 'Password is required' }) + @IsString({ message: 'Password must be a string' }) @Length(6, 100, { - message: 'Password minimal 6 karakter dan maksimal 100 karakter', + message: 'Password must be between 6 and 100 characters', }) password: string; @IsOptional() - @IsString({ message: 'Role harus berupa string' }) - @IsEnum(UserRole, { message: 'Role harus "admin" atau "user"' }) + @IsString({ message: 'Role must be a string' }) + @IsEnum(UserRole, { message: 'Role must be "admin" or "user"' }) role?: UserRole; } diff --git a/backend/api/src/modules/fabric/fabric.service.spec.ts b/backend/api/src/modules/fabric/fabric.service.spec.ts index e9d6873..090cdf2 100644 --- a/backend/api/src/modules/fabric/fabric.service.spec.ts +++ b/backend/api/src/modules/fabric/fabric.service.spec.ts @@ -184,7 +184,7 @@ describe('FabricService', () => { await expect( service.storeLog('log-1', 'CREATE', 'user-1', '{}'), - ).rejects.toThrow('Gagal menyimpan log ke blockchain'); + ).rejects.toThrow('Failed to store log to blockchain'); }); it('should not validate empty id (NO VALIDATION)', async () => { @@ -273,7 +273,7 @@ describe('FabricService', () => { ); await expect(service.getLogById('non-existent')).rejects.toThrow( - 'Gagal mengambil log dari blockchain', + 'Failed to retrieve log from blockchain', ); }); @@ -325,7 +325,7 @@ describe('FabricService', () => { ); await expect(service.getAllLogs()).rejects.toThrow( - 'Gagal mengambil semua log dari blockchain', + 'Failed to retrieve all logs from blockchain', ); }); }); @@ -370,7 +370,7 @@ describe('FabricService', () => { ); await expect(service.getLogsWithPagination(10, '')).rejects.toThrow( - 'Gagal mengambil log dengan paginasi dari blockchain', + 'Failed to retrieve logs with pagination from blockchain', ); }); diff --git a/backend/api/src/modules/fabric/fabric.service.ts b/backend/api/src/modules/fabric/fabric.service.ts index 4057651..c80d992 100644 --- a/backend/api/src/modules/fabric/fabric.service.ts +++ b/backend/api/src/modules/fabric/fabric.service.ts @@ -65,7 +65,7 @@ export class FabricService implements OnModuleInit, OnApplicationShutdown { const message = error instanceof Error ? error.message : 'Unknown error'; this.logger.error(`Failed to store log: ${message}`); throw new InternalServerErrorException( - 'Gagal menyimpan log ke blockchain', + 'Failed to store log to blockchain', ); } } @@ -78,7 +78,7 @@ export class FabricService implements OnModuleInit, OnApplicationShutdown { const message = error instanceof Error ? error.message : 'Unknown error'; this.logger.error(`Failed to get log by ID: ${message}`); throw new InternalServerErrorException( - 'Gagal mengambil log dari blockchain', + 'Failed to retrieve log from blockchain', ); } } @@ -91,7 +91,7 @@ export class FabricService implements OnModuleInit, OnApplicationShutdown { const message = error instanceof Error ? error.message : 'Unknown error'; this.logger.error(`Failed to get all logs: ${message}`); throw new InternalServerErrorException( - 'Gagal mengambil semua log dari blockchain', + 'Failed to retrieve all logs from blockchain', ); } } @@ -106,7 +106,7 @@ export class FabricService implements OnModuleInit, OnApplicationShutdown { const message = error instanceof Error ? error.message : 'Unknown error'; this.logger.error(`Failed to get logs with pagination: ${message}`); throw new InternalServerErrorException( - 'Gagal mengambil log dengan paginasi dari blockchain', + 'Failed to retrieve logs with pagination from blockchain', ); } } diff --git a/backend/api/src/modules/log/dto/store-log.dto.ts b/backend/api/src/modules/log/dto/store-log.dto.ts index 351b5a1..c0fb63a 100644 --- a/backend/api/src/modules/log/dto/store-log.dto.ts +++ b/backend/api/src/modules/log/dto/store-log.dto.ts @@ -1,12 +1,12 @@ import { IsString, IsNotEmpty, Length, IsEnum } from 'class-validator'; export class StoreLogDto { - @IsNotEmpty({ message: 'ID wajib diisi' }) - @IsString({ message: 'ID harus berupa string' }) + @IsNotEmpty({ message: 'ID is required' }) + @IsString({ message: 'ID must be a string' }) id: string; - @IsNotEmpty({ message: 'Event wajib diisi' }) - @IsString({ message: 'Event harus berupa string' }) + @IsNotEmpty({ message: 'Event is required' }) + @IsString({ message: 'Event must be a string' }) @IsEnum( [ 'tindakan_dokter_created', @@ -20,17 +20,17 @@ export class StoreLogDto { 'rekam_medis_deleted', ], { - message: 'Event tidak valid', + message: 'Invalid event', }, ) - @Length(1, 100, { message: 'Event maksimal 100 karakter' }) + @Length(1, 100, { message: 'Event must be at most 100 characters' }) event: string; - @IsNotEmpty({ message: 'User ID wajib diisi' }) - @IsString({ message: 'User ID harus berupa string' }) + @IsNotEmpty({ message: 'User ID is required' }) + @IsString({ message: 'User ID must be a string' }) user_id: string; - @IsNotEmpty({ message: 'Payload wajib diisi' }) - @IsString({ message: 'Payload harus berupa string' }) + @IsNotEmpty({ message: 'Payload is required' }) + @IsString({ message: 'Payload must be a string' }) payload: string; } diff --git a/backend/api/src/modules/obat/obat.service.ts b/backend/api/src/modules/obat/obat.service.ts index 6cd48cc..411787b 100644 --- a/backend/api/src/modules/obat/obat.service.ts +++ b/backend/api/src/modules/obat/obat.service.ts @@ -134,7 +134,7 @@ export class ObatService { async createObat(dto: CreateObatDto, user: ActiveUserPayload) { if (!(await this.isIdVisitExists(dto.id_visit))) { - throw new BadRequestException(`ID Visit ${dto.id_visit} tidak ditemukan`); + throw new BadRequestException(`Visit ID ${dto.id_visit} not found`); } try { @@ -157,7 +157,7 @@ export class ObatService { async createObatToDBAndBlockchain(dto: CreateObatDto, userId: number) { if (!(await this.isIdVisitExists(dto.id_visit))) { - throw new BadRequestException(`Visit with id ${dto.id_visit} not found`); + throw new BadRequestException(`Visit id ${dto.id_visit} not found`); } try { @@ -200,11 +200,11 @@ export class ObatService { const obatId = Number(id); if (isNaN(obatId)) { - throw new BadRequestException('ID obat tidak valid'); + throw new BadRequestException('ID medicine not valid'); } if (!(await this.getObatById(obatId))) { - throw new BadRequestException(`Obat with id ${obatId} not found`); + throw new BadRequestException(`Medicine with id ${obatId} not found`); } try { @@ -244,15 +244,13 @@ export class ObatService { const obatId = Number(id); if (isNaN(obatId)) { - throw new BadRequestException('ID obat tidak valid'); + throw new BadRequestException('Medicine ID not valid'); } const existingObat = await this.getObatById(obatId); if (!existingObat) { - throw new BadRequestException( - `Pemberian obat dengan ID ${obatId} tidak ditemukan`, - ); + throw new BadRequestException(`Medicine with ID ${obatId} not found`); } const hasUpdates = @@ -261,7 +259,7 @@ export class ObatService { dto.aturan_pakai !== existingObat.aturan_pakai; if (!hasUpdates) { - throw new BadRequestException('Tidak ada perubahan data obat'); + throw new BadRequestException('No changes in medicine data detected'); } try { @@ -325,12 +323,12 @@ export class ObatService { const obatId = Number(id); if (isNaN(obatId)) { - throw new BadRequestException('ID obat tidak valid'); + throw new BadRequestException('Medicine ID not valid'); } const existingObat = await this.getObatById(obatId); if (!existingObat) { - throw new BadRequestException(`Obat dengan ID ${obatId} tidak ditemukan`); + throw new BadRequestException(`Medicine with ID ${obatId} not found`); } try { diff --git a/backend/api/src/modules/rekammedis/dto/create-rekammedis.dto.ts b/backend/api/src/modules/rekammedis/dto/create-rekammedis.dto.ts index 12d680a..6823141 100644 --- a/backend/api/src/modules/rekammedis/dto/create-rekammedis.dto.ts +++ b/backend/api/src/modules/rekammedis/dto/create-rekammedis.dto.ts @@ -14,27 +14,29 @@ import { import { Transform } from 'class-transformer'; export class CreateRekamMedisDto { - @IsNotEmpty({ message: 'Nomor rekam medis (no_rm) wajib diisi' }) + @IsNotEmpty({ message: 'Medical record number (no_rm) is required' }) @IsString() - @Length(1, 20, { message: 'Nomor rekam medis maksimal 20 karakter' }) + @Length(1, 20, { + message: 'Medical record number must be at most 20 characters', + }) no_rm: string; - @IsNotEmpty({ message: 'Nama pasien wajib diisi' }) + @IsNotEmpty({ message: 'Patient name is required' }) @IsString() - @Length(1, 100, { message: 'Nama pasien maksimal 100 karakter' }) + @Length(1, 100, { message: 'Patient name must be at most 100 characters' }) nama_pasien: string; @IsOptional() - @IsInt({ message: 'Umur harus berupa angka bulat' }) - @Min(0, { message: 'Umur tidak boleh negatif' }) - @Max(150, { message: 'Umur tidak valid' }) + @IsInt({ message: 'Age must be an integer' }) + @Min(0, { message: 'Age cannot be negative' }) + @Max(150, { message: 'Age is not valid' }) @Transform(({ value }) => (value ? parseInt(value) : null)) umur?: number; @IsOptional() @IsString() @IsIn(['L', 'P', 'l', 'p'], { - message: 'Jenis kelamin harus "L" (Laki-laki) atau "P" (Perempuan)', + message: 'Gender must be "L" (Male) or "P" (Female)', }) @Transform(({ value }) => value?.toUpperCase()) jenis_kelamin?: string; @@ -42,7 +44,7 @@ export class CreateRekamMedisDto { @IsOptional() @IsString() @IsIn(['A', 'B', 'AB', 'O', '-'], { - message: 'Golongan darah harus A, B, AB, O, atau -', + message: 'Blood type must be A, B, AB, O, or -', }) @Length(1, 2) gol_darah?: string; @@ -70,37 +72,37 @@ export class CreateRekamMedisDto { anamnese?: string; @IsOptional() - @IsInt({ message: 'Tekanan darah sistolik harus berupa angka bulat' }) + @IsInt({ message: 'Systolic blood pressure must be an integer' }) @Transform(({ value }) => (value ? parseInt(value) : null)) sistolik?: number; @IsOptional() - @IsInt({ message: 'Tekanan darah diastolik harus berupa angka bulat' }) + @IsInt({ message: 'Diastolic blood pressure must be an integer' }) @Transform(({ value }) => (value ? parseInt(value) : null)) diastolik?: number; @IsOptional() - @IsInt({ message: 'Nadi harus berupa angka bulat' }) + @IsInt({ message: 'Pulse must be an integer' }) @Transform(({ value }) => (value ? parseInt(value) : null)) nadi?: number; @IsOptional() - @IsNumber({}, { message: 'Suhu harus berupa angka' }) + @IsNumber({}, { message: 'Temperature must be a number' }) @Transform(({ value }) => (value ? parseFloat(value) : null)) suhu?: number; @IsOptional() - @IsInt({ message: 'Pernapasan harus berupa angka bulat' }) + @IsInt({ message: 'Respiration must be an integer' }) @Transform(({ value }) => (value ? parseInt(value) : null)) nafas?: number; @IsOptional() - @IsNumber({}, { message: 'Tinggi badan harus berupa angka' }) + @IsNumber({}, { message: 'Height must be a number' }) @Transform(({ value }) => (value ? parseFloat(value) : null)) tinggi_badan?: number; @IsOptional() - @IsNumber({}, { message: 'Berat badan harus berupa angka' }) + @IsNumber({}, { message: 'Weight must be a number' }) @Transform(({ value }) => (value ? parseFloat(value) : null)) berat_badan?: number; @@ -114,6 +116,6 @@ export class CreateRekamMedisDto { tindak_lanjut?: string; @IsOptional() - @IsDateString({}, { message: 'Waktu visit harus berupa tanggal yang valid' }) + @IsDateString({}, { message: 'Visit time must be a valid date' }) waktu_visit?: string; } diff --git a/backend/api/src/modules/rekammedis/dto/payload-rekammedis.dto.ts b/backend/api/src/modules/rekammedis/dto/payload-rekammedis.dto.ts index 81e5d8d..1ed50e2 100644 --- a/backend/api/src/modules/rekammedis/dto/payload-rekammedis.dto.ts +++ b/backend/api/src/modules/rekammedis/dto/payload-rekammedis.dto.ts @@ -1,18 +1,18 @@ import { IsEnum, IsNumber, IsString } from 'class-validator'; export class PayloadRekamMedisDto { - @IsNumber({}, { message: 'ID dokter harus berupa angka' }) + @IsNumber({}, { message: 'Doctor ID must be a number' }) dokter_id: number; - @IsString({ message: 'ID kunjungan harus berupa string' }) + @IsString({ message: 'Visit ID must be a string' }) visit_id: string; - @IsEnum({}, { message: 'Anamnese harus berupa enum' }) + @IsEnum({}, { message: 'Anamnese must be an enum' }) anamnese: string; - @IsEnum({}, { message: 'Jenis kasus harus berupa enum' }) + @IsEnum({}, { message: 'Case type must be an enum' }) jenis_kasus: string; - @IsEnum({}, { message: 'Tindak lanjut harus berupa enum' }) + @IsEnum({}, { message: 'Follow-up must be an enum' }) tindak_lanjut: string; } diff --git a/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts b/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts index f308829..d34393d 100644 --- a/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts +++ b/backend/api/src/modules/tindakandokter/tindakandokter.controller.ts @@ -43,6 +43,7 @@ export class TindakanDokterController { skip, page, orderBy: orderBy ? { [orderBy]: order || 'asc' } : undefined, + order, }); } diff --git a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts index b17c59f..fdb834b 100644 --- a/backend/api/src/modules/tindakandokter/tindakandokter.service.ts +++ b/backend/api/src/modules/tindakandokter/tindakandokter.service.ts @@ -125,7 +125,7 @@ export class TindakanDokterService { }); if (!visitExists) { - throw new BadRequestException(`ID Visit ${dto.id_visit} tidak ditemukan`); + throw new BadRequestException(`Visit ID ${dto.id_visit} not found`); } const response = await this.prisma.validation_queue.create({ @@ -172,7 +172,7 @@ export class TindakanDokterService { }); return newTindakan; } catch (error) { - console.error('Error creating Rekam Medis:', error); + console.error('Error creating Doctor Action:', error); throw error; } } @@ -181,7 +181,7 @@ export class TindakanDokterService { const tindakanId = Number(id); if (Number.isNaN(tindakanId)) { - throw new BadRequestException('ID tindakan tidak valid'); + throw new BadRequestException('Invalid action ID'); } return this.prisma.pemberian_tindakan.findUnique({ @@ -197,15 +197,13 @@ export class TindakanDokterService { const tindakanId = Number(id); if (Number.isNaN(tindakanId)) { - throw new BadRequestException('ID tindakan tidak valid'); + throw new BadRequestException('Invalid doctor action ID'); } const existing = await this.getTindakanDokterById(tindakanId); if (!existing) { - throw new BadRequestException( - `Tindakan dokter dengan ID ${id} tidak ditemukan`, - ); + throw new BadRequestException(`Doctor Action with ID ${id} not found`); } const hasUpdates = @@ -215,7 +213,7 @@ export class TindakanDokterService { dto.kelompok_tindakan !== existing.kelompok_tindakan; if (!hasUpdates) { - throw new BadRequestException('Tidak ada data tindakan yang diubah'); + throw new BadRequestException("Doctor action data hasn't been changed"); } if (dto.id_visit) { @@ -224,9 +222,7 @@ export class TindakanDokterService { }); if (!visitExists) { - throw new BadRequestException( - `ID Visit ${dto.id_visit} tidak ditemukan`, - ); + throw new BadRequestException(`Visit ID ${dto.id_visit} not found`); } } @@ -276,7 +272,7 @@ export class TindakanDokterService { }); return updatedTindakan; } catch (error) { - console.error('Error updating Tindakan Dokter:', error); + console.error('Error updating Doctor Action:', error); throw error; } } @@ -285,7 +281,7 @@ export class TindakanDokterService { const tindakanId = parseInt(id, 10); if (Number.isNaN(tindakanId)) { - throw new BadRequestException('ID tindakan tidak valid'); + throw new BadRequestException('Invalid action ID'); } const currentData = await this.prisma.pemberian_tindakan.findUnique({ @@ -293,9 +289,7 @@ export class TindakanDokterService { }); if (!currentData) { - throw new BadRequestException( - `Tindakan dokter dengan ID ${id} tidak ditemukan`, - ); + throw new BadRequestException(`Doctor action with ID ${id} not found`); } const idLog = `TINDAKAN_${id}`; @@ -330,15 +324,13 @@ export class TindakanDokterService { const tindakanId = Number(id); if (Number.isNaN(tindakanId)) { - throw new BadRequestException('ID tindakan tidak valid'); + throw new BadRequestException('Invalid action ID'); } const existingTindakan = await this.getTindakanDokterById(tindakanId); if (!existingTindakan) { - throw new BadRequestException( - `Tindakan dokter dengan ID ${id} tidak ditemukan`, - ); + throw new BadRequestException(`Doctor action with ID ${id} not found`); } try { @@ -368,7 +360,7 @@ export class TindakanDokterService { return validationQueue; } catch (error) { - console.error('Error deleting Tindakan Dokter:', error); + console.error('Error deleting Doctor Action:', error); throw error; } } @@ -376,14 +368,14 @@ export class TindakanDokterService { async deleteTindakanDokterFromDBAndBlockchain(id: number, userId: number) { const tindakanId = Number(id); if (Number.isNaN(tindakanId)) { - throw new BadRequestException('ID tindakan tidak valid'); + throw new BadRequestException('Invalid action ID'); } const existingTindakan = await this.getTindakanDokterById(tindakanId); if (!existingTindakan) { throw new BadRequestException( - `Tindakan dokter dengan ID ${tindakanId} tidak ditemukan`, + `Doctor action with ID ${tindakanId} not found`, ); } @@ -410,7 +402,7 @@ export class TindakanDokterService { }); return deletedTindakan; } catch (error) { - console.error('Error deleting Tindakan Dokter:', error); + console.error('Error deleting Doctor Action:', error); throw error; } } diff --git a/frontend/hospital-log/src/components/dashboard/DataTable.vue b/frontend/hospital-log/src/components/dashboard/DataTable.vue index 5d12564..9e8c379 100644 --- a/frontend/hospital-log/src/components/dashboard/DataTable.vue +++ b/frontend/hospital-log/src/components/dashboard/DataTable.vue @@ -81,7 +81,7 @@ const handleDeleteCancel = () => { > {{ column.label }} -
{{ emptyMessage || "Tidak ada data" }}
+{{ emptyMessage || "No data available" }}
@@ -196,7 +196,7 @@ const handleDeleteCancel = () => { ? 'tooltip tooltip-right flex items-center justify-center' : '', ]" - data-tip="Data ini sedang dalam proses validasi untuk dihapus" + data-tip="This data is currently undergoing validation for deletion" > diff --git a/frontend/hospital-log/src/components/dashboard/PageHeader.vue b/frontend/hospital-log/src/components/dashboard/PageHeader.vue index d7d5f8a..e8f6e00 100644 --- a/frontend/hospital-log/src/components/dashboard/PageHeader.vue +++ b/frontend/hospital-log/src/components/dashboard/PageHeader.vue @@ -12,7 +12,7 @@ const dateTime = ref(new Date()); let clockInterval: number; const formattedDate = computed(() => - dateTime.value.toLocaleDateString("id-ID", { + dateTime.value.toLocaleDateString("en-US", { day: "2-digit", month: "long", year: "numeric", diff --git a/frontend/hospital-log/src/components/dashboard/PaginationControls.vue b/frontend/hospital-log/src/components/dashboard/PaginationControls.vue index fc56b46..249251c 100644 --- a/frontend/hospital-log/src/components/dashboard/PaginationControls.vue +++ b/frontend/hospital-log/src/components/dashboard/PaginationControls.vue @@ -39,15 +39,14 @@ const handlePageChange = (page: number) => {Halaman tidak ditemukan.
+Page not found.
{{ stats.countRekamMedis }}
{{ stats.countTindakanDokter }}
{{ stats.countObat }}
{{ stats.auditNonTampered.value + stats.auditTampered.value }}
@@ -297,7 +299,7 @@ onMounted(() => { class="flex flex-col flex-2 mt-4 bg-white p-4 rounded-lg shadow-md min-w-0" >| Kelompok Data | -Tipe Aksi | -ID User | +Data Group | +Action Type | +User ID |
|---|