commit f7da9c6f78cd55f85110b447aa425240e49252b4 Author: sulthan Date: Mon Jun 8 19:58:50 2026 +0700 initial commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e599283 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.github +node_modules +vendor +storage/*.key +.env +.phpunit.result.cache +Docker/Dockerfile diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1a182e8 --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ + APP_NAME=Laravel + APP_ENV=local + APP_KEY= + APP_DEBUG=true + APP_URL=http://localhost + + LOG_CHANNEL=stack + LOG_DEPRECATIONS_CHANNEL=null + LOG_LEVEL=debug + + DB_CONNECTION=pgsql + DB_HOST=127.0.0.1 + DB_PORT=5432 + DB_DATABASE=dashboard-heart-disease + DB_USERNAME=postgres + DB_PASSWORD= + + BROADCAST_DRIVER=log + CACHE_DRIVER=file + FILESYSTEM_DISK=local + QUEUE_CONNECTION=sync + SESSION_DRIVER=file + SESSION_LIFETIME=120 + + MEMCACHED_HOST=127.0.0.1 + + REDIS_HOST=127.0.0.1 + REDIS_PASSWORD=null + REDIS_PORT=6379 + + MAIL_MAILER=smtp + MAIL_HOST=mailpit + MAIL_PORT=1025 + MAIL_USERNAME=null + MAIL_PASSWORD=null + MAIL_ENCRYPTION=null + MAIL_FROM_ADDRESS="hello@example.com" + MAIL_FROM_NAME="${APP_NAME}" + + AWS_ACCESS_KEY_ID= + AWS_SECRET_ACCESS_KEY= + AWS_DEFAULT_REGION=us-east-1 + AWS_BUCKET= + AWS_USE_PATH_STYLE_ENDPOINT=false + + PUSHER_APP_ID= + PUSHER_APP_KEY= + PUSHER_APP_SECRET= + PUSHER_HOST= + PUSHER_PORT=443 + PUSHER_SCHEME=https + PUSHER_APP_CLUSTER=mt1 + + VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" + VITE_PUSHER_HOST="${PUSHER_HOST}" + VITE_PUSHER_PORT="${PUSHER_PORT}" + VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" + VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + + ADMIN_DEFAULT_EMAIL= + ADMIN_DEFAULT_PASSWORD= + + FILESYSTEM_DISK= + + API_KEY= diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..31faec7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode +# ========================================== +# Standard Laravel +# ========================================== +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode + +# ========================================== +# Shared Hosting / Legacy Artifacts +# ========================================== +# These were in your directory but shouldn't be in version control +/cgi-bin +error_log +/.well-known diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..1f2881b --- /dev/null +++ b/.htaccess @@ -0,0 +1,4 @@ + +RewriteEngine On +RewriteRule ^(.*)$ public/$1 [L] + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f057a1d --- /dev/null +++ b/README.md @@ -0,0 +1,99 @@ +# Dashboard Riset Database Penyakit + +Aplikasi ini adalah API untuk mendukung dashboard riset penyakit, yang dirancang untuk membantu peneliti mengakses dan mengelola data penyakit yang disediakan oleh operator. Aplikasi ini mendukung pembuatan database penyakit dengan struktur data yang dinamis, pengelolaan pengguna dengan peran yang berbeda (admin, operator, dan peneliti), serta pelacakan aktivitas melalui sistem log. + +## Fitur Utama +- **Pengelolaan Pengguna**: Registrasi, persetujuan, dan manajemen peran (Admin, Operator, Peneliti). +- **Database Penyakit**: CRUD untuk database penyakit dengan skema yang dapat disesuaikan. +- **Sistem Log**: Pencatatan aktivitas pengguna untuk audit dan pelacakan. +- **Manajemen File**: Unggah dan unduh file terkait data penyakit. + +--- + +## Persyaratan Sistem +1. **PHP** >= 8.2 +2. **Composer** untuk manajemen dependensi PHP +3. **Laravel** >= 10 +4. **PostgreSQL** sebagai database utama +5. **Postman** (opsional, untuk pengujian API) + +--- + +## Langkah-Langkah Instalasi + +### 1. Instal Dependensi +Jalankan perintah berikut untuk menginstal semua dependensi PHP: +```bash +composer install +``` + +### 2. Konfigurasi Environment +Salin file `.env.example` menjadi `.env`: +```bash +cp .env.example .env +``` +Kemudian, sesuaikan file `.env` dengan konfigurasi berikut: +```dotenv +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +DB_CONNECTION=pgsql +DB_HOST=127.0.0.1 +DB_PORT=5432 +DB_DATABASE=dashboard-heart-disease +DB_USERNAME=postgres +DB_PASSWORD=root + +ADMIN_DEFAULT_EMAIL= +ADMIN_DEFAULT_PASSWORD= +FILESYSTEM_DISK= +API_KEY= +``` + +### 3. Generate Key Aplikasi +Jalankan perintah berikut untuk menghasilkan kunci aplikasi: +```bash +php artisan key:generate +``` + +### 4. Migrasi dan Seeder Database +Jalankan migrasi untuk membuat tabel-tabel di database: +```bash +php artisan migrate +``` +Jika Anda ingin menambahkan data awal, jalankan juga: +```bash +php artisan db:seed +``` + +### 5. Jalankan Server +Jalankan server pengembangan menggunakan perintah berikut: +```bash +php artisan serve +``` +Akses aplikasi Anda di browser melalui URL: +``` +http://localhost:8000 +``` + +--- + +## Pengujian API + +### Dokumentasi API +Dokumentasi API dapat ditelusuri pada link berikut [Postman](https://www.postman.com/bold-resonance-703748/workspace/new-team-workspace) +- **Autentikasi**: Login, registrasi. +- **Manajemen Penyakit**: CRUD database penyakit. +- **Manajemen Pengguna**: Persetujuan dan pengaturan peran. +- **Log Action**: Pencatatan Log action aplikasi + +### Langkah Pengujian +1. Gunakan Akun Admin Default. +2. Tambahkan pengguna operator dan peneliti. +3. Buat database penyakit dan tetapkan operator untuk mengelola data. +4. Gunakan akun peneliti untuk melihat data dan membuat laporan. + +--- diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..b6bcbea --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,75 @@ +reportable(function (Throwable $e) { + // + }); + } + + public function render($request, Throwable $exception) + { + if ($request->is('api/*') || $request->wantsJson()) { + return $this->handleApiException($request, $exception); + } + + return parent::render($request, $exception); + } + + private function handleApiException($request, Throwable $exception) + { + $statusCode = 500; + $response = [ + 'success' => false, + 'message' => 'Internal Server Error', + 'data' => [] + ]; + + if ($exception instanceof AuthenticationException) { + $statusCode = 401; + $response['message'] = 'Unauthenticated'; + } elseif ($exception instanceof AuthorizationException) { + $statusCode = 403; + $response['message'] = 'Forbidden'; + } elseif ($exception instanceof ValidationException) { + $statusCode = 422; + $response['message'] = 'Validation Error'; + $response['data'] = $exception->errors(); + } elseif ($exception instanceof NotFoundHttpException) { + $statusCode = 404; + $response['message'] = 'Not Found'; + } else { + $response['message'] = $exception->getMessage() ?: 'Internal Server Error'; + } + + if (config('app.debug')) { + $response['debug'] = [ + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'trace' => $exception->getTrace() + ]; + } + + return response()->json($response, $statusCode); + } +} \ No newline at end of file diff --git a/app/Helpers/ResponseJson.php b/app/Helpers/ResponseJson.php new file mode 100644 index 0000000..1dff170 --- /dev/null +++ b/app/Helpers/ResponseJson.php @@ -0,0 +1,74 @@ +json([ + 'success' => true, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_OK); + } + + public static function pageNotFoundResponse(string $message, array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_NOT_FOUND); + } + + public static function failedResponse(string $message, array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_BAD_REQUEST); + } + + public static function validationErrorResponse(string $message, array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_UNPROCESSABLE_ENTITY); + } + + public static function unauthorizeResponse(string $message, array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_UNAUTHORIZED); + } + + public static function forbidenResponse(string $message = "Forbidden", array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => $message + ], ResponseAlias::HTTP_FORBIDDEN); + } + + public static function errorResponse(array|Collection|Model $data = []): JsonResponse + { + return response()->json([ + 'success' => false, + 'data' => $data, + 'message' => 'Server is busy right now!' + ], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR); + } +} diff --git a/app/Helpers/SignedUrlGenerator.php b/app/Helpers/SignedUrlGenerator.php new file mode 100644 index 0000000..813ea2c --- /dev/null +++ b/app/Helpers/SignedUrlGenerator.php @@ -0,0 +1,36 @@ +addMinutes($expiryMinutes), + ['diseaseId' => $diseaseId] + ); + } + + public function generateSingleRecordExportUrl($diseaseId, $recordId, $expiryMinutes = 30) + { + return URL::temporarySignedRoute( + 'disease.record.export', + now()->addMinutes($expiryMinutes), + ['diseaseId' => $diseaseId, 'recordId' => $recordId] + ); + } + + public function generateFileDownloadUrl($path, $expiryMinutes = 30) + { + return URL::temporarySignedRoute( + 'files.download.record', + now()->addMinutes($expiryMinutes), + ['path' => $path] + ); + } + +} diff --git a/app/Http/Controllers/AdminUserController.php b/app/Http/Controllers/AdminUserController.php new file mode 100644 index 0000000..464e821 --- /dev/null +++ b/app/Http/Controllers/AdminUserController.php @@ -0,0 +1,133 @@ +adminUserService = $adminUserService; + } + + public function createUser(CreateUserRequest $request): JsonResponse + { + + $validatedData = $request->validated(); + + [$success, $message, $data] = $this->adminUserService->createUser($validatedData); + + if(!$success){ + return ResponseJson::failedResponse($message, $validatedData); + } + + if ($validatedData['role'] === 'operator' && isset($validatedData['disease_ids'])) { + [$assignSuccess, $assignMessage, $data] = $this->adminUserService->assignOperatorToDiseases($data['id'], $validatedData['disease_ids']); + + if ($assignSuccess) { + $message .= ' ' . $assignMessage; + } else { + return ResponseJson::failedResponse($assignMessage); + } + } + + return ResponseJson::successResponse($message, $data); + } + + public function approveUser(UserIdRequest $request, $userId): JsonResponse + { + [$success, $message, $data] = $this->adminUserService->approveUser($userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('User approved successfully.', $data); + } + + public function rejectUser(UserIdRequest $request, $userId): JsonResponse + { + [$success, $message, $data] = $this->adminUserService->rejectUser($userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('User rejected successfully.', $data); + } + + public function editUser(EditUserRequest $request, $id): JsonResponse + { + + [$success, $message, $data] = $this->adminUserService->editUser($id, $request->validated()); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('User updated successfully.', $data); + } + + public function deleteUser(UserIdRequest $request, $userId): JsonResponse + { + [$success, $message, $data] = $this->adminUserService->deleteUser($userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('User deleted successfully.', $data); + } + + public function getUsers(Request $request): JsonResponse + { + [$success, $message, $data]= $this->adminUserService->getUsers($request->all()); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + return ResponseJson::successResponse('Users retrieved successfully.', $data); + } + + public function getUserDetails(UserIdRequest $request, $userId): JsonResponse + { + [$success, $message, $data] = $this->adminUserService->getUserDetails($userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('User details retrieved successfully.', $data); + } + + public function getUserProfile(Request $request) + { + $user = $request->user(); // Get the authenticated user + return response()->json([ + 'success' => true, + 'message' => 'Profile retrieved successfully.', + 'data' => [ + 'id' => $user->id, + 'name' => $user->name, + 'email' => $user->email, + 'role' => $user->role, + 'institution' => $user->institution, + 'gender' => $user->gender, + 'phone' => $user->phone_number, + 'approval_status' => $user->approval_status, + 'created_at' => $user->created_at, + 'updated_at' => $user->updated_at, + ] + ]); + } +} diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..9b2dd72 --- /dev/null +++ b/app/Http/Controllers/AuthController.php @@ -0,0 +1,59 @@ +authUserService = $authUserService; + } + + public function register(RegisterUserRequest $request) + { + [$success, $message, $data] = $this->authUserService->register( + $request->name, + $request->email, + $request->password, + $request->institution, + $request->gender, + $request->phone_number, + $request->tujuan_permohonan, + ); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse($message, $data); + } + + public function login(LoginUserRequest $request) + { + [$success, $message, $data] = $this->authUserService->login( + $request->email, + $request->password + ); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse($message, $data); + } + + public function logout(Request $request) + { + $this->authUserService->logout($request->user()); + return ResponseJson::successResponse('Berhasil Logout', []); + } +} diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php new file mode 100644 index 0000000..4fd86f2 --- /dev/null +++ b/app/Http/Controllers/CommentController.php @@ -0,0 +1,75 @@ +commentService = $commentService; + } + + public function createComment(CreateCommentRequest $request): JsonResponse + { + $data = $request->validated(); + + $userId = $request->user()->id; + + [$success, $message, $comment] = $this->commentService->createComment($data, $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $comment); + } + + return ResponseJson::successResponse($message, $comment); + } + + public function editComment(EditCommentRequest $request, $diseaseId, $commentId): JsonResponse + { + $data = $request->validated(); + + $userId = $request->user()->id; + + [$success, $message, $comment] = $this->commentService->editComment($commentId, $data, $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $comment); + } + + return ResponseJson::successResponse($message, $comment); + } + + public function deleteComment(DeleteCommentRequest $request, $diseaseId, $commentId): JsonResponse + { + $userId = request()->user()->id; + + [$success, $message, $comment] = $this->commentService->deleteComment($commentId, $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $comment); + } + + return ResponseJson::successResponse($message, $comment); + } + + public function getComments($diseaseId): JsonResponse + { + [$success, $message, $comments] = $this->commentService->getComments($diseaseId); + + if (!$success) { + return ResponseJson::failedResponse($message, $comments); + } + + return ResponseJson::successResponse($message, $comments); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +diseaseService = $diseaseService; + } + + public function createDisease(CreateDiseaseRequest $request): JsonResponse + { + $userId = $request->user()->id; + + [$success, $message, $data] = $this->diseaseService->createDisease($request->validated(), $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse($message, $data); + } + + public function editDisease(EditDiseaseRequest $request, $diseaseId): JsonResponse + { + // Log::info('EditDisease Request Data: ', $request->validated()); + + $userId = $request->user()->id; + + [$success, $message, $data] = $this->diseaseService->editDisease($diseaseId, $request->validated(), $userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease updated successfully.', $data); + } + + public function deleteDisease(DiseaseIdRequest $request, $diseaseId): JsonResponse + { + $userId = $request->user()->id; + + [$success, $message, $data] = $this->diseaseService->deleteDisease($diseaseId, $userId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease deleted successfully.', $data); + } + + public function getDiseases(Request $request): JsonResponse + { + $user = $request->user(); + + [$success, $message, $data] = $this->diseaseService->getDisease($request->all(), $user); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease retrieved successfully.', $data); + } + + public function getDiseaseDetails(DiseaseIdRequest $request, $diseaseId): JsonResponse + { + [$success, $message, $data] = $this->diseaseService->getDiseaseDetails($diseaseId); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease details retrieved successfully.', $data); + } + + public function getStatistics(Request $request): JsonResponse + { + [$success, $message, $data]= $this->diseaseService->getStatistics($request->all()); + + if(!$success){ + return ResponseJson::failedResponse($message, $data); + } + return ResponseJson::successResponse('Disease statistics retrieved successfully.', $data); + } +} diff --git a/app/Http/Controllers/DiseaseRecordController.php b/app/Http/Controllers/DiseaseRecordController.php new file mode 100644 index 0000000..4a4e4aa --- /dev/null +++ b/app/Http/Controllers/DiseaseRecordController.php @@ -0,0 +1,86 @@ +diseaseRecordService = $diseaseRecordService; + } + + public function createDiseaseRecord(CreateDiseaseRecordRequest $request): JsonResponse + { + //var_dump($request->all()); + // return ResponseJson::failedResponse("tez", []); + $userId = $request->user()->id; + //echo(is_array($request->input('record_data'))); + [$success, $message, $data] = $this->diseaseRecordService->createDiseaseRecord($request->validated(), $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse($message, $data); + } + + public function editDiseaseRecord(EditDiseaseRecordRequest $request, $diseaseId, $recordId): JsonResponse + { + $userId = $request->user()->id; + [$success, $message, $data] = $this->diseaseRecordService->editDiseaseRecord($recordId, $request->validated(), $userId); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease record updated successfully.', $data); + } + + public function deleteDiseaseRecord(DeleteDiseaseRecordRequest $request, $diseaseId, $recordId): JsonResponse + { + $userId = $request->user()->id; + [$success, $message] = $this->diseaseRecordService->deleteDiseaseRecord($recordId, $userId); + + if (!$success) { + return ResponseJson::failedResponse($message); + } + + return ResponseJson::successResponse($message); + } + + public function getDiseaseRecords(IndexDiseaseRecordRequest $request, $diseaseId): JsonResponse + { + [$success, $message, $data] = $this->diseaseRecordService->getDiseaseRecords($diseaseId, $request->all()); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse('Disease records retrieved successfully.', $data); + } + + + public function getDiseaseRecordDetails(ShowDiseaseRecordRequest $request, $diseaseId, $recordId): JsonResponse + { + [$success, $message, $data] = $this->diseaseRecordService->getDiseaseRecordDetails($diseaseId, $recordId); + + if (!$success) { + return ResponseJson::failedResponse($message, $data); + } + + return ResponseJson::successResponse($message, $data); + } +} diff --git a/app/Http/Controllers/DiseaseRecordExportController.php b/app/Http/Controllers/DiseaseRecordExportController.php new file mode 100644 index 0000000..e2f3203 --- /dev/null +++ b/app/Http/Controllers/DiseaseRecordExportController.php @@ -0,0 +1,154 @@ +fileStorage = $fileStorage; + $this->middleware(['auth:sanctum', 'checkDiseaseAccess']); + } + + /** + * Export all disease records to CSV + */ + public function exportToCsv(IndexDiseaseRecordRequest $request, $diseaseId) + { + // Validate disease exists + $disease = Disease::findOrFail($diseaseId); + + // Get all columns from schema + $columns = collect($disease->schema['columns']) + ->pluck('name') + ->toArray(); + + // Generate filename + $filename = sprintf( + 'disease-records-%s-%s.csv', + $disease->name, + now()->format('Y-m-d-His') + ); + + return $this->generateCsvResponse($disease, $columns, $filename); + } + + /** + * Export single record to CSV + */ + public function exportSingleRecord(ShowDiseaseRecordRequest $request, $diseaseId, $recordId) + { + $disease = Disease::findOrFail($diseaseId); + $record = DiseaseRecord::where('disease_id', $diseaseId) + ->where('id', $recordId) + ->firstOrFail(); + + $columns = collect($disease->schema['columns']) + ->pluck('name') + ->toArray(); + + $filename = sprintf( + 'disease-record-%s-%d-%s.csv', + $disease->name, + $recordId, + now()->format('Y-m-d-His') + ); + + return $this->generateCsvResponse($disease, $columns, $filename, $record); + } + + /** + * Generate CSV response for both single and multiple records + */ + private function generateCsvResponse($disease, $columns, $filename, $singleRecord = null) + { + return new StreamedResponse(function () use ($disease, $columns, $singleRecord) { + $handle = fopen('php://output', 'w'); + + // Write headers + fputcsv($handle, [...$columns, 'created_at', 'updated_at']); + + if ($singleRecord) { + // Write single record + $this->writeRecordToCsv($handle, $singleRecord, $columns); + } else { + // Write all records + DiseaseRecord::where('disease_id', $disease->id) + ->chunk(100, function ($records) use ($handle, $columns) { + foreach ($records as $record) { + $this->writeRecordToCsv($handle, $record, $columns); + } + }); + } + + fclose($handle); + }, 200, [ + 'Content-Type' => 'text/csv', + 'Content-Disposition' => 'attachment; filename="' . $filename . '"', + 'Cache-Control' => 'no-cache, no-store, must-revalidate', + 'Pragma' => 'no-cache', + 'Expires' => '0', + ]); + } + + private function generateSignedFileUrl($path) + { + // Remove any leading slashes + $path = ltrim($path, '/'); + + return URL::temporarySignedRoute( + 'files.download.record', + now()->addHours(24), // URLs valid for 24 hours + ['path' => $path] + ); + } + + private function generatePublicFileUrl($path) + { + $domain = env('APP_URL'); + return $domain . '/storage/public/' . $path; + } + /** + * Write a single record to CSV + */ + private function writeRecordToCsv($handle, $record, $columns) + { + $row = []; + foreach ($columns as $column) { + $value = $record->data[$column] ?? ''; + + // Handle file paths + if (is_array($value)) { + // Convert array of file paths to public URLs + $urls = array_map( + fn($path) => $this->generatePublicFileUrl($path), + $value + ); + $value = implode(' | ', $urls); + } elseif (is_string($value) && str_contains($value, 'diseases/records/')) { + // Convert single file path to public URL + $value = $this->generatePublicFileUrl($value); + } + + $row[] = $value; + } + + // Add timestamps + $row[] = $record->created_at->format('Y-m-d H:i:s'); + $row[] = $record->updated_at->format('Y-m-d H:i:s'); + + fputcsv($handle, $row); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php new file mode 100644 index 0000000..0b93950 --- /dev/null +++ b/app/Http/Controllers/FileController.php @@ -0,0 +1,162 @@ +fileStorage = $fileStorage; + $this->middleware(['auth:sanctum', 'checkDiseaseAccess'])->only(['previewFile']); + // $this->middleware('signed')->only(['downloadRecord']); // Add signed middleware for downloads + } + + public function previewFile(Request $request, string $path) + { + try { + $path = $this->sanitizePath($path); + $storagePath = storage_path('app/public/' . $path); + + if (!file_exists($storagePath)) { + Log::error('File not found', ['path' => $path]); + abort(404, 'File not found'); + } + + // Determine MIME type + $mimeType = mime_content_type($storagePath); + + // Only allow audio files for preview (extendable later) + if (!str_starts_with($mimeType, 'audio/')) { + abort(415, 'Unsupported media type for inline preview'); + } + + // Stream audio file + return response()->file($storagePath, [ + 'Content-Type' => $mimeType, + 'Content-Disposition' => 'inline', + ]); + } catch (\Exception $e) { + Log::error('File preview failed', [ + 'error' => $e->getMessage(), + 'path' => $path, + 'user_id' => $request->user()->id ?? null, + ]); + abort(500, 'Failed to preview file'); + } + } + + public function downloadRecord(Request $request, string $path) + { + try { + if (!$request->hasValidSignature()) { + abort(401, 'Invalid signature'); + } + + // Clean up the path to match storage structure + $path = $this->sanitizePath($path); + + // Determine the full storage path + $storagePath = storage_path('app/public/' . $path); + + if (!file_exists($storagePath)) { + Log::error('File not found', [ + 'path' => $path, + 'full_path' => $storagePath + ]); + abort(404, 'File not found'); + } + + // Find record containing this file path + $record = $this->findRecordByPath($path); + if (!$record) { + abort(404, 'Associated record not found'); + } + + // Log download attempt + Log::info('File download initiated via signed URL', [ + 'path' => $path, + 'disease_id' => $record->disease_id, + 'record_id' => $record->id + ]); + + return $this->fileStorage->streamFile('public/' . $path); + + } catch (\Exception $e) { + Log::error('File download failed', [ + 'error' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + 'path' => $path ?? 'undefined' + ]); + + abort(500, 'Failed to download file: ' . $e->getMessage()); + } + } + + private function sanitizePath(string $path): string + { + // Remove any directory traversal attempts and extra slashes + $path = str_replace(['..', '//'], ['', '/'], $path); + + // Remove /api/files/records if present at the start + $path = preg_replace('/^\/?(api\/files\/records\/)?/', '', $path); + + return trim($path, '/'); + } + + private function findRecordByPath(string $path): ?DiseaseRecord + { + // First find all diseases that have file fields + $diseasesWithFiles = Disease::whereRaw("jsonb_path_exists(schema->'columns', + '$.** ? (@.type == \"file\")')") + ->get(); + + if ($diseasesWithFiles->isEmpty()) { + return null; + } + + // Get all file field names from the schemas + $fileFields = []; + foreach ($diseasesWithFiles as $disease) { + $columns = $disease->schema['columns'] ?? []; + foreach ($columns as $column) { + if (($column['type'] ?? '') === 'file') { + $fileFields[$disease->id][] = [ + 'name' => $column['name'], + 'multiple' => $column['multiple'] ?? false + ]; + } + } + } + + // Build query based on discovered file fields + return DiseaseRecord::where(function ($query) use ($path, $fileFields) { + foreach ($fileFields as $diseaseId => $fields) { + foreach ($fields as $field) { + if ($field['multiple']) { + // Handle array fields using ? operator + $query->orWhere(function ($q) use ($path, $diseaseId, $field) { + $q->where('disease_id', $diseaseId) + ->whereRaw("data->? ?? ?", [$field['name'], $path]); + }); + } else { + // Handle single file fields + $query->orWhere(function ($q) use ($path, $diseaseId, $field) { + $q->where('disease_id', $diseaseId) + ->whereRaw("data->>? = ?", [$field['name'], $path]); + }); + } + } + } + })->first(); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/LogActionController.php b/app/Http/Controllers/LogActionController.php new file mode 100644 index 0000000..03e652a --- /dev/null +++ b/app/Http/Controllers/LogActionController.php @@ -0,0 +1,29 @@ +logActionService = $logActinoService; + } + + public function getLogActions(Request $request){ + + [$success, $message, $logs] = $this->logActionService->getLogs($request->all()); + + if (!$success) { + return ResponseJson::errorResponse($message); + } + + return ResponseJson::successResponse($message, $logs); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..69ada6b --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,74 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + //\App\Http\Middleware\EnsureAcceptJson::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \App\Http\Middleware\CheckApiKey::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\EnsureAcceptJson::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'checkRole' => \App\Http\Middleware\CheckRole::class, + 'checkDiseaseAccess' => \App\Http\Middleware\CheckDiseaseAccess::class, + 'checkCommentAuthorOrAdmin' => \App\Http\Middleware\CheckCommentAuthorOrAdmin::class, + 'ensureOperatorManagesDisease' => \App\Http\Middleware\EnsureOperatorManagesDisease::class, + ]; +} diff --git a/app/Http/Middleware/ApiKeyMiddleware.php b/app/Http/Middleware/ApiKeyMiddleware.php new file mode 100644 index 0000000..9f7e936 --- /dev/null +++ b/app/Http/Middleware/ApiKeyMiddleware.php @@ -0,0 +1,28 @@ +header('X-API-Key'); + + if (!$apiKey || !DB::table('api_keys')->where('key', $apiKey)->exists()) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..6ba2d49 --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,22 @@ +expectsJson()) { + return ResponseJson::unauthorizeResponse('You are not logged in', []); + } + + // return ResponseJson::failedResponse('Bad Request', []); + } +} diff --git a/app/Http/Middleware/CheckApiKey.php b/app/Http/Middleware/CheckApiKey.php new file mode 100644 index 0000000..6f8c720 --- /dev/null +++ b/app/Http/Middleware/CheckApiKey.php @@ -0,0 +1,27 @@ +header('X-API-Key'); + + if (!$apiKey || $apiKey !== config('app.api_key')) { + return ResponseJson::unauthorizeResponse('Invalid API Key', []); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/CheckCommentAuthorOrAdmin.php b/app/Http/Middleware/CheckCommentAuthorOrAdmin.php new file mode 100644 index 0000000..1fd8bf9 --- /dev/null +++ b/app/Http/Middleware/CheckCommentAuthorOrAdmin.php @@ -0,0 +1,35 @@ +user(); + $commentId = $request->route('commentId'); + $comment = Comment::find($commentId); + + if (!$comment) { + return ResponseJson::pageNotFoundResponse('Comment not found', []); + } + + if ($comment->user_id !== $user->id && $user->role !== 'admin') { + return ResponseJson::forbidenResponse('Unauthorized to edit or delete this comment.', []); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/CheckDiseaseAccess.php b/app/Http/Middleware/CheckDiseaseAccess.php new file mode 100644 index 0000000..9d6e600 --- /dev/null +++ b/app/Http/Middleware/CheckDiseaseAccess.php @@ -0,0 +1,30 @@ +user(); + + if (!$user) { + return ResponseJson::unauthorizeResponse('Unauthorized Access', []); + } + + if (in_array($user->role, ['operator', 'admin'])) { + return $next($request); + } + + if (($user->role === 'peneliti') && $user->approval_status === 'approved') { + return $next($request); + } + + return ResponseJson::forbidenResponse('User is not approved', []); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/CheckRole.php b/app/Http/Middleware/CheckRole.php new file mode 100644 index 0000000..fc71526 --- /dev/null +++ b/app/Http/Middleware/CheckRole.php @@ -0,0 +1,28 @@ +role, $roles)) { + return response()->json([ + 'success' => false, + 'message' => 'Forbidden', + 'data' => [] + ], 403); + } + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/EnsureAcceptJson.php b/app/Http/Middleware/EnsureAcceptJson.php new file mode 100644 index 0000000..9dc68c2 --- /dev/null +++ b/app/Http/Middleware/EnsureAcceptJson.php @@ -0,0 +1,59 @@ +isMethod('post') || $request->isMethod('put')) && + $request->hasHeader('Content-Type', 'multipart/form-data')) { + return $next($request); + } + + // Allow file downloads to pass through + if ($request->route() && strpos($request->route()->getName(), 'download') !== false) { + return $next($request); + } + + // Set Accept header to JSON for other requests + $request->headers->set('Accept', 'application/json'); + + $response = $next($request); + + // Only transform non-file responses + if (!$response instanceof BinaryFileResponse && + !$response instanceof StreamedResponse) { + if (!$response instanceof JsonResponse) { + if ($response instanceof Response) { + $content = $response->getContent(); + + $decoded = json_decode($content); + if (json_last_error() === JSON_ERROR_NONE) { + $data = $decoded; + } else { + $data = ['message' => $content]; + } + + $response = response()->json( + $data, + $response->status() + ); + } + } + + $response->header('Content-Type', 'application/json'); + } + + return $response; + } +} \ No newline at end of file diff --git a/app/Http/Middleware/EnsureOperatorManagesDisease.php b/app/Http/Middleware/EnsureOperatorManagesDisease.php new file mode 100644 index 0000000..ae82bd3 --- /dev/null +++ b/app/Http/Middleware/EnsureOperatorManagesDisease.php @@ -0,0 +1,56 @@ +id(); + + $user = User::findOrFail($userId); + // echo($user); + // Ensure user is authenticated + if (!$user) { + return ResponseJson::unauthorizeResponse('Unauthorized', []); + } + + // Allow admins to bypass the check + if ($user->role === 'admin') { + return $next($request); + } + + // Check if the user is an operator and manages the specified disease + + $diseaseId = $request->route('diseaseId'); + // echo($diseaseId); + + $managesDisease = $user->managed_diseases['disease_id']; + // echo($managesDisease); + // echo($managesDisease === $diseaseId); + if ($user->role === 'operator') { + if ($managesDisease != $diseaseId) { + return ResponseJson::forbidenResponse('Access denied: Unauthorized to manage this disease', []); + } + + return $next($request); + } + + return ResponseJson::forbidenResponse('Access denied', []); + } +} diff --git a/app/Http/Middleware/EnsureUserIsApproved.php b/app/Http/Middleware/EnsureUserIsApproved.php new file mode 100644 index 0000000..23ffbd9 --- /dev/null +++ b/app/Http/Middleware/EnsureUserIsApproved.php @@ -0,0 +1,24 @@ +user() && $request->user()->approval_status !== 'approved') { + return response()->json(['message' => 'Your account is not approved yet.'], 403); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/app/Http/Middleware/ValidateSignature.php b/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Requests/CreateCommentRequest.php b/app/Http/Requests/CreateCommentRequest.php new file mode 100644 index 0000000..9efda89 --- /dev/null +++ b/app/Http/Requests/CreateCommentRequest.php @@ -0,0 +1,36 @@ +merge([ + 'diseaseId' => $this->route('diseaseId') + ]); + } + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'diseaseId' => 'required|exists:diseases,id', + 'content' => 'required|string|max:1000', + 'parent_id' => 'nullable|exists:comments,id', + ]; + } +} diff --git a/app/Http/Requests/CreateDiseaseRecordRequest.php b/app/Http/Requests/CreateDiseaseRecordRequest.php new file mode 100644 index 0000000..b960e9c --- /dev/null +++ b/app/Http/Requests/CreateDiseaseRecordRequest.php @@ -0,0 +1,218 @@ +merge([ + 'diseaseId' => $this->route('diseaseId') + ]); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + + $mimeTypeMap = [ + 'audio' => [ + 'aac', 'midi', 'mp3', 'ogg', 'wav', 'webm', 'flac', 'aiff', 'amr', 'opus' + ], + 'video' => [ + 'mp4', 'avi', 'mkv', 'webm', 'ogg', '3gp', 'flv', 'mov', + 'wmv', 'mpg', 'mpeg', 'm4v', 'h264', 'hevc' + ], + 'image' => [ + 'jpeg', 'jpg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'svg', 'heif', 'heic', + 'ico', 'jp2', 'j2k', 'avif' + ], + 'text-document' => [ + 'pdf', 'doc', 'docx', 'txt' + ], + 'compressed-document' => [ + 'zip', '7z', 'tar', 'gz', 'rar', 'bz2', 'xz' + ], + 'spreadsheet' => [ + 'xls', 'xlsx', 'csv', 'ods' + ], + ]; + + + + $rules = [ + 'diseaseId' => 'required|integer|exists:diseases,id', + ]; + + if ($this->filled('diseaseId')) { + try { + $disease = Disease::findOrFail($this->route('diseaseId')); + + if ($disease && isset($disease->schema['columns'])){ + foreach ($disease->schema['columns'] as $column) { + $columnName = $column['name']; + $columnRules = []; + + // Base validation based on type + switch ($column['type']) { + case 'string': + case 'text': + $columnRules[] = 'required|string'; + break; + case 'integer': + $columnRules[] = 'required|integer'; + break; + case 'decimal': + case 'float': + $columnRules[] = 'required|numeric'; + break; + case 'datetime': + case 'date': + $columnRules[] = 'required|date'; + break; + case 'time': + $columnRules[] = 'required|date_format:H:i'; + break; + case 'file': + $columnRules[] = 'required'; + + if (!empty($column['multiple'])) { + // Multiple file upload handling + $rules[$columnName] = 'required|array|min:1'; + + $fileRules = ['file', 'max:20480']; + + if (!empty($column['format'])) { + $category = trim($column['format'], '.'); + if (array_key_exists($category, $mimeTypeMap)) { + $formats = $mimeTypeMap[$category]; + $fileRules[] = 'mimes:' . implode(',', $formats); + } else { + Log::warning("Unsupported format '{$column['format']}' for column '{$columnName}'"); + } + } + $rules[$columnName . '.*'] = implode('|', $fileRules); + // print_r($rules); + } else { + // Single file upload handling. + $columnRules[] = 'required|file|max:20480'; + + if (!empty($column['format'])) { + $category = trim($column['format'], '.'); + if (array_key_exists($category, $mimeTypeMap)) { + $formats = $mimeTypeMap[$category]; + $columnRules[] = 'mimes:' . implode(',', $formats); + } else { + Log::warning("Unsupported format '{$column['format']}' for column '{$columnName}'"); + } + } + + $rules[$columnName] = implode('|', $columnRules); + // print_r($rules); + } + + // print_r($columnRules); + break; + case 'boolean': + $columnRules[] = 'required|boolean'; + break; + case 'enum': + if (!empty($column['options']) && is_array($column['options'])) { + $columnRules[] = 'required|string'; + $columnRules[] = 'in:' . implode(',', $column['options']); + } + break; + case 'email': + $columnRules[] = 'required|email'; + break; + case 'phone': + $columnRules[] = 'required|string'; + $columnRules[] = 'regex:/^([0-9\s\-\+\(\)]*)$/'; + break; + } + + if (!empty($columnRules)) { + $rules[$columnName] = implode('|', $columnRules); + } + } + } + } catch (\Throwable $e) { + Log::error('Error loading disease schema: ' . $e->getMessage()); + } + } + + return $rules; + } + + + public function validated($key = null, $default = null): array + { + $validated = parent::validated(); + + return [ + 'diseaseId' => $validated['diseaseId'], + 'data' => collect($validated) + ->except('diseaseId') + ->toArray() + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} + + +// public function messages(): array +// { +// return [ +// 'diseaseId.required' => 'ID penyakit harus diisi.', +// 'diseaseId.integer' => 'ID penyakit harus berupa angka.', +// 'diseaseId.exists' => 'ID penyakit tidak ditemukan dalam database.', + +// 'data.*.required' => ':attribute harus diisi.', +// 'data.*.string' => ':attribute harus berupa teks.', +// 'data.*.integer' => ':attribute harus berupa angka bulat.', +// 'data.*.numeric' => ':attribute harus berupa angka.', +// 'data.*.date' => ':attribute harus berupa tanggal yang valid.', +// 'data.*.date_format' => ':attribute harus dalam format waktu yang valid (HH:MM:SS).', +// 'data.*.boolean' => ':attribute harus berupa benar atau salah.', +// 'data.*.in' => ':attribute harus salah satu dari pilihan yang tersedia: :values.', +// 'data.*.email' => ':attribute harus berupa alamat email yang valid.', +// 'data.*.regex' => ':attribute harus berupa nomor telepon yang valid.', + +// // 'data.*.file' => ':attribute harus berupa file.', +// // 'data.*.mimes' => ':attribute harus bertipe: :values.', + +// // 'data.*.array' => ':attribute harus dalam format array jika berisi banyak file.', +// // Uncommented additional validation for required/nullable +// // 'data.*.nullable' => ':attribute boleh dikosongkan.', +// // Rules for minimum and maximum values +// // 'data.*.min' => ':attribute harus minimal :min.', +// // 'data.*.min_digits' => ':attribute harus minimal :min digit.', +// // 'data.*.max' => ':attribute maksimal :max.', +// // 'data.*.max_digits' => ':attribute maksimal :max digit.', +// ]; +// } \ No newline at end of file diff --git a/app/Http/Requests/CreateDiseaseRequest.php b/app/Http/Requests/CreateDiseaseRequest.php new file mode 100644 index 0000000..4408f5b --- /dev/null +++ b/app/Http/Requests/CreateDiseaseRequest.php @@ -0,0 +1,84 @@ + 'required|string|max:255', + 'deskripsi' => 'nullable|string|max:65535', + 'visibilitas' => 'required|in:publik,privat', + 'schema' => 'required|array', + 'schema.columns' => 'required|array', + 'schema.columns.*.name' => [ + 'required', + 'string', + 'regex:/^[a-zA-Z0-9_]+$/', + 'distinct' + ], + 'schema.columns.*.type' => 'required|string|in:string,text,integer,decimal,float,date,datetime,time,file,boolean,email,phone', + //'schema.columns.*.type' => 'required|string|in:string,integer,enum,decimal,date,file,time,datetime,boolean,array,float,text,email,phone,json,range', + 'schema.columns.*.options' => 'required_if:schema.columns.*.type,enum|array', + 'schema.columns.*.format' => 'required_if:schema.columns.*.type,file|string', + 'schema.columns.*.multiple' => 'boolean|nullable', + 'schema.columns.*.is_visible' => 'boolean|nullable', + //'schema.columns.*.required' => 'boolean|nullable', + //'schema.columns.*.min' => 'numeric|nullable', + //'schema.columns.*.max' => 'numeric|nullable', + //'schema.columns.*.step' => 'numeric|nullable', + //'schema.columns.*.default' => 'nullable', + //'schema.columns.*.description' => 'string|nullable', + //'schema.columns.*.unit' => 'string|nullable', + 'cover_page' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + ]; + } + + public function messages(): array + { + return [ + 'name.required' => 'Nama penyakit harus diisi.', + 'name.max' => 'Nama penyakit maksimal 255 karakter.', + 'deskripsi.max' => 'Deskripsi penyakit maksimal 65535 karakter.', + 'schema.required' => 'Schema harus diisi.', + 'schema.array' => 'Schema harus dalam format yang valid.', + 'schema.columns.required' => 'Columns dalam schema harus diisi.', + 'schema.columns.array' => 'Columns harus dalam format array.', + 'schema.columns.*.name.required' => 'Nama kolom harus diisi.', + 'schema.columns.*.name.distinct' => 'Nama kolom tidak boleh duplikat', + 'schema.columns.*.name.regex' => 'Nama kolom hanya boleh berisi huruf, angka, dan underscore tanpa spasi.', + 'schema.columns.*.type.required' => 'Tipe kolom harus diisi.', + 'schema.columns.*.type.in' => 'Tipe kolom tidak valid.', + 'schema.columns.*.options.required_if' => 'Options harus diisi untuk tipe enum.', + 'schema.columns.*.format.required_if' => 'Format harus diisi untuk tipe file.', + 'cover_page.image' => 'Cover page harus berupa file gambar.', + 'cover_page.mimes' => 'Cover page harus berupa file bertipe: jpeg, png, jpg, gif, atau svg.', + 'cover_page.max' => 'Ukuran cover page maksimal 2MB.', + ]; + } + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + $pesan = "Field Error"; + + foreach ($errors as $field => $message) { + if ($message[0] === 'Nama kolom tidak boleh duplikat') { + $pesan .= " - Nama kolom tidak boleh duplikat"; + } + + throw new HttpResponseException(ResponseJson::failedResponse($pesan, [$field => $message[0]])); + } + } +} \ No newline at end of file diff --git a/app/Http/Requests/CreateUserRequest.php b/app/Http/Requests/CreateUserRequest.php new file mode 100644 index 0000000..4dc691f --- /dev/null +++ b/app/Http/Requests/CreateUserRequest.php @@ -0,0 +1,62 @@ + 'required|string|max:100', + 'email' => 'required|email|unique:users,email|max:100', + 'password' => 'required|string|min:8|max:64|confirmed', + // Front end add 'password_confirmation' field + 'role' => 'required|in:admin,operator,peneliti', + 'institution' => 'nullable|string|max:255', + 'gender' => 'nullable|in:male,female,prefer not to say', + 'phone_number' => 'nullable|string|max:50', + 'tujuan_permohonan' => 'nullable|string|max:65535', + 'disease_id' => 'required_if:role,operator|integer|exists:diseases,id' + ]; + } + + public function messages() + { + return [ + 'name.required' => 'Nama harus diisi.', + 'name.max' => 'Nama maksimal 100 karakter', + 'email.required' => 'Email harus diisi.', + 'email.email' => 'Email tidak valid.', + 'email.max' => 'Email maksimal 100 karakter', + 'email.unique' => 'Email tersebut sudah terdaftar', + 'password.required' => 'Password harus diisi.', + 'password.confirmed' => 'Password konfirmasi tidak sesuai.', + 'password.min' => 'Password minimal 8 karakter', + 'password.max' => 'Password maksimal 64 karakter', + 'role.required' => 'Role harus diisi', + 'role.in' => 'Role tidak sesuai', + 'institution.max' => 'Institusi maksimal 255 karakter.', + 'gender.in' => 'Gender tidak sesuai.', + 'phone_number.max' => 'Nomor telepon maksimal 50 karakter.', + 'tujuan_permohonan.max' => 'Tujuan permohonan maksimal 65535 karakter', + 'disease_id.required_if' => 'Disease IDs harus diisi jika role adalah operator.', + 'disease_id.integer' => 'Disease IDs harus berupa integer.', + 'disease_id.*.exists' => 'Setiap Disease ID yang dipilih harus valid dan ada dalam database.', + ]; + } + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + + foreach ($errors as $field => $message) { + throw new HttpResponseException(ResponseJson::failedResponse("field error", [$field => $message[0]])); + } + } +} diff --git a/app/Http/Requests/DeleteCommentRequest.php b/app/Http/Requests/DeleteCommentRequest.php new file mode 100644 index 0000000..6ea0d95 --- /dev/null +++ b/app/Http/Requests/DeleteCommentRequest.php @@ -0,0 +1,36 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + 'commentId' => $this->route('commentId') + ]); + } + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'diseaseId' => 'required|exists:diseases,id', + 'commentId' => 'required|exists:comments,id', + ]; + } +} diff --git a/app/Http/Requests/DeleteDiseaseRecordRequest.php b/app/Http/Requests/DeleteDiseaseRecordRequest.php new file mode 100644 index 0000000..b0fa65f --- /dev/null +++ b/app/Http/Requests/DeleteDiseaseRecordRequest.php @@ -0,0 +1,52 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + 'recordId' => $this->route('recordId'), + ]); + } + + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + 'recordId' => [ + 'required', + 'integer', + 'exists:disease_records,id', + function ($attribute, $value, $fail) { + $exists = \App\Models\DiseaseRecord::where('id', $value) + ->where('disease_id', $this->route('diseaseId')) + ->exists(); + + if (!$exists) { + $fail('The selected record does not belong to the specified disease.'); + } + }, + ], + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} diff --git a/app/Http/Requests/DiseaseIdRequest.php b/app/Http/Requests/DiseaseIdRequest.php new file mode 100644 index 0000000..9e6831d --- /dev/null +++ b/app/Http/Requests/DiseaseIdRequest.php @@ -0,0 +1,37 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + ]); + } + + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} diff --git a/app/Http/Requests/EditCommentRequest.php b/app/Http/Requests/EditCommentRequest.php new file mode 100644 index 0000000..9d162a7 --- /dev/null +++ b/app/Http/Requests/EditCommentRequest.php @@ -0,0 +1,37 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + 'commentId' => $this->route('commentId') + ]); + } + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + 'commentId' => 'required|integer|exists:comments,id', + 'content' => 'required|string|max:1000', + ]; + } +} diff --git a/app/Http/Requests/EditDiseaseRecordRequest.php b/app/Http/Requests/EditDiseaseRecordRequest.php new file mode 100644 index 0000000..46d2700 --- /dev/null +++ b/app/Http/Requests/EditDiseaseRecordRequest.php @@ -0,0 +1,245 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + 'recordId' => $this->route('recordId') + ]); + } + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + + $mimeTypeMap = [ + 'audio' => [ + 'aac', 'midi', 'mp3', 'ogg', 'wav', 'webm', 'flac', 'aiff', 'amr', 'opus' + ], + 'video' => [ + 'mp4', 'avi', 'mkv', 'webm', 'ogg', '3gp', 'flv', 'mov', + 'wmv', 'mpg', 'mpeg', 'm4v', 'h264', 'hevc' + ], + 'image' => [ + 'jpeg', 'jpg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'svg', 'heif', 'heic', + 'ico', 'jp2', 'j2k', 'avif' + ], + 'text-document' => [ + 'pdf', 'doc', 'docx', 'txt' + ], + 'compressed-document' => [ + 'zip', '7z', 'tar', 'gz', 'rar', 'bz2', 'xz' + ], + 'spreadsheet' => [ + 'xls', 'xlsx', 'csv', 'ods' + ], + ]; + + $rules = [ + 'diseaseId' => 'required|integer|exists:diseases,id', + 'recordId' => [ + 'required', + 'integer', + 'exists:disease_records,id', + function ($attribute, $value, $fail) { + $exists = \App\Models\DiseaseRecord::where('id', $value) + ->where('disease_id', $this->route('diseaseId')) + ->exists(); + + if (!$exists) { + $fail('The selected record does not belong to the specified disease.'); + } + }, + ], + ]; + + if ($this->filled('diseaseId')) { + try { + $disease = Disease::findOrFail($this->route('diseaseId')); + if ($disease && isset($disease->schema['columns'])) { + + foreach ($disease->schema['columns'] as $column) { + $columnName = $column['name']; + $columnRules = []; + + switch ($column['type']) { + case 'string': + case 'text': + $columnRules[] = 'sometimes|required|string'; + break; + case 'integer': + $columnRules[] = 'sometimes|required|integer'; + break; + case 'decimal': + case 'float': + $columnRules[] = 'sometimes|required|numeric'; + break; + case 'datetime': + case 'date': + $columnRules[] = 'sometimes|required|date'; + break; + case 'time': + $columnRules[] = 'sometimes|required|date_format:H:i'; + break; + case 'file': + $columnRules[] = 'sometimes|required'; // Ensures a file is uploaded. + + // Check if a 'format' is defined in the schema for the column. + if (!empty($column['multiple'])) { + // Ensure the field is an array of files. + $rules[$columnName] = 'sometimes|required|array|min:1'; + + // Apply validation to each file in the array. + $fileRules = ['file', 'max:20480']; // Start with basic file validation. + + // Add MIME type validation if a format is specified. + if (!empty($column['format'])) { + $category = trim($column['format'], '.'); // Strip the dot from the format. + if (array_key_exists($category, $mimeTypeMap)) { + $formats = $mimeTypeMap[$category]; + $fileRules[] = 'mimes:' . implode(',', $formats); + } else { + Log::warning("Unsupported format '{$column['format']}' for column '{$columnName}'"); + } + } + + // Apply the rules to each file in the array. + $rules[$columnName . '.*'] = implode('|', $fileRules); + // print_r($rules); + } else { + // Single file upload handling. + $columnRules[] = 'sometimes|required|file|max:20480'; + + // Add MIME type validation if a format is specified. + if (!empty($column['format'])) { + $category = trim($column['format'], '.'); // Strip the dot from the format. + if (array_key_exists($category, $mimeTypeMap)) { + $formats = $mimeTypeMap[$category]; + $columnRules[] = 'mimes:' . implode(',', $formats); + } else { + Log::warning("Unsupported format '{$column['format']}' for column '{$columnName}'"); + } + } + + // Apply the accumulated rules for a single file. + $rules[$columnName] = implode('|', $columnRules); + // print_r($rules); + } + + // print_r($columnRules); + break; + case 'boolean': + $columnRules[] = 'sometimes|required|boolean'; + break; + case 'enum': + if (!empty($column['options']) && is_array($column['options'])) { + $columnRules[] = 'sometimes|required|string'; + $columnRules[] = 'in:' . implode(',', $column['options']); + } + break; + case 'email': + $columnRules[] = 'sometimes|required|email'; + break; + case 'phone': + $columnRules[] = 'sometimes|required|string'; + $columnRules[] = 'regex:/^([0-9\s\-\+\(\)]*)$/'; + break; + } + + // // Add required/nullable validation + // if (!empty($column['required'])) { + // $columnRules[] = 'required'; + // } else { + // $columnRules[] = 'nullable'; + // } + + // // Add min/max validation if specified + // if (!empty($column['min'])) { + // switch ($column['type']) { + // case 'string': + // case 'text': + // $columnRules[] = 'min:' . $column['min']; + // break; + // case 'integer': + // case 'decimal': + // case 'float': + // $columnRules[] = 'min_digits:' . $column['min']; + // break; + // case 'file': + // $columnRules[] = 'min:' . $column['min']; // min in kilobytes + // break; + // } + // } + + // if (!empty($column['max'])) { + // switch ($column['type']) { + // case 'string': + // case 'text': + // $columnRules[] = 'max:' . $column['max']; + // break; + // case 'integer': + // case 'decimal': + // case 'float': + // $columnRules[] = 'max_digits:' . $column['max']; + // break; + // case 'file': + // $columnRules[] = 'max:' . $column['max']; // max in kilobytes + // break; + // } + // } + + if (!empty($columnRules)) { + $rules[$columnName] = implode('|', $columnRules); + } + } + } + } catch (\Throwable $e) { + Log::error('Error loading disease schema: ' . $e->getMessage()); + } + } + + return $rules; + } + + public function validated($key = null, $default = null): array + { + $validated = parent::validated(); + + return [ + 'diseaseId' => $validated['diseaseId'], + 'data' => collect($validated) + ->except('diseaseId', 'recordId') + ->toArray() + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} diff --git a/app/Http/Requests/EditDiseaseRequest.php b/app/Http/Requests/EditDiseaseRequest.php new file mode 100644 index 0000000..1ae8885 --- /dev/null +++ b/app/Http/Requests/EditDiseaseRequest.php @@ -0,0 +1,65 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + ]); + } + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + 'name' => 'sometimes|required|string|max:255', + 'deskripsi' => 'sometimes|nullable|string|max:65535', + 'visibilitas' => 'sometimes|required|in:publik,privat', + //'schema' => 'required|json', + 'cover_page' => 'sometimes|nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + ]; + } + + public function messages() + { + return [ + 'name.required' => 'Nama penyakit harus diisi.', + 'name.max' => 'Nama penyakit maksimal 255 karakter.', + 'deskripsi.max' => 'Deskripsi penyakit maksimal 65535 karakter.', + //'schema.required' => 'Schema harus diisi.', + //'schema.json' => 'Schema harus dalam format JSON yang valid.', + 'cover_page.image' => 'Cover page harus berupa file gambar.', + 'cover_page.mimes' => 'Cover page harus berupa file bertipe: jpeg, png, jpg, gif, atau svg.', + 'cover_page.max' => 'Ukuran cover page maksimal 2MB.', + ]; + } + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + + foreach ($errors as $field => $message) { + throw new HttpResponseException(ResponseJson::failedResponse("field error", [$field => $message[0]])); + } + } +} diff --git a/app/Http/Requests/EditUserRequest.php b/app/Http/Requests/EditUserRequest.php new file mode 100644 index 0000000..90e1a9e --- /dev/null +++ b/app/Http/Requests/EditUserRequest.php @@ -0,0 +1,67 @@ +route('userId'); + $userRecord = User::find($user); + $userRole = $userRecord ? $userRecord->role : null; + + return [ + 'name' => 'sometimes|required|string|max:100', + 'email' => 'sometimes|nullable|email|unique:users,email,' . $user . '|max:100', + 'password' => 'sometimes|nullable|string|min:8|max:64|confirmed', + 'role' => 'sometimes|required|in:admin,operator,peneliti', + 'institution' => 'nullable|string|max:255', + 'gender' => 'nullable|in:male,female,prefer not to say', + 'phone_number' => 'nullable|string|max:50', + 'approval_status' => 'sometimes|in:approved,pending,rejected', + 'disease_id' => 'sometimes|integer|exists:diseases,id|required_if:role,operator' + ]; + } + +public function messages() +{ + return [ + 'name.required' => 'Nama harus diisi.', + 'name.max' => 'Nama maksimal 100 karakter', + 'email.email' => 'Email tidak valid.', + 'email.max' => 'Email maksimal 100 karakter', + 'email.unique' => 'Email tersebut sudah terdaftar', + 'password.min' => 'Password minimal 8 karakter', + 'password.max' => 'Password maksimal 64 karakter', + 'password.confirmed' => 'Password konfirmasi tidak sesuai.', + 'role.required' => 'Role harus diisi', + 'role.in' => 'Role tidak sesuai', + 'institution.max' => 'Institusi maksimal 255 karakter.', + 'gender.in' => 'Gender tidak sesuai.', + 'phone_number.max' => 'Nomor telepon maksimal 50 karakter.', + 'approval_status.required' => 'Status Approval harus diisi.', + 'approval_status.in' => 'Status Approval tidak sesuai.', + 'disease_id.required_if' => 'Disease IDs harus diisi jika role adalah operator.', + 'disease_id.integer' => 'Disease IDs harus berupa integer.', + 'disease_id.*.exists' => 'Setiap Disease ID yang dipilih harus valid dan ada dalam database.', + ]; +} + + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + + foreach ($errors as $field => $message) { + throw new HttpResponseException(ResponseJson::failedResponse("field error", [$field => $message[0]])); + } + } +} diff --git a/app/Http/Requests/IndexDiseaseRecordRequest.php b/app/Http/Requests/IndexDiseaseRecordRequest.php new file mode 100644 index 0000000..6480ae9 --- /dev/null +++ b/app/Http/Requests/IndexDiseaseRecordRequest.php @@ -0,0 +1,37 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + ]); + } + + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} diff --git a/app/Http/Requests/LoginUserRequest.php b/app/Http/Requests/LoginUserRequest.php new file mode 100644 index 0000000..4378f9d --- /dev/null +++ b/app/Http/Requests/LoginUserRequest.php @@ -0,0 +1,46 @@ + 'required|email|max:100', + 'password' => 'required|min:8|max:64', + ]; + } + + public function messages() + { + return [ + 'email.required' => 'Email harus diisi', + 'email.email' => 'Email tidak valid', + 'email.max' => 'Email Maksimal 100 Karakter', + 'password.required' => 'Password Harus diisi', + 'password.min' => 'Password Minimal 8 Karakter', + 'password.max' => 'Password Maksimal 64 Karakter', + ]; + } + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + + foreach ($errors as $field => $message) { + throw new HttpResponseException(ResponseJson::failedResponse("field error", [$field => $message[0]])); + } + } +} diff --git a/app/Http/Requests/RegisterUserRequest.php b/app/Http/Requests/RegisterUserRequest.php new file mode 100644 index 0000000..23d9c27 --- /dev/null +++ b/app/Http/Requests/RegisterUserRequest.php @@ -0,0 +1,59 @@ + 'required|string|max:100', + 'email' => 'required|email|unique:users,email|max:100', + 'password' => 'required|string|min:8|max:64|confirmed', + //Front end include: 'password_confirmation' field + 'institution' => 'required|string|max:255', + 'gender' => 'required|in:male,female,prefer not to say', + 'phone_number' => 'required|string|max:50', + 'tujuan_permohonan' => 'required|string|max:65535', + ]; + } + + public function messages() + { + return [ + 'name.required' => 'Nama harus diisi.', + 'name.max' => 'Nama maksimal 100 karakter', + 'email.required' => 'Email harus diisi.', + 'email.email' => 'Email tidak valid.', + 'email.max' => 'Email maksimal 100 karakter', + 'email.unique' => 'Email tersebut sudah terdaftar, silahkan login.', + 'password.required' => 'Password harus diisi.', + 'password.confirmed' => 'Password konfirmasi tidak sesuai.', + 'password.min' => 'Password minimal 8 karakter', + 'password.max' => 'Password maksimal 64 karakter', + 'institution.max' => 'Institusi maksimal 255 karakter.', + 'gender.in' => 'Gender tidak sesuai.', + 'phone_number.max' => 'Nomor telepon maksimal 50 karakter.', + 'tujuan_permohonan.max' => 'Tujuan permohonan maksimal 65535 karakter', + ]; + } + + protected function failedValidation(Validator $validator) + { + $errors = $validator->errors()->toArray(); + + foreach ($errors as $field => $message) { + throw new HttpResponseException(ResponseJson::failedResponse("field error", [$field => $message[0]])); + } + } +} diff --git a/app/Http/Requests/ShowDiseaseRecordRequest.php b/app/Http/Requests/ShowDiseaseRecordRequest.php new file mode 100644 index 0000000..e10bd97 --- /dev/null +++ b/app/Http/Requests/ShowDiseaseRecordRequest.php @@ -0,0 +1,52 @@ +merge([ + 'diseaseId' => $this->route('diseaseId'), + 'recordId' => $this->route('recordId') + ]); + } + + public function rules(): array + { + return [ + 'diseaseId' => 'required|integer|exists:diseases,id', + 'recordId' => [ + 'required', + 'integer', + 'exists:disease_records,id', + function ($attribute, $value, $fail) { + $exists = \App\Models\DiseaseRecord::where('id', $value) + ->where('disease_id', $this->route('diseaseId')) + ->exists(); + + if (!$exists) { + $fail('The selected record does not belong to the specified disease.'); + } + }, + ], + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserIdRequest.php b/app/Http/Requests/UserIdRequest.php new file mode 100644 index 0000000..15da98b --- /dev/null +++ b/app/Http/Requests/UserIdRequest.php @@ -0,0 +1,37 @@ +merge([ + 'userId' => $this->route('userId'), + ]); + } + + public function rules(): array + { + return [ + 'userId' => 'required|integer|exists:users,id', + ]; + } + + protected function failedValidation(Validator $validator) + { + throw new HttpResponseException( + ResponseJson::failedResponse('Validation error', $validator->errors()->toArray()) + ); + } +} diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php new file mode 100644 index 0000000..4eca6fd --- /dev/null +++ b/app/Http/Resources/UserResource.php @@ -0,0 +1,19 @@ + + */ + public function toArray(Request $request): array + { + return parent::toArray($request); + } +} diff --git a/app/Models/Comment.php b/app/Models/Comment.php new file mode 100644 index 0000000..61dc943 --- /dev/null +++ b/app/Models/Comment.php @@ -0,0 +1,39 @@ +belongsTo(Disease::class); + } + + public function user() + { + return $this->belongsTo(User::class); + } + + public function replies() + { + return $this->hasMany(Comment::class, 'parent_id'); + } + + public function parent() + { + return $this->belongsTo(Comment::class, 'parent_id'); + } + + public function getContentWithPlaceholderAttribute() + { + return $this->status === 'deleted' ? 'Deleted Comment' : $this->content; + } +} diff --git a/app/Models/Disease.php b/app/Models/Disease.php new file mode 100644 index 0000000..1d6b021 --- /dev/null +++ b/app/Models/Disease.php @@ -0,0 +1,57 @@ + 'json' + ]; + + public function operators() + { + return $this->belongsToMany(User::class, 'disease_operator', 'disease_id', 'user_id'); + } + + public function diseaseRecords() + { + return $this->hasMany(DiseaseRecord::class); + } + + protected function getCoverPageUrlAttribute(): ?string + { + if ($this->cover_page) { + //$domain = env('APP_URL'); + return Storage::url('public/' . $this->cover_page); + } + return null; + } + + protected function getExportUrlAttribute(): string + { + return url("/api/diseases/{$this->id}/export"); + } + + public function toArray() + { + $array = parent::toArray(); + $array['cover_page_url'] = $this->cover_page_url; + $array['export_url'] = $this->export_url; + return $array; + } + +} diff --git a/app/Models/DiseaseRecord.php b/app/Models/DiseaseRecord.php new file mode 100644 index 0000000..d1268d2 --- /dev/null +++ b/app/Models/DiseaseRecord.php @@ -0,0 +1,43 @@ + 'json', + ]; + + public function disease() + { + return $this->belongsTo(Disease::class); + } + + protected function getExportUrlAttribute(): string + { + return url("/api/diseases/{$this->disease_id}/records/{$this->id}/export"); + } + + protected function getPublicFileUrl($path): string + { + if (empty($path)) { + return ''; + } + + return url("/storage/public/{$path}"); + } + + + public function toArray() + { + $array = parent::toArray(); + $array['export_url'] = $this->export_url; + return $array; + } +} \ No newline at end of file diff --git a/app/Models/Log.php b/app/Models/Log.php new file mode 100644 index 0000000..3d18c95 --- /dev/null +++ b/app/Models/Log.php @@ -0,0 +1,30 @@ +belongsTo(User::class); + } + + /** + * Dynamically resolve the related model instance + */ + public function relatedModel() + { + if (!class_exists($this->model)) { + return null; + } + + return $this->model::find($this->model_id); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..13f47c7 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,80 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + 'institution', + 'gender', + 'phone_number', + 'tujuan_permohonan', + 'role', + 'approval_status', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + ]; + + protected $appends = ['managed_diseases']; + + public function managedDiseases() + { + return $this->belongsToMany(Disease::class, 'disease_operator', 'user_id', 'disease_id'); + } + + public function getManagedDiseasesAttribute() + { + if ($this->role === 'operator') { + + $disease = $this->managedDiseases() + ->select(['diseases.id as disease_id', 'diseases.name']) + ->first(); + + if ($disease) { + return [ + 'disease_id' => $disease->disease_id, + 'name' => $disease->name, + 'pivot' => [ + 'user_id' => $disease->pivot->user_id, + 'disease_id' => $disease->pivot->disease_id, + ], + ]; + } + } + return null; + } + +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // 'App\Models\Model' => 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..bc49109 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,48 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + */ + protected function configureRateLimiting(): void + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); + } +} diff --git a/app/Rules/EnsureArray.php b/app/Rules/EnsureArray.php new file mode 100644 index 0000000..7f6aa98 --- /dev/null +++ b/app/Rules/EnsureArray.php @@ -0,0 +1,29 @@ + $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + 'role' => $data['role'], + 'approval_status' => 'approved', + 'institution' => $data['institution'] ?? null, + 'gender' => $data['gender'] ?? null, + 'phone_number' => $data['phone_number'] ?? null, + ]); + + if ($user->role === 'operator' && isset($data['disease_id'])) { + $user->managedDiseases()->attach($data['disease_id']); + } + + DB::commit(); + + LogActionService::logAction( + auth()->id(), + 'create', + 'User', + $user->id, + $user->toArray(), + "Created user: {$user->name}", + true + ); + return [true, 'User created successfully.', $user->toArray()]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + auth()->id(), + 'create', + 'User', + null, + [ + 'name' => $data['name'] ?? null, + 'email' => $data['email'] ?? null, + 'error' => $exception->getMessage() + ], + "Failed to create user: {$exception->getMessage()}", + false + ); + return [false, 'User creation failed: ' . $exception->getMessage(), []]; + } + } + + public function approveUser($id): array + { + try { + DB::beginTransaction(); + $user = User::find($id); + if (!$user) { + DB::rollBack(); + LogActionService::logAction( + $user, + 'edit', + 'User', + $id, + ['error' => 'User not found'], + "Failed to approve User: User not found", + false + ); + return [false, 'User not found.', []]; + } + + $oldStatus = $user->approval_status; + $user->approval_status = 'approved'; + $user->save(); + + DB::commit(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $user->id, + [ + 'old_status' => $oldStatus, + 'new_status' => 'approved' + ], + "Approved user: {$user->name}", + true + ); + return [true, 'User approved successfully.', $user]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $id, + ['error' => $exception->getMessage()], + "Failed to approve user: {$exception->getMessage()}", + false + ); + + return [false, 'User approval failed: ' . $exception->getMessage(), []]; + } + } + + public function rejectUser($id): array + { + try { + DB::beginTransaction(); + $user = User::find($id); + if (!$user) { + DB::rollBack(); + LogActionService::logAction( + $user, + 'edit', + 'User', + $id, + ['error' => 'User not found'], + "Failed to reject User: User not found", + false + ); + return [false, 'User not found.', []]; + } + + $oldStatus = $user->approval_status; + $user->approval_status = 'rejected'; + $user->save(); + + DB::commit(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $user->id, + [ + 'old_status' => $oldStatus, + 'new_status' => 'rejected' + ], + "Rejected user: {$user->name}", + true + ); + return [true, 'User rejected successfully.', $user]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $id, + ['error' => $exception->getMessage()], + "Failed to reject user: {$exception->getMessage()}", + false + ); + return [false, 'User rejection failed: ' . $exception->getMessage(), []]; + } + } + + public function editUser($id, array $data): array + { + try { + DB::beginTransaction(); + + $user = User::find($id); + if (!$user) { + DB::rollBack(); + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $id, + ['error' => 'User not found'], + "Failed to edit user: User not found", + false + ); + return [false, 'User not found.', []]; + } + if (($user->is_primary_admin)) { + DB::rollBack(); + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $id, + ['error' => 'Attempted to edit primary admin account'], + "Failed to edit user: Cannot edit primary admin account", + false + ); + return [false, 'The primary admin account cannot be edited.', []]; + } + + $oldData = $user->toArray(); + + if (isset($data['password']) && $data['password']) { + $data['password'] = Hash::make($data['password']); + } else { + unset($data['password']); + } + + if (isset($data['email']) && $data['email'] !== $user->email) { + $existingUser = User::where('email', $data['email'])->first(); + if ($existingUser) { + return [false, 'Email address is already in use.', []]; + } + } + + $changedFields = array_keys(array_diff_assoc($data, $oldData)); + + // Get only the values that are actually changing + + $user->update($data); + + if ($user->role === 'operator' && isset($data['disease_id'])) { + // Detach old disease (if any) and attach the new one + $user->managedDiseases()->sync([$data['disease_id']]); + } + + $relevantOldData = array_intersect_key($oldData, $data); + $relevantNewData = array_intersect_key($data, $oldData); + + DB::commit(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $user->id, + [ + 'old' => $relevantOldData, + 'new' => $relevantNewData, + 'changed_fields' => $changedFields + ], + "Updated user: {$user->name}", + true + ); + return [true, 'User updated successfully.', $user]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + auth()->id(), + 'edit', + 'User', + $id, + [ + 'attempted_changes' => array_keys($data), + 'error' => $exception->getMessage() + ], + "Failed to update user: {$exception->getMessage()}", + false + ); + return [false, 'User update failed: ' . $exception->getMessage(), []]; + } + } + + + + public function deleteUser($id): array + { + try { + DB::beginTransaction(); + $user = User::find($id); + if (!$user) { + DB::rollBack(); + LogActionService::logAction( + auth()->id(), + 'delete', + 'User', + $id, + ['error' => 'User not found'], + "Failed to delete user: User not found", + false + ); + return [false, 'User not found.', []]; + } + + if ((int) auth()->id() === (int) $id) { + DB::rollBack(); + LogActionService::logAction( + auth()->id(), + 'delete', + 'User', + $id, + ['error' => 'Attempted to delete own account'], + "Failed to delete user: Cannot delete own account", + false + ); + return [false, 'You cannot delete your own account.', []]; + } + + if ($user->is_primary_admin) { + DB::rollBack(); + LogActionService::logAction( + auth()->id(), + 'delete', + 'User', + $id, + ['error' => 'Attempted to delete primary admin account'], + "Failed to delete user: Cannot delete primary admin account", + false + ); + return [false, 'The primary admin account cannot be deleted.', []]; + } + + $userInfo = [ + 'name' => $user->name, + 'email' => $user->email, + 'role' => $user->role + ]; + + $user->delete(); + + DB::commit(); + + LogActionService::logAction( + auth()->id(), + 'delete', + 'User', + $id, + $userInfo, + "Deleted user: {$user->name}", + true + ); + return [true, 'User deleted successfully.', []]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + auth()->id(), + 'delete', + 'User', + $id, + ['error' => $exception->getMessage()], + "Failed to delete user: {$exception->getMessage()}", + false + ); + return [false, 'User deletion failed: ' . $exception->getMessage(), []]; + } + } + + public function getUsers(array $filters): array + { + try { + $query = User::query(); + + $this->applyUserFilters($query, $filters); + + $paginatedData = $this->paginateResults($query, $filters, 'users'); + + return [true, 'Users retrieved successfully.', $paginatedData]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve users: ' . $exception->getMessage(), []]; + } + } + + + public function getUserDetails($id): array + { + try { + $user = User::findOrFail($id); + return [true, 'User details retrieved successfully.', $user]; + } catch (\Throwable $exception) { + // TO DO logging + return [false, 'Failed to retrieve user details: ' . $exception->getMessage(), []]; + } + } + + public function assignOperatorToDiseases(int $userId, array $diseaseIds): array + { + try { + DB::beginTransaction(); + $user = User::findOrFail($userId); + + $user->managedDiseases()->sync($diseaseIds); + + DB::commit(); + return [true, 'Diseases assigned to operator successfully.', $user]; + } catch (\Throwable $exception) { + // Log exception + DB::rollBack(); + return [false, 'Failed to assign diseases to operator: ' . $exception->getMessage(), []]; + } + } + + private function applyUserFilters(Builder $query, array $filters): void + { + if (!empty($filters['role'])) { + $query->where('role', $filters['role']); + } + + if (!empty($filters['name'])) { + $query->where('name', 'ILIKE', '%' . trim($filters['name']) . '%'); + } + + if (!empty($filters['approval_status'])) { + $query->where('approval_status', $filters['approval_status']); + } + + // Add sorting if needed + $query->orderBy('updated_at', 'desc'); + } + + private function paginateResults(Builder $query, array $filters, string $itemsKey): array + { + $perPage = isset($filters['per_page']) && + is_numeric($filters['per_page']) && + $filters['per_page'] > 0 && + $filters['per_page'] <= self::MAX_PER_PAGE + ? (int) $filters['per_page'] + : self::DEFAULT_PER_PAGE; + + $page = isset($filters['page']) && + is_numeric($filters['page']) && + $filters['page'] > 0 + ? (int) $filters['page'] + : 1; + + $results = $query->paginate($perPage, ['*'], 'page', $page); + + if ($results->isEmpty() && $results->currentPage() > 1) { + $results = $query->paginate($perPage, ['*'], 'page', $results->lastPage()); + } + + return [ + $itemsKey => $results->items(), + 'pagination' => [ + 'current_page' => $results->currentPage(), + 'last_page' => $results->lastPage(), + 'per_page' => (int) $results->perPage(), + 'total' => $results->total(), + 'from' => $results->firstItem(), + 'to' => $results->lastItem(), + 'has_more_pages' => $results->hasMorePages(), + ] + ]; + } +} diff --git a/app/Services/AuthUserService.php b/app/Services/AuthUserService.php new file mode 100644 index 0000000..1ea0a20 --- /dev/null +++ b/app/Services/AuthUserService.php @@ -0,0 +1,80 @@ + $name, + 'email' => $email, + 'password' => Hash::make($password), + 'institution' => $institution, + 'gender' => $gender, + 'phone_number' => $phoneNumber, + 'tujuan_permohonan' => $tujuanPermohonan, + 'role' => 'peneliti', + 'approval_status' => 'pending', + ]); + + return [true, 'User registered successfully.', [ + 'approval_status' => $user->approval_status, + ]]; + } catch (\Throwable $exception) { + // TO DO logging + return [false, 'Registration failed: ', []]; + } + } + + public function login(string $email, string $password): array + { + try { + $user = User::where('email', $email)->first(); + + if (!$user || !Hash::check($password, $user->password)) { + return [false, 'The provided credentials are incorrect.', []]; + } + + $token = $user->createToken('MyApp')->plainTextToken; + + $response = [ + 'token' => $token, + 'approval_status' => $user->approval_status, + 'role' => $user->role, + ]; + + if ($user->role === 'operator') { + $response['disease_id'] = $user->managedDiseases["disease_id"] ?? null; + } + + return [true, 'Login successful.', $response]; + } catch (\Throwable $exception) { + // TO DO logging + return [false, 'Login Failed: ' . $exception->getMessage(), []]; + } + } + public function logout(User $user): void + { + $user->tokens()->delete(); + } + + private function deleteTokenSanctum(int $userId): void + { + \Laravel\Sanctum\PersonalAccessToken::where('tokenable_id', $userId) + ->where('abilities', '["accessLoginMember"]') + ->delete(); + } +} diff --git a/app/Services/CommentService.php b/app/Services/CommentService.php new file mode 100644 index 0000000..e2160b8 --- /dev/null +++ b/app/Services/CommentService.php @@ -0,0 +1,111 @@ + $data['diseaseId'], + 'user_id' => $userId, + 'content' => $data['content'], + 'parent_id' => $data['parent_id'] ?? null, + ]); + return [true, 'Comment created successfully.', $comment]; + } catch (\Exception $e) { + Log::error($e->getMessage()); + return [false, 'Failed to create comment.', []]; + } + } + + public function editComment(int $commentId, array $data, int $userId): array + { + try{ + $comment = Comment::where('id', $commentId)->where('user_id', $userId)->first(); + + if (!$comment) { + return [false, 'Comment not found or unauthorized.', []]; + } + + $comment->update(['content' => $data['content']]); + + return [true, 'Comment updated successfully.', $comment]; + } catch (\Exception $e){ + Log::error($e->getMessage()); + return [false, 'Failed to edit comment.', []]; + } + } + public function deleteComment(int $commentId, int $userId): array + { + try{ + $comment = Comment::where('id', $commentId)->where('user_id', $userId)->first(); + + if (!$comment) { + return [false, 'Comment not found or unauthorized.', []]; + } + + // Soft delete and mark as deleted + $comment->update(['status' => 'deleted', 'content' => null]); + $comment->delete(); + + return [true, 'Comment deleted successfully.', []]; + } catch (\Exception $e){ + Log::error($e->getMessage()); + return [false, 'Failed to delete comment.', []]; + } + } + + + public function getComments(int $diseaseId): array + { + $comments = Comment::with([ + 'replies' => function ($query) { + $query->withTrashed(); // Include soft-deleted replies + }, + 'user:id,name,email,role', // Include user details for parent comments + 'replies.user:id,name,email,role' // Include user details for replies + ]) + ->where('disease_id', $diseaseId) + ->whereNull('parent_id') // Fetch only parent comments + ->withTrashed() // Include soft-deleted parents + ->get() + ->map(function ($comment) { + return [ + 'id' => $comment->id, + 'content' => $comment->content_with_placeholder, // Use placeholder content for deleted comments + 'status' => $comment->status, + 'created_at' => $comment->created_at, + 'updated_at' => $comment->updated_at, + 'user' => $comment->user ? [ + 'id' => $comment->user->id, + 'name' => $comment->user->name, + 'email' => $comment->user->email, + 'role' => $comment->user->role + ] : null, + 'replies' => $comment->replies->map(function ($reply) { + return [ + 'id' => $reply->id, + 'content' => $reply->content_with_placeholder, + 'status' => $reply->status, + 'created_at' => $reply->created_at, + 'updated_at' => $reply->updated_at, + 'user' => $reply->user ? [ + 'id' => $reply->user->id, + 'name' => $reply->user->name, + 'email' => $reply->user->email, + 'role' => $reply->user->role + ] : null + ]; + })->toArray() + ]; + })->toArray(); // Convert to array for the response + + return [true, 'Comments retrieved successfully.', $comments]; + } + +} diff --git a/app/Services/DiseaseRecordService.php b/app/Services/DiseaseRecordService.php new file mode 100644 index 0000000..5975fc9 --- /dev/null +++ b/app/Services/DiseaseRecordService.php @@ -0,0 +1,481 @@ +diseaseService = $diseaseService; + $this->fileStorage = $fileStorage; + } + + public function createDiseaseRecord(array $data, $userId): array + { + try { + DB::beginTransaction(); + + $diseaseId = $data['diseaseId']; + unset($data['diseaseId']); + + [$schema, $message] = $this->diseaseService->getSchemaField($diseaseId); + + foreach ($data['data'] as $key => $value) { + + $fieldSchema = collect($schema)->firstWhere('name', $key); + + if (!$fieldSchema) { + throw new \Exception("Field '{$key}' is not defined in the schema."); + } + + if ($fieldSchema['type'] === 'file') { + $isMultiple = $fieldSchema['multiple'] ?? false; + + if ($isMultiple) { + $value = is_array($value) ? $value : [$value]; + $fileUrls = []; + foreach ($value as $index => $file) { + if ($file && is_file($file)) { + $fileUrls[] = $this->fileStorage->storeRecordFile( + $file, + $diseaseId, + $key . '-' . ($index + 1) + ); + } + } + + $data['data'][$key] = $fileUrls; + } else if (is_file($value)){ + $data['data'][$key] = $this->fileStorage->storeRecordFile($value, $diseaseId, $key); + } + } else { + // Process non-file fields normally + $data['data'][$key] = $value; + } + } + + $diseaseRecord = DiseaseRecord::create([ + 'disease_id' => $diseaseId, + 'data' => $data['data'], + ]); + + + DB::commit(); + + LogActionService::logAction( + $userId, + 'create', + 'DiseaseRecord', + $diseaseRecord->id, + $diseaseRecord->toArray(), + "Created disease record for disease ID: {$diseaseId}", + true + ); + return [true, 'Disease record created successfully.', $diseaseRecord->toArray()]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'create', + 'DiseaseRecord', + null, + [ + 'disease_id' => $diseaseId ?? null, + 'error' => $exception->getMessage() + ], + "Failed to create disease record: {$exception->getMessage()}", + false + ); + return [false, 'Disease record creation failed: ' . $exception->getMessage(), []]; + } + + } + + public function editDiseaseRecord($recordId, array $data, $userId): array + { + try { + DB::beginTransaction(); + $diseaseRecord = DiseaseRecord::find($recordId); + if (!$diseaseRecord) { + DB::rollBack(); + LogActionService::logAction( + $userId, + 'delete', + 'Disease', + $recordId, + ['error' => 'Disease Record not found'], + "Failed to delete disease record: Disease Record not found", + false + ); + return [false, 'Disease Record not found.', []]; + } + $oldData = $diseaseRecord->toArray(); + $existingData = $diseaseRecord->data; + + $diseaseId = $data['diseaseId']; + unset($data['diseaseId']); + + [$schema, $message] = $this->diseaseService->getSchemaField($diseaseId); + + foreach ($data['data'] as $key => $value) { + + $fieldSchema = collect($schema)->firstWhere('name', $key); + + if (!$fieldSchema) { + throw new \Exception("Field '{$key}' is not defined in the schema."); + } + + if ($fieldSchema['type'] === 'file') { + $isMultiple = $fieldSchema['multiple'] ?? false; + + if ($isMultiple) { + $value = is_array($value) ? $value : [$value]; + $fileUrls = []; + + // Delete old files if they exist + if (isset($existingData[$key]) && is_array($existingData[$key])) { + foreach ($existingData[$key] as $oldFile) { + $this->fileStorage->deleteFile($oldFile, true); + } + } + + // Store new files + foreach ($value as $index => $file) { + if ($file && is_file($file)) { + $fileUrls[] = $this->fileStorage->storeRecordFile( + $file, + $diseaseId, + $key . '-' . ($index + 1) + ); + } + } + + $existingData[$key] = $fileUrls; + } else { + // Single file handling + if (isset($existingData[$key])) { + // echo($existingData[$key]); + $this->fileStorage->deleteFile($existingData[$key], true); + } + + if (is_file($value)) { + $existingData[$key] = $this->fileStorage->storeRecordFile( + $value, + $diseaseId, + $key + ); + } else { + $existingData[$key] = null; // Clear the field if no new file is provided + } + } + } else { + // Non-file fields + $existingData[$key] = $value; + } + } + + $diseaseRecord->update([ + 'data' => $existingData, + ]); + + DB::commit(); + + LogActionService::logAction( + $userId, + 'edit', + 'DiseaseRecord', + $diseaseRecord->id, + [ + 'old' => $oldData, + 'new' => $diseaseRecord->toArray(), + 'changed_fields' => array_keys($data['data']) + ], + "Updated disease record ID: {$recordId}", + true + ); + return [true, 'Disease record updated successfully.', $diseaseRecord->toArray()]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'edit', + 'DiseaseRecord', + $recordId, + [ + 'attempted_changes' => array_keys($data['data']), + 'error' => $exception->getMessage() + ], + "Failed to update disease record: {$exception->getMessage()}", + false + ); + + return [false, 'Disease record update failed: ' . $exception->getMessage(), []]; + } + } + + public function deleteDiseaseRecord($recordId, $userId): array + { + try { + DB::beginTransaction(); + $diseaseRecord = DiseaseRecord::find($recordId); + $diseaseId = $diseaseRecord->disease_id; + + if (!$diseaseRecord) { + DB::rollBack(); + LogActionService::logAction( + $userId, + 'delete', + 'Disease', + $recordId, + ['error' => 'Disease Record not found'], + "Failed to delete disease record: Disease Record not found", + false + ); + return [false, 'Disease Record not found.', []]; + } + + $recordInfo = [ + 'disease_id' => $diseaseId, + 'data_fields' => array_keys($diseaseRecord->data), + 'file_count' => collect($diseaseRecord->data) + ->flatten() + ->filter(function($value) { + return is_string($value) && file_exists(storage_path("app/public/{$value}")); + }) + ->count() + ]; + + [$schema, $message] = $this->diseaseService->getSchemaField($diseaseId); + $recordData = $diseaseRecord->data; + + $this->deleteRecordFiles($recordData, $schema); + + $diseaseRecord->delete(); + + DB::commit(); + + LogActionService::logAction( + $userId, + 'delete', + 'DiseaseRecord', + $recordId, + $recordInfo, + "Deleted disease record ID: {$recordId}", + true + ); + return [true, 'Disease record deleted successfully.', []]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'delete', + 'DiseaseRecord', + $recordId, + ['error' => $exception->getMessage()], + "Failed to delete disease record: {$exception->getMessage()}", + false + ); + + return [false, 'Disease record deletion failed: ' . $exception->getMessage(), []]; + } + } + + private function transformFileFields(array $data, array $schema): array + { + foreach ($schema as $field) { + // print_r($field); + if ($field['type'] === 'file' && isset($data[$field['name']])) { + // Handle single file + if (empty($field['multiple'])) { + $data[$field['name']] = $this->generatePublicFileUrl($data[$field['name']]); + } else { + // Handle multiple files + $data[$field['name']] = array_map(function ($filePath) { + return $this->generatePublicFileUrl($filePath); + }, $data[$field['name']]); + } + } + } + + return $data; + } + + + /** + * Generate a public URL for a given file path. + */ + private function generatePublicFileUrl(string $filePath): string + { + return Storage::url('public/' . $filePath); + //return asset('storage/' . $filePath); + } + + public function getDiseaseRecords($diseaseId, array $filters) + { + try { + [$schema, $message] = $this->diseaseService->getSchemaField($diseaseId); + + $disease = Disease::findOrFail($diseaseId); + + if (empty($schema)) { + if ($message === 'Access denied. This disease is private.'){ + return [false, 'Cant Access Private Disease', []]; + } + return [false, 'Schema not found for this disease.', []]; + } + + $query = $this->buildDiseaseRecordQuery($diseaseId, $filters); + $paginatedData = $this->paginateResults($query, $filters); + + // Check if records exist and transform them + $records = !empty($paginatedData['records']) + ? array_map(function ($record) use ($schema) { + $record['data'] = $this->transformFileFields($record['data'], $schema); + return $record; + }, $paginatedData['records']) + : []; + + $response = [ + 'name' => $disease['name'], + 'deskripsi' => $disease['deskripsi'], + 'schema' => $schema, + 'export_url' => $disease->export_url, + 'records' => $records, + 'pagination' => $paginatedData['pagination'] + ]; + + + + return [true, 'Disease records retrieved successfully.', $response]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve disease records: ' . $exception->getMessage(), []]; + } + } + + + public function getDiseaseRecordDetails($diseaseId, $recordId): array + { + try { + [$schema, $message] = $this->diseaseService->getSchemaField($diseaseId); + + if (empty($schema)) { + return [false, 'Schema not found for this disease.', []]; + } + + $record = DiseaseRecord::where('disease_id', $diseaseId) + ->where('id', $recordId) + ->firstOrFail(); + + // Transform file fields in the record + $record->data = $this->transformFileFields($record->data, $schema); + + $response = [ + 'schema' => $schema, + 'record' => $record->toArray(), + ]; + + return [true, 'Disease record details retrieved successfully.', $response]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve disease record details: ' . $exception->getMessage(), []]; + } + } + + private function buildDiseaseRecordQuery(int $diseaseId, array $filters): Builder + { + $query = DiseaseRecord::where('disease_id', $diseaseId); + + // $this->applyDiseaseRecordFilters($query, $filters); + if(!empty($filters['order_by'])){ + if($filters['order_by'] === 'desc'){ + $query->orderBy('created_at', 'desc'); + }else if($filters['order_by'] === 'desc'){ + $query->orderBy('created_at', 'asc'); + } + } + + $query->orderBy('updated_at', 'desc'); + + return $query; + } + + private function paginateResults(Builder $query, array $filters): array + { + $perPage = isset($filters['per_page']) && + is_numeric($filters['per_page']) && + $filters['per_page'] > 0 && + $filters['per_page'] <= self::MAX_PER_PAGE + ? (int) $filters['per_page'] + : self::DEFAULT_PER_PAGE; + + $page = isset($filters['page']) && + is_numeric($filters['page']) && + $filters['page'] > 0 + ? (int) $filters['page'] + : 1; + + $results = $query->paginate($perPage, ['*'], 'page', $page); + + if ($results->isEmpty() && $results->currentPage() > 1) { + $results = $query->paginate($perPage, ['*'], 'page', $results->lastPage()); + } + + return [ + 'records' => $results->items(), + 'pagination' => [ + 'current_page' => $results->currentPage(), + 'last_page' => $results->lastPage(), + 'per_page' => (int) $results->perPage(), + 'total' => $results->total(), + 'from' => $results->firstItem(), + 'to' => $results->lastItem(), + 'has_more_pages' => $results->hasMorePages(), + ] + ]; + } + + private function isFileArray(array $value): bool + { + return count(array_filter($value, function ($item) { + return is_object($item) && method_exists($item, 'getClientOriginalExtension'); + })) > 0; + } + + public function deleteRecordFiles(array $data, array $schema): void + { + foreach ($data as $key => $value) { + $fieldSchema = collect($schema)->firstWhere('name', $key); + + // Only proceed if this is a file field + if ($fieldSchema && $fieldSchema['type'] === 'file') { + if (is_array($value)) { + // Multiple files + foreach ($value as $filePath) { + $this->fileStorage->deleteFile($filePath, true); + } + } elseif (is_string($value)) { + // Single file + $this->fileStorage->deleteFile($value, true); + } + } + } + } +} diff --git a/app/Services/DiseaseService.php b/app/Services/DiseaseService.php new file mode 100644 index 0000000..b278936 --- /dev/null +++ b/app/Services/DiseaseService.php @@ -0,0 +1,414 @@ +fileStorage = $fileStorage; + } + + + public function createDisease(array $data, $userId): array + { + try { + DB::beginTransaction(); + + $image_url = null; + if (isset($data['cover_page']) && $data['cover_page']) { + $disease = Disease::create([ + 'name' => $data['name'], + 'deskripsi' => $data['deskripsi'], + 'visibilitas' => $data['visibilitas'], + 'schema' => $data['schema'], + 'cover_page' => null, + ]); + + $image_url = $this->fileStorage->storeCoverImage($data['cover_page'], $disease->id); + + $disease->update(['cover_page' => $image_url]); + } else { + $disease = Disease::create([ + 'name' => $data['name'], + 'deskripsi' => $data['deskripsi'], + 'visibilitas' => $data['visibilitas'], + 'schema' => $data['schema'], + 'cover_page' => null, + ]); + } + + DB::commit(); + + LogActionService::logAction( + $userId, + 'create', + 'Disease', + $disease->id, + $disease->toArray(), + "Created disease: {$disease->name}", + true + ); + + return [true, 'Disease created successfully.', $disease->toArray()]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'create', + 'Disease', + null, + [ + 'name' => $data['name'] ?? null, + 'error' => $exception->getMessage() + ], + "Failed to create disease: {$exception->getMessage()}", + false + ); + + return [false, 'Disease creation failed: ' . $exception->getMessage(), []]; + } + } + + public function editDisease($id, array $data, $userId): array + { + try { + // var_dump($data); + DB::beginTransaction(); + + $disease = Disease::find($id); + if (!$disease) { + DB::rollBack(); + LogActionService::logAction( + $userId, + 'edit', + 'Disease', + $id, + ['error' => 'Disease not found'], + "Failed to edit disease: Disease not found", + false + ); + return [false, 'Disease not found.', []]; + } + + $oldData = $disease->toArray(); + + if (isset($data['cover_page']) && $data['cover_page']) { + if ($disease->cover_page) { + $this->fileStorage->deleteFile($disease->cover_page, true); + } + + $data['cover_page'] = $this->fileStorage->storeCoverImage($data['cover_page'], $disease->id); + } else { + unset($data['cover_page']); + } + + $changedFields = array_keys(array_diff_assoc($data, $oldData)); + + // Get only the values that are actually changing + $relevantOldData = array_intersect_key($oldData, $data); + $relevantNewData = array_intersect_key($data, $oldData); + + $disease->update($data); + DB::commit(); + + LogActionService::logAction( + $userId, + 'edit', + 'Disease', + $disease->id, + [ + 'old' => $relevantOldData, + 'new' => $relevantNewData, + 'changed_fields' => $changedFields + ], + "Updated disease: {$disease->name}", + true + ); + + return [true, 'Disease updated successfully.', $disease]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'edit', + 'Disease', + $id, + [ + 'attempted_changes' => array_keys($data), + 'error' => $exception->getMessage() + ], + "Failed to update disease: {$exception->getMessage()}", + false + ); + return [false, 'Disease update failed: ' . $exception->getMessage(), []]; + } + } + + + public function deleteDisease($id, $userId): array + { + try { + DB::beginTransaction(); + $disease = Disease::find($id); + if (!$disease) { + DB::rollBack(); + LogActionService::logAction( + $userId, + 'delete', + 'Disease', + $id, + ['error' => 'Disease not found'], + "Failed to delete disease: Disease not found", + false + ); + return [false, 'Disease not found.', []]; + } + + $diseaseInfo = [ + 'name' => $disease->name, + 'had_cover_page' => !is_null($disease->cover_page), + 'schema_columns_count' => count($disease->schema['columns'] ?? []) + ]; + + if ($disease->cover_page) { + $this->fileStorage->deleteFile($disease->cover_page, true); + } + + $directoryPath = "diseases/records/$id"; + $this->fileStorage->deleteDirectory($directoryPath, true); + + $disease->delete(); + + DB::commit(); + LogActionService::logAction( + $userId, + 'delete', + 'Disease', + $id, + $diseaseInfo, + "Deleted disease: {$disease->name}", + true + ); + return [true, 'Disease deleted successfully.', []]; + } catch (\Throwable $exception) { + DB::rollBack(); + + LogActionService::logAction( + $userId, + 'delete', + 'Disease', + $id, + ['error' => $exception->getMessage()], + "Failed to delete disease: {$exception->getMessage()}", + false + ); + return [false, 'Disease deletion failed: ' . $exception->getMessage(), []]; + } + } + + public function getDisease(array $filters, $user): array + { + try { + $query = Disease::query(); + $query->withCount('diseaseRecords'); + + if ($user->role === 'operator') { + $query->where('id', $user->disease_id); + } elseif ($user->role === 'peneliti') { + $query->where('visibilitas', 'publik'); + } + + $this->applyDiseaseFilters($query, $filters); + + $paginatedData = $this->paginateResults($query, $filters, 'diseases'); + + return [true, 'Diseases retrieved successfully.', $paginatedData]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve diseases: ' . $exception->getMessage(), []]; + } + } + + + public function getDiseaseDetails($id): array + { + try { + + $user = auth()->user(); + + $disease = Disease::withCount('diseaseRecords')->findOrFail($id); + + if (!$disease) { + return [false, 'Disease not found.', []]; + } + + // Admins can access all diseases + if ($user->role === 'admin') { + return [true, 'Disease details retrieved successfully.', $disease]; + } + + // Operators can only access their assigned diseases + if ($user->role === 'operator') { + $managesDisease = $user->managed_diseases['disease_id']; + if ($managesDisease != $id) { + return [false, 'Access denied. You are not assigned to this disease.', []]; + } + } + + // Researchers can only access public diseases + if ($user->role === 'peneliti') { + if ($user->approval_status !== 'approved') { + return [false, 'Access denied. Your account is not approved.', []]; + } + if ($disease->visibilitas !== 'publik') { + return [false, 'Access denied. This disease is private.', []]; + } + } + + return [true, 'Disease details retrieved successfully.', $disease]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve disease details: ' . $exception->getMessage(), []]; + } + } + + public function getStatistics(array $filters): array + { + try { + $query = Disease::query(); + $query->withCount('diseaseRecords'); + + $this->applyDiseaseFilters($query, $filters); + + $diseases = $query->get(['id', 'name', 'disease_records_count']); + + $totalDiseaseRecords = $diseases->sum('disease_records_count'); + + $stats = [ + 'total_disease_records' => $totalDiseaseRecords, + 'diseases' => $diseases->map(function ($disease) { + return [ + 'id' => $disease->id, + 'name' => $disease->name, + 'disease_records_count' => $disease->disease_records_count, + ]; + }), + ]; + + return [true, 'Disease statistics retrieved successfully.', $stats]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve statistics: ' . $exception->getMessage(), []]; + } + } + + + public function getSchemaField(int $diseaseId): array + { + try { + [$success, $message, $disease] = $this->getDiseaseDetails($diseaseId); + + if (!$success) { + return [[], $message]; + } + + $schema = $disease->schema['columns'] ?? null; + + if (!$schema) { + return [[], $message]; + } + + $formattedSchema = []; + foreach ($schema as $column) { + $field = [ + 'name' => $column['name'] ?? null, + 'type' => $column['type'] ?? null, + ]; + + if ($field['type'] === 'file') { + $field['format'] = $column['format']; + + $field['multiple'] = isset($column['multiple']) ? (bool) $column['multiple'] : false; // Ensure multiple is set with default false + } + $field['is_visible'] = filter_var($column['is_visible'] ?? false, FILTER_VALIDATE_BOOLEAN); + + $formattedSchema[] = $field; + } + + return [$formattedSchema, 'Schema Retrieved Successfully']; + } catch (\Throwable $exception) { + return []; + } + } + + private function applyDiseaseFilters(Builder $query, array $filters): void + { + if (!empty($filters['visibilitas'])) { + $query->where('visibilitas', $filters['visibilitas']); + } + + if (!empty($filters['name'])) { + $query->where('name', 'ILIKE', '%' . trim($filters['name']) . '%'); + } + + if (!empty($filters['column_type'])) { + $query->whereJsonContains('schema->columns', ['type' => $filters['column_type']]); + } + + if (!empty($filters['column_name'])) { + $query->whereJsonContains('schema->columns', ['name' => $filters['column_name']]); + } + + //Sorting + $query->orderBy('updated_at', 'desc'); + } + + private function paginateResults(Builder $query, array $filters, string $itemsKey): array + { + $perPage = isset($filters['per_page']) && + is_numeric($filters['per_page']) && + $filters['per_page'] > 0 && + $filters['per_page'] <= self::MAX_PER_PAGE + ? (int) $filters['per_page'] + : self::DEFAULT_PER_PAGE; + + $page = isset($filters['page']) && + is_numeric($filters['page']) && + $filters['page'] > 0 + ? (int) $filters['page'] + : 1; + + $results = $query->paginate($perPage, ['*'], 'page', $page); + + if ($results->isEmpty() && $results->currentPage() > 1) { + $results = $query->paginate($perPage, ['*'], 'page', $results->lastPage()); + } + + return [ + $itemsKey => $results->items(), + 'pagination' => [ + 'current_page' => $results->currentPage(), + 'last_page' => $results->lastPage(), + 'per_page' => (int) $results->perPage(), + 'total' => $results->total(), + 'from' => $results->firstItem(), + 'to' => $results->lastItem(), + 'has_more_pages' => $results->hasMorePages(), + ] + ]; + } +} diff --git a/app/Services/FileStorageService.php b/app/Services/FileStorageService.php new file mode 100644 index 0000000..6942540 --- /dev/null +++ b/app/Services/FileStorageService.php @@ -0,0 +1,73 @@ +getClientOriginalExtension(); + } + + $baseDirectory = $isPublic ? "public/$directory" : $directory; + $path = $file->storeAs($baseDirectory, $filename); + + return $isPublic ? str_replace('public/', '', $path) : $path; + } + + public function storeCoverImage($file, int $diseaseId): string + { + $filename = "disease-{$diseaseId}-cover." . $file->getClientOriginalExtension(); + return $this->storeFile($file, 'diseases/covers', $filename, true); + } + + public function storeRecordFile($file, int $diseaseId, string $fieldName): string + { + $filename = Str::slug($fieldName) . '-' . time() . '.' . $file->getClientOriginalExtension(); + return $this->storeFile($file, "diseases/records/$diseaseId", $filename, true); + } + + public function deleteFile(?string $path, bool $isPublic = false): bool + { + if (!$path) return true; + + $fullPath = $isPublic ? 'public/' . $path : $path; + return Storage::delete($fullPath); + } + + public function streamFile(string $filePath): StreamedResponse + { + return response()->streamDownload(function () use ($filePath) { + $stream = fopen(storage_path('app/' . $filePath), 'rb'); + if ($stream) { + fpassthru($stream); + fclose($stream); + } else { + abort(404, 'File not found'); + } + }, basename($filePath)); + } + + public function deleteDirectory(string $directory, bool $isPublic = false): bool + { + $fullPath = $isPublic ? 'public/' . $directory : $directory; + + $fullPathResolved = realpath(storage_path('app/' . $fullPath)); + $allowedDirectory = realpath(storage_path('app/diseases/')); + + if (strpos($fullPathResolved, $allowedDirectory) !== 0) { + throw new \Exception('Directory traversal attempt detected!'); + } + + if(Storage::exists($fullPath)){ + Storage::deleteDirectory($fullPath); + } + + return !Storage::exists($fullPath); + } +} \ No newline at end of file diff --git a/app/Services/LogActionService.php b/app/Services/LogActionService.php new file mode 100644 index 0000000..4c960be --- /dev/null +++ b/app/Services/LogActionService.php @@ -0,0 +1,125 @@ + $userId, + 'action' => $action, + 'model' => $model, + 'model_id' => $modelId, + 'changes' => $changes ? json_encode($changes) : null, + 'description' => $description, + 'timestamp' => now(), + 'is_success' => $success, + ]); + } catch (\Exception $e) { + LogFacade::info('Error inserting log: ' . $e->getMessage()); + throw $e; // or handle it gracefully + } + } + + public function getLogs(array $filters = []): array + { + try { + $query = Log::query(); + $query->with(['user:id,name,role,email']); + + $this->applyLogFilters($query, $filters); + + $paginatedData = $this->paginateResults($query, $filters, 'logs'); + + return [true, 'Logs retrieved successfully.', $paginatedData]; + } catch (\Throwable $exception) { + return [false, 'Failed to retrieve logs: ' . $exception->getMessage(), []]; + } + } + + private function applyLogFilters(Builder $query, array $filters): void + { + if (!empty($filters['user_id'])) { + $query->where('user_id', $filters['user_id']); + } + + if (!empty($filters['action'])) { + $query->where('action', $filters['action']); + } + + if (!empty($filters['model'])) { + $query->where('model', $filters['model']); + } + + if (!empty($filters['date_from'])) { + $query->whereDate('timestamp', '>=', $filters['date_from']); + } + + if (!empty($filters['date_to'])) { + $query->whereDate('timestamp', '<=', $filters['date_to']); + } + + if (isset($filters['is_success'])) { + + $query->where('is_success', $filters['is_success']); + // $successFilter = filter_var($filters['is_success'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); + // if (!is_null($successFilter)) { + // $query->where('is_success', $successFilter); + // } + } + + // Default sorting by timestamp + $query->orderBy('timestamp', 'desc'); + } + + private function paginateResults(Builder $query, array $filters, string $itemsKey): array + { + $perPage = isset($filters['per_page']) && + is_numeric($filters['per_page']) && + $filters['per_page'] > 0 && + $filters['per_page'] <= self::MAX_PER_PAGE + ? (int)$filters['per_page'] + : self::DEFAULT_PER_PAGE; + + $page = isset($filters['page']) && + is_numeric($filters['page']) && + $filters['page'] > 0 + ? (int)$filters['page'] + : 1; + + $results = $query->paginate($perPage, ['*'], 'page', $page); + + if ($results->isEmpty() && $results->currentPage() > 1) { + $results = $query->paginate($perPage, ['*'], 'page', $results->lastPage()); + } + + return [ + $itemsKey => $results->items(), + 'pagination' => [ + 'current_page' => $results->currentPage(), + 'last_page' => $results->lastPage(), + 'per_page' => (int)$results->perPage(), + 'total' => $results->total(), + 'from' => $results->firstItem(), + 'to' => $results->lastItem(), + 'has_more_pages' => $results->hasMorePages(), + ] + ]; + } + +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..2b7df71 --- /dev/null +++ b/composer.json @@ -0,0 +1,69 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], + "license": "MIT", + "require": { + "php": "^8.1", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^10.0", + "laravel/sanctum": "^3.3", + "laravel/tinker": "^2.8" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "jn-jairo/laravel-ngrok": "^3.0", + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.0", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + }, + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..fba9bbc --- /dev/null +++ b/composer.lock @@ -0,0 +1,8198 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "a3363c699c615881dcc27ee8aa0a214a", + "packages": [ + { + "name": "brick/math", + "version": "0.12.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "5.16.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.12.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-11-29T23:19:16+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2024-07-24T11:22:20+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2024-10-17T10:06:22+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2024-07-18T11:15:46+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.48.22", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.23.4", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-09-12T15:00:09+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.25", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.25" + }, + "time": "2024-08-12T22:06:33+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-12-19T18:44:48+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2024-09-23T13:33:08+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.10.0" + }, + "time": "2024-09-23T13:32:56+00:00" + }, + { + "name": "league/commonmark", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2024-08-16T11:46:16+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.29.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + }, + "time": "2024-10-08T08:58:34+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.29.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + }, + "time": "2024-08-09T21:24:39+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.7.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-06-28T09:40:51+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.5", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2024-06-03T19:18:41+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.4" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.2" + }, + "time": "2024-10-06T23:10:23+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.5", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.5" + }, + "time": "2024-08-07T15:39:19+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.3.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + }, + "time": "2024-10-08T18:51:32+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.16.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", + "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.4.12" + }, + "require-dev": { + "illuminate/console": "^10.48.22", + "illuminate/support": "^10.48.22", + "laravel/pint": "^1.18.1", + "pestphp/pest": "^2", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.11", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.16.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-10-15T15:27:12+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.4", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" + }, + "time": "2024-06-10T01:18:23+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:15:52+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-07-26T12:30:32+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-08-13T14:27:37+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "133ac043875f59c26c55e79cf074562127cce4d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/133ac043875f59c26c55e79cf074562127cce4d2", + "reference": "133ac043875f59c26c55e79cf074562127cce4d2", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:18:25+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "96df83d51b5f78804f70c093b97310794fd6257b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/96df83d51b5f78804f70c093b97310794fd6257b", + "reference": "96df83d51b5f78804f70c093b97310794fd6257b", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-21T06:02:57+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b6a25408c569ae2366b3f663a4edad19420a9c26", + "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-08T12:30:05+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "abe16ee7790b16aa525877419deb0f113953f0e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/abe16ee7790b16aa525877419deb0f113953f0e1", + "reference": "abe16ee7790b16aa525877419deb0f113953f0e1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:18:25+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-17T12:47:12+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/a7c8036bd159486228dc9be3e846a00a0dda9f9f", + "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:32:26+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/string", + "version": "v7.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:28:38+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "cf8360b8352b086be620fae8342c4d96e391a489" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/cf8360b8352b086be620fae8342c4d96e391a489", + "reference": "cf8360b8352b086be620fae8342c4d96e391a489", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-16T06:02:54+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d", + "reference": "2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:32:26+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-08-30T16:03:21+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:52:34+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "filp/whoops", + "version": "2.16.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.16.0" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2024-09-25T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "jn-jairo/laravel-ngrok", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/jn-jairo/laravel-ngrok.git", + "reference": "6bfe611dbfb06759d1e43e1de08298a9592961d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jn-jairo/laravel-ngrok/zipball/6bfe611dbfb06759d1e43e1de08298a9592961d0", + "reference": "6bfe611dbfb06759d1e43e1de08298a9592961d0", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.5.8|^7.4.5", + "illuminate/console": "^8.83|^9.0|^10.0|^11.0", + "illuminate/http": "^8.83|^9.0|^10.0|^11.0", + "illuminate/pagination": "^8.83|^9.0|^10.0|^11.0", + "illuminate/routing": "^8.83|^9.0|^10.0|^11.0", + "illuminate/support": "^8.83|^9.0|^10.0|^11.0", + "php": "^8.1", + "symfony/process": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^6.24|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.22|^2.34", + "phpspec/prophecy": "^1.17", + "phpspec/prophecy-phpunit": "^2.0", + "webmozart/assert": "^1.11" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "JnJairo\\Laravel\\Ngrok\\NgrokServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "JnJairo\\Laravel\\Ngrok\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jairo Correa", + "email": "jn.j41r0@gmail.com" + } + ], + "description": "Share Laravel application with ngrok.", + "homepage": "https://github.com/jn-jairo/laravel-ngrok", + "keywords": [ + "jn-jairo", + "laravel-ngrok" + ], + "support": { + "issues": "https://github.com/jn-jairo/laravel-ngrok/issues", + "source": "https://github.com/jn-jairo/laravel-ngrok/tree/v3.0.2" + }, + "time": "2024-03-14T23:34:46+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", + "larastan/larastan": "^2.9.8", + "laravel-zero/framework": "^10.4.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.35.1" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2024-09-24T17:22:50+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.36.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "f184d3d687155d06bc8cb9ff6dc48596a138460c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/f184d3d687155d06bc8cb9ff6dc48596a138460c", + "reference": "f184d3d687155d06bc8cb9ff6dc48596a138460c", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2024-10-10T13:26:02+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/994ea93df5d4132f69d3f1bd74730509df6e8a05", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.4.12" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.1", + "laravel/framework": "^10.48.22", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^3.3.3", + "laravel/tinker": "^2.10.0", + "nunomaduro/larastan": "^2.9.8", + "orchestra/testbench-core": "^8.28.3", + "pestphp/pest": "^2.35.1", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "spatie/laravel-ignition": "^2.8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-10-15T15:12:40+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.16", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:31:57+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.5.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.2", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.36" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-10-08T15:36:51+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-18T14:56:07+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:15:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:17:12+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.6.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.6.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2024-07-22T08:21:24+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0", + "illuminate/cache": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "livewire/livewire": "^2.11|^3.3.5", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "^7.0|8.22.3|^9.0", + "pestphp/pest": "^2.20", + "phpstan/phpstan": "^1.11", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.1" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2024-07-25T11:06:04+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "php": "^8.0", + "spatie/backtrace": "^1.6.1", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/pest-plugin-snapshots": "^1.0|^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.8.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-08-01T08:27:26+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-06-12T14:55:22+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3c067b75bfb50574db8f7e2c3978c65eed71126c", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/ignition": "^1.15", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "8.22.3|^9.0", + "pestphp/pest": "^2.34", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.16", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-06-12T15:01:18+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4e561c316e135e053bd758bf3b3eb291d9919de4", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-17T12:49:58+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..96c703f --- /dev/null +++ b/config/app.php @@ -0,0 +1,217 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', '/'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'ExampleClass' => App\Example\ExampleClass::class, + ])->toArray(), + + 'api_key' => env('API_KEY'), + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..cae0028 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..9e4d4aa --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,70 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..33bb295 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,110 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..bcd3be4 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..5aa1dbb --- /dev/null +++ b/config/logging.php @@ -0,0 +1,122 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..049052f --- /dev/null +++ b/config/mail.php @@ -0,0 +1,124 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..25ea5a8 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,93 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 0000000..529cfdc --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..8fed97c --- /dev/null +++ b/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..d4e8835 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,40 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + * + * @return $this + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..ec1d15d --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,41 @@ +id(); + $table->string('name', 100); + $table->string('email', 100)->unique(); + $table->string('password'); + $table->string('institution', 100)->nullable(); + $table->enum('gender', ['male', 'female', 'prefer not to say'])->default('prefer not to say')->nullable(); + $table->string('phone_number', 50)->nullable(); + $table->text('tujuan_permohonan')->nullable(); + $table->enum('role', ['admin', 'operator', 'peneliti'])->default('peneliti'); + $table->enum('approval_status', ['pending', 'approved', 'rejected'])->default('pending'); + $table->rememberToken(); + $table->timestamps(); + }); + + (new AdminUserSeeder())->run(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2024_10_22_062900_create_api_keys_table.php b/database/migrations/2024_10_22_062900_create_api_keys_table.php new file mode 100644 index 0000000..7ad3b3f --- /dev/null +++ b/database/migrations/2024_10_22_062900_create_api_keys_table.php @@ -0,0 +1,29 @@ +id(); + $table->string('key')->unique(); + $table->string('description')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('api_keys'); + } +}; diff --git a/database/migrations/2024_10_31_021621_create_diseases_table.php b/database/migrations/2024_10_31_021621_create_diseases_table.php new file mode 100644 index 0000000..a71305a --- /dev/null +++ b/database/migrations/2024_10_31_021621_create_diseases_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->text('deskripsi'); + $table->enum('visibilitas', ['publik', 'privat'])->default('publik'); + $table->jsonb('schema'); + $table->string('cover_page')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('diseases'); + } +}; diff --git a/database/migrations/2024_10_31_025127_create_disease_operator_table.php b/database/migrations/2024_10_31_025127_create_disease_operator_table.php new file mode 100644 index 0000000..1ed9c98 --- /dev/null +++ b/database/migrations/2024_10_31_025127_create_disease_operator_table.php @@ -0,0 +1,29 @@ +id(); + $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->foreignId('disease_id')->constrained()->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('disease_operator'); + } +}; diff --git a/database/migrations/2024_11_11_131248_create_disease_records_table.php b/database/migrations/2024_11_11_131248_create_disease_records_table.php new file mode 100644 index 0000000..da1b977 --- /dev/null +++ b/database/migrations/2024_11_11_131248_create_disease_records_table.php @@ -0,0 +1,29 @@ +id(); + $table->foreignId('disease_id')->constrained()->onDelete('cascade'); + $table->jsonb('data'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('disease_records'); + } +}; diff --git a/database/migrations/2024_11_12_094947_add_is_primary_admin_to_users_table.php b/database/migrations/2024_11_12_094947_add_is_primary_admin_to_users_table.php new file mode 100644 index 0000000..64f8c04 --- /dev/null +++ b/database/migrations/2024_11_12_094947_add_is_primary_admin_to_users_table.php @@ -0,0 +1,25 @@ +boolean('is_primary_admin')->default(false); + }); + } + + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('is_primary_admin'); + }); + } +}; diff --git a/database/migrations/2024_11_20_054955_create_logs_table.php b/database/migrations/2024_11_20_054955_create_logs_table.php new file mode 100644 index 0000000..28afb31 --- /dev/null +++ b/database/migrations/2024_11_20_054955_create_logs_table.php @@ -0,0 +1,35 @@ +id(); + $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->string('action'); + $table->string('model')->nullable(); + $table->unsignedBigInteger('model_id')->nullable(); + $table->text('changes')->nullable(); + $table->string('description')->nullable(); + $table->timestamp('timestamp')->useCurrent(); + $table->boolean('is_success'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('logs'); + } +}; diff --git a/database/migrations/2024_11_20_133119_create_comments_table.php b/database/migrations/2024_11_20_133119_create_comments_table.php new file mode 100644 index 0000000..e5f161d --- /dev/null +++ b/database/migrations/2024_11_20_133119_create_comments_table.php @@ -0,0 +1,27 @@ +id(); + $table->foreignId('disease_id')->constrained()->onDelete('cascade'); + $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->text('content')->nullable(); // Allow null for deleted comments + $table->foreignId('parent_id')->nullable()->constrained('comments')->nullOnDelete(); + $table->enum('status', ['active', 'deleted'])->default('active'); // Add status column + $table->softDeletes(); // Add soft deletes + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('comments'); + } +} diff --git a/database/seeders/AddPrimaryAdmin.php b/database/seeders/AddPrimaryAdmin.php new file mode 100644 index 0000000..e1c2e67 --- /dev/null +++ b/database/seeders/AddPrimaryAdmin.php @@ -0,0 +1,22 @@ +first(); + if ($user && !$user->is_primary_admin) { + $user->is_primary_admin = true; + $user->save(); + } + } +} diff --git a/database/seeders/AdminUserSeeder.php b/database/seeders/AdminUserSeeder.php new file mode 100644 index 0000000..c20d2f3 --- /dev/null +++ b/database/seeders/AdminUserSeeder.php @@ -0,0 +1,32 @@ +exists()) { + $user = User::create([ + 'name' => 'Admin User', + 'email' => env('ADMIN_DEFAULT_EMAIL', 'admin@example.com'), + 'password' => Hash::make(env('ADMIN_DEFAULT_PASSWORD', 'password')), + 'role' => 'admin', + 'approval_status' => 'approved', + ]); + + $user->save(); + } + } +} \ No newline at end of file diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..d482b34 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,30 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + + $this->call([ + //AdminUserSeeder::class, + DiseaseSeeder::class, + DiseaseRecordSeeder::class, + AddPrimaryAdmin::class, + // other seeders here + ]); + } +} diff --git a/database/seeders/DiseaseRecordSeeder.php b/database/seeders/DiseaseRecordSeeder.php new file mode 100644 index 0000000..5cc9b0e --- /dev/null +++ b/database/seeders/DiseaseRecordSeeder.php @@ -0,0 +1,105 @@ + ['path' => 'diseases/samples/example1.wav', 'mime' => 'audio/wav'], + 'example2.wav' => ['path' => 'diseases/samples/example2.wav', 'mime' => 'audio/wav'], + ]; + + public function run() + { + // Create the diseases/records directory if it doesn't exist + Storage::makeDirectory('diseases/records'); + + $this->storeSampleFiles(); + + $diseases = Disease::all(); + + foreach ($diseases as $disease) { + $records = []; + + // Loop to create records for the disease + for ($i = 0; $i < 1000; $i++) { + $recordData = $this->generateRecordData($disease->name, $i, $disease->id); + + $records[] = [ + 'disease_id' => $disease->id, + 'data' => json_encode($recordData), + 'created_at' => now(), + 'updated_at' => now(), + ]; + } + + // Insert all disease records in batch + DiseaseRecord::insert($records); + } + } + + private function generateRecordData($diseaseName, $index, $diseaseId) + { + $basePath = "diseases/records/$diseaseId"; + + // Use the same file name for all records + $commonFile1 = 'example1.wav'; // This is the same for all records + $commonFile2 = 'example2.wav'; // This is the same for all records + + return match($diseaseName) { + 'Arrhythmia' => [ + 'record' => 'Record_' . $index, + 'annotations' => 'Annotation_' . $index, + 'jenis' => collect(['Type1', 'Type2'])->random(), + 'signals' => 'Signal_' . $index, + 'durasi' => rand(5, 20) + (rand(0, 99) / 100), + 'tanggal_tes' => Carbon::now()->subDays(rand(0, 365))->toDateString(), + 'file_detak_jantung' => "$basePath/$commonFile1", // Same file for all records + ], + 'Myocardial' => [ + 'nama_pasien' => 'Patient_' . $index, + 'umur' => rand(30, 70), + 'jenis_kelamin' => collect(['Male', 'Female'])->random(), + 'tanggal_lahir' => Carbon::now()->subYears(rand(30, 70))->toDateString(), + 'tempat_tes' => 'Hospital_' . rand(1, 10), + 'tanggal_tes' => Carbon::now()->subDays(rand(0, 365))->toDateString(), + 'record_data' => ["$basePath/$commonFile1", "$basePath/$commonFile2"], // Same file for all records + ], + default => [], + }; + } + + + private function storeSampleFiles() + { + // Manually assign the file paths to different disease IDs + $diseaseRecords = [ + 1 => ['example1.wav'], // Store example1.wav for disease_id 1 + 2 => ['example1.wav', 'example2.wav'], // Store both example1.wav and example2.wav for disease_id 2 + ]; + + foreach ($diseaseRecords as $diseaseId => $files) { + $basePath = "public/diseases/records/$diseaseId"; // Dynamic path based on disease_id + Storage::makeDirectory($basePath); // Ensure the disease-specific record directory exists + + foreach ($files as $filename) { + $sourcePath = database_path('seeders/samples/' . $filename); + + if (file_exists($sourcePath)) { + // Store the file under the disease's records folder + Storage::put("$basePath/$filename", file_get_contents($sourcePath)); + } else { + // Handle case where file doesn't exist (use placeholder) + Storage::put("$basePath/$filename", 'Sample file content for ' . $filename); + } + } + } + } + +} diff --git a/database/seeders/DiseaseSeeder.php b/database/seeders/DiseaseSeeder.php new file mode 100644 index 0000000..2147260 --- /dev/null +++ b/database/seeders/DiseaseSeeder.php @@ -0,0 +1,65 @@ + 'Arrhythmia', + 'deskripsi' => 'A condition where the heart beats with an irregular or abnormal rhythm.', + 'visibilitas' => 'publik', + 'schema' => [ + "columns" => [ + ["name" => "record", "type" => "string", "is_visible" => true], + ["name" => "annotations", "type" => "string", "is_visible" => true], + ["name" => "jenis", "type" => "string", /*"options" => ["Type1", "Type2"]*/ "is_visible" => true], + ["name" => "signals", "type" => "string", "is_visible" => true], + ["name" => "durasi", "type" => "decimal", "is_visible" => true], + ["name" => "tanggal_tes", "type" => "datetime", "is_visible" => true], + ["name" => "file_detak_jantung", "type" => "file", "format" => "audio"] + ] + ], + 'cover_page' => null, + ], + [ + 'name' => 'Myocardial', + 'deskripsi' => 'A condition related to heart muscle injury or damage.', + 'visibilitas' => 'publik', + 'schema' => [ + "columns" => [ + ["name" => "nama_pasien", "type" => "string", "is_visible" => true], + ["name" => "umur", "type" => "integer", "is_visible" => true], + ["name" => "jenis_kelamin", "type" => "string", /*"options" => ["Male", "Female"]*/ "is_visible" => true], + ["name" => "tanggal_lahir", "type" => "date", "is_visible" => true], + ["name" => "tempat_tes", "type" => "string", "is_visible" => true], + ["name" => "tanggal_tes", "type" => "datetime", "is_visible" => true], + ["name" => "record_data", "type" => "file", "format" => "audio", "multiple" => 1] + ] + ], + 'cover_page' => null, + ] + ]; + + foreach ($diseases as $disease) { + $createdDisease = Disease::create($disease); + + $imageName = Str::slug($disease['name']) . '.jpg'; + $sourcePath = database_path('seeders/images/' . $imageName); + + if (file_exists($sourcePath)) { + $destinationPath = "diseases/covers/disease-{$createdDisease->id}-cover.jpg"; + Storage::put('public/' . $destinationPath, file_get_contents($sourcePath)); + $createdDisease->update(['cover_page' => $destinationPath]); + } + } + } +} diff --git a/database/seeders/images/arrhythmia.jpg b/database/seeders/images/arrhythmia.jpg new file mode 100644 index 0000000..2e0a507 Binary files /dev/null and b/database/seeders/images/arrhythmia.jpg differ diff --git a/database/seeders/images/myocardial.jpg b/database/seeders/images/myocardial.jpg new file mode 100644 index 0000000..97d0354 Binary files /dev/null and b/database/seeders/images/myocardial.jpg differ diff --git a/database/seeders/samples/example1.wav b/database/seeders/samples/example1.wav new file mode 100644 index 0000000..3179e0e Binary files /dev/null and b/database/seeders/samples/example1.wav differ diff --git a/database/seeders/samples/example2.wav b/database/seeders/samples/example2.wav new file mode 100644 index 0000000..ce9ff0d Binary files /dev/null and b/database/seeders/samples/example2.wav differ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4ed8035 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,61 @@ +services: + # ========================================== + # 1. Laravel Application (PHP-FPM) + # ========================================== + app: + build: + context: . + dockerfile: docker/Dockerfile + restart: unless-stopped + environment: + APP_NAME: ${APP_NAME:-Laravel} + APP_ENV: ${APP_ENV:-production} + APP_KEY: ${APP_KEY} + APP_DEBUG: ${APP_DEBUG:-false} + APP_URL: ${APP_URL} + + DB_CONNECTION: pgsql + DB_HOST: db + DB_PORT: 5432 + + DB_DATABASE: ${DB_DATABASE} + DB_USERNAME: ${DB_USERNAME} + DB_PASSWORD: ${DB_PASSWORD} + volumes: + - public_files:/var/www/html/public + depends_on: + - db + + # ========================================== + # 2. Web Server (Custom Nginx) + # ========================================== + web: + build: + context: . + dockerfile: docker/nginx.Dockerfile + restart: unless-stopped + expose: + - "80" + volumes: + - public_files:/var/www/html/public:ro + depends_on: + - app + + # ========================================== + # 3. Database (Custom PostgreSQL) + # ========================================== + db: + build: + context: . + dockerfile: docker/postgres.Dockerfile + restart: unless-stopped + environment: + POSTGRES_DB: ${DB_DATABASE} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_PASSWORD: ${DB_PASSWORD} + volumes: + - db_data:/var/lib/postgresql/data + +volumes: + db_data: + public_files: diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..5cd578e --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,58 @@ +FROM node:20-alpine AS node-builder +WORKDIR /app +COPY package.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM composer:2.2 AS php-builder +WORKDIR /app +COPY composer*.json ./ +RUN composer install \ + --no-dev \ + --no-interaction \ + --no-plugins \ + --no-scripts \ + --prefer-dist +COPY . . +RUN composer dump-autoload --no-dev --optimize + +FROM php:8.2-fpm-alpine AS runtime +WORKDIR /var/www/html +RUN apk add --no-cache \ + libpng-dev \ + libjpeg-turbo-dev \ + freetype-dev \ + zip \ + libzip-dev \ + unzip \ + git \ + oniguruma-dev \ + postgresql-dev \ + $PHPIZE_DEPS \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install pdo pdo_pgsql mbstring zip exif pcntl gd opcache + +COPY docker/opcache.ini /usr/local/etc/php/conf.d/opcache.ini + +COPY --from=php-builder /app /var/www/html + +COPY --from=node-builder /app/public /var/www/html/public + +RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache \ + && chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache + +USER www-data + +EXPOSE 9000 +CMD ["php-fpm"] + +# FROM php:8.2-cli-alpine AS composer +# RUN apk add --no-cache unzip git && \ +# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ +# php composer-setup.php --install-dir=/usr/bin --filename=composer && \ +# php -r "unlink('composer-setup.php');" +# WORKDIR /app +# COPY composer.json composer.lock ./ +# RUN composer install --no-dev --optimize-autoloader --no-scripts + diff --git a/docker/humicpro_healthcare.sql b/docker/humicpro_healthcare.sql new file mode 100644 index 0000000..9c65972 --- /dev/null +++ b/docker/humicpro_healthcare.sql @@ -0,0 +1,3115 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.22 +-- Dumped by pg_dump version 9.6.22 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: api_keys; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.api_keys ( + id bigint NOT NULL, + key character varying(255) NOT NULL, + description character varying(255), + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone +); + + +ALTER TABLE public.api_keys OWNER TO humicpro_healthcare_user; + +-- +-- Name: api_keys_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.api_keys_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.api_keys_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: api_keys_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.api_keys_id_seq OWNED BY public.api_keys.id; + + +-- +-- Name: comments; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.comments ( + id bigint NOT NULL, + disease_id bigint NOT NULL, + user_id bigint NOT NULL, + content text, + parent_id bigint, + status character varying(255) DEFAULT 'active'::character varying NOT NULL, + deleted_at timestamp(0) without time zone, + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone, + CONSTRAINT comments_status_check CHECK (((status)::text = ANY ((ARRAY['active'::character varying, 'deleted'::character varying])::text[]))) +); + + +ALTER TABLE public.comments OWNER TO humicpro_healthcare_user; + +-- +-- Name: comments_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.comments_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.comments_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: comments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.comments_id_seq OWNED BY public.comments.id; + + +-- +-- Name: disease_operator; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.disease_operator ( + id bigint NOT NULL, + user_id bigint NOT NULL, + disease_id bigint NOT NULL, + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone +); + + +ALTER TABLE public.disease_operator OWNER TO humicpro_healthcare_user; + +-- +-- Name: disease_operator_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.disease_operator_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.disease_operator_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: disease_operator_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.disease_operator_id_seq OWNED BY public.disease_operator.id; + + +-- +-- Name: disease_records; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.disease_records ( + id bigint NOT NULL, + disease_id bigint NOT NULL, + data jsonb NOT NULL, + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone +); + + +ALTER TABLE public.disease_records OWNER TO humicpro_healthcare_user; + +-- +-- Name: disease_records_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.disease_records_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.disease_records_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: disease_records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.disease_records_id_seq OWNED BY public.disease_records.id; + + +-- +-- Name: diseases; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.diseases ( + id bigint NOT NULL, + name character varying(255) NOT NULL, + deskripsi text NOT NULL, + visibilitas character varying(255) DEFAULT 'publik'::character varying NOT NULL, + schema jsonb NOT NULL, + cover_page character varying(255), + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone, + CONSTRAINT diseases_visibilitas_check CHECK (((visibilitas)::text = ANY ((ARRAY['publik'::character varying, 'privat'::character varying])::text[]))) +); + + +ALTER TABLE public.diseases OWNER TO humicpro_healthcare_user; + +-- +-- Name: diseases_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.diseases_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.diseases_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: diseases_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.diseases_id_seq OWNED BY public.diseases.id; + + +-- +-- Name: failed_jobs; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.failed_jobs ( + id bigint NOT NULL, + uuid character varying(255) NOT NULL, + connection text NOT NULL, + queue text NOT NULL, + payload text NOT NULL, + exception text NOT NULL, + failed_at timestamp(0) without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.failed_jobs OWNER TO humicpro_healthcare_user; + +-- +-- Name: failed_jobs_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.failed_jobs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.failed_jobs_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: failed_jobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.failed_jobs_id_seq OWNED BY public.failed_jobs.id; + + +-- +-- Name: logs; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.logs ( + id bigint NOT NULL, + user_id bigint NOT NULL, + action character varying(255) NOT NULL, + model character varying(255), + model_id bigint, + changes text, + description character varying(255), + "timestamp" timestamp(0) without time zone DEFAULT now() NOT NULL, + is_success boolean NOT NULL, + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone +); + + +ALTER TABLE public.logs OWNER TO humicpro_healthcare_user; + +-- +-- Name: logs_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.logs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.logs_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: logs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.logs_id_seq OWNED BY public.logs.id; + + +-- +-- Name: migrations; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.migrations ( + id integer NOT NULL, + migration character varying(255) NOT NULL, + batch integer NOT NULL +); + + +ALTER TABLE public.migrations OWNER TO humicpro_healthcare_user; + +-- +-- Name: migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.migrations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.migrations_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: migrations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.migrations_id_seq OWNED BY public.migrations.id; + + +-- +-- Name: password_reset_tokens; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.password_reset_tokens ( + email character varying(255) NOT NULL, + token character varying(255) NOT NULL, + created_at timestamp(0) without time zone +); + + +ALTER TABLE public.password_reset_tokens OWNER TO humicpro_healthcare_user; + +-- +-- Name: personal_access_tokens; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.personal_access_tokens ( + id bigint NOT NULL, + tokenable_type character varying(255) NOT NULL, + tokenable_id bigint NOT NULL, + name character varying(255) NOT NULL, + token character varying(64) NOT NULL, + abilities text, + last_used_at timestamp(0) without time zone, + expires_at timestamp(0) without time zone, + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone +); + + +ALTER TABLE public.personal_access_tokens OWNER TO humicpro_healthcare_user; + +-- +-- Name: personal_access_tokens_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.personal_access_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.personal_access_tokens_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: personal_access_tokens_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.personal_access_tokens_id_seq OWNED BY public.personal_access_tokens.id; + + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE TABLE public.users ( + id bigint NOT NULL, + name character varying(100) NOT NULL, + email character varying(100) NOT NULL, + password character varying(255) NOT NULL, + institution character varying(100), + gender character varying(255) DEFAULT 'prefer not to say'::character varying, + phone_number character varying(50), + tujuan_permohonan text, + role character varying(255) DEFAULT 'peneliti'::character varying NOT NULL, + approval_status character varying(255) DEFAULT 'pending'::character varying NOT NULL, + remember_token character varying(100), + created_at timestamp(0) without time zone, + updated_at timestamp(0) without time zone, + is_primary_admin boolean DEFAULT false NOT NULL, + CONSTRAINT users_approval_status_check CHECK (((approval_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT users_gender_check CHECK (((gender)::text = ANY ((ARRAY['male'::character varying, 'female'::character varying, 'prefer not to say'::character varying])::text[]))), + CONSTRAINT users_role_check CHECK (((role)::text = ANY ((ARRAY['admin'::character varying, 'operator'::character varying, 'peneliti'::character varying])::text[]))) +); + + +ALTER TABLE public.users OWNER TO humicpro_healthcare_user; + +-- +-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE SEQUENCE public.users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_id_seq OWNER TO humicpro_healthcare_user; + +-- +-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; + + +-- +-- Name: api_keys id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.api_keys ALTER COLUMN id SET DEFAULT nextval('public.api_keys_id_seq'::regclass); + + +-- +-- Name: comments id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.comments ALTER COLUMN id SET DEFAULT nextval('public.comments_id_seq'::regclass); + + +-- +-- Name: disease_operator id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_operator ALTER COLUMN id SET DEFAULT nextval('public.disease_operator_id_seq'::regclass); + + +-- +-- Name: disease_records id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_records ALTER COLUMN id SET DEFAULT nextval('public.disease_records_id_seq'::regclass); + + +-- +-- Name: diseases id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.diseases ALTER COLUMN id SET DEFAULT nextval('public.diseases_id_seq'::regclass); + + +-- +-- Name: failed_jobs id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.failed_jobs ALTER COLUMN id SET DEFAULT nextval('public.failed_jobs_id_seq'::regclass); + + +-- +-- Name: logs id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.logs ALTER COLUMN id SET DEFAULT nextval('public.logs_id_seq'::regclass); + + +-- +-- Name: migrations id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.migrations ALTER COLUMN id SET DEFAULT nextval('public.migrations_id_seq'::regclass); + + +-- +-- Name: personal_access_tokens id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.personal_access_tokens ALTER COLUMN id SET DEFAULT nextval('public.personal_access_tokens_id_seq'::regclass); + + +-- +-- Name: users id; Type: DEFAULT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass); + + +-- +-- Data for Name: api_keys; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.api_keys (id, key, description, created_at, updated_at) FROM stdin; +\. + + +-- +-- Name: api_keys_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.api_keys_id_seq', 1, false); + + +-- +-- Data for Name: comments; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.comments (id, disease_id, user_id, content, parent_id, status, deleted_at, created_at, updated_at) FROM stdin; +\. + + +-- +-- Name: comments_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.comments_id_seq', 1, false); + + +-- +-- Data for Name: disease_operator; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.disease_operator (id, user_id, disease_id, created_at, updated_at) FROM stdin; +7 5 5 \N \N +19 7 5 \N \N +\. + + +-- +-- Name: disease_operator_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.disease_operator_id_seq', 19, true); + + +-- +-- Data for Name: disease_records; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.disease_records (id, disease_id, data, created_at, updated_at) FROM stdin; +1 1 {"jenis": "Type1", "durasi": 7.13, "record": "Record_0", "signals": "Signal_0", "annotations": "Annotation_0", "tanggal_tes": "2024-10-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +2 1 {"jenis": "Type1", "durasi": 12.12, "record": "Record_1", "signals": "Signal_1", "annotations": "Annotation_1", "tanggal_tes": "2024-06-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +4 1 {"jenis": "Type2", "durasi": 18.14, "record": "Record_3", "signals": "Signal_3", "annotations": "Annotation_3", "tanggal_tes": "2025-01-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +5 1 {"jenis": "Type2", "durasi": 16.62, "record": "Record_4", "signals": "Signal_4", "annotations": "Annotation_4", "tanggal_tes": "2024-12-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +6 1 {"jenis": "Type1", "durasi": 11.71, "record": "Record_5", "signals": "Signal_5", "annotations": "Annotation_5", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +7 1 {"jenis": "Type1", "durasi": 6.33, "record": "Record_6", "signals": "Signal_6", "annotations": "Annotation_6", "tanggal_tes": "2024-11-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +8 1 {"jenis": "Type2", "durasi": 14.01, "record": "Record_7", "signals": "Signal_7", "annotations": "Annotation_7", "tanggal_tes": "2024-05-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +9 1 {"jenis": "Type1", "durasi": 13.51, "record": "Record_8", "signals": "Signal_8", "annotations": "Annotation_8", "tanggal_tes": "2024-03-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +10 1 {"jenis": "Type1", "durasi": 17.71, "record": "Record_9", "signals": "Signal_9", "annotations": "Annotation_9", "tanggal_tes": "2024-09-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +11 1 {"jenis": "Type1", "durasi": 9.41, "record": "Record_10", "signals": "Signal_10", "annotations": "Annotation_10", "tanggal_tes": "2024-02-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +12 1 {"jenis": "Type2", "durasi": 9.91, "record": "Record_11", "signals": "Signal_11", "annotations": "Annotation_11", "tanggal_tes": "2024-07-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +13 1 {"jenis": "Type1", "durasi": 10.69, "record": "Record_12", "signals": "Signal_12", "annotations": "Annotation_12", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +14 1 {"jenis": "Type2", "durasi": 8.5, "record": "Record_13", "signals": "Signal_13", "annotations": "Annotation_13", "tanggal_tes": "2024-06-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +15 1 {"jenis": "Type1", "durasi": 20.24, "record": "Record_14", "signals": "Signal_14", "annotations": "Annotation_14", "tanggal_tes": "2025-01-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +16 1 {"jenis": "Type1", "durasi": 12.32, "record": "Record_15", "signals": "Signal_15", "annotations": "Annotation_15", "tanggal_tes": "2024-10-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +17 1 {"jenis": "Type2", "durasi": 16.04, "record": "Record_16", "signals": "Signal_16", "annotations": "Annotation_16", "tanggal_tes": "2024-12-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +18 1 {"jenis": "Type1", "durasi": 20.93, "record": "Record_17", "signals": "Signal_17", "annotations": "Annotation_17", "tanggal_tes": "2024-04-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +19 1 {"jenis": "Type1", "durasi": 7.28, "record": "Record_18", "signals": "Signal_18", "annotations": "Annotation_18", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +20 1 {"jenis": "Type2", "durasi": 11.39, "record": "Record_19", "signals": "Signal_19", "annotations": "Annotation_19", "tanggal_tes": "2024-07-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +21 1 {"jenis": "Type2", "durasi": 14.5, "record": "Record_20", "signals": "Signal_20", "annotations": "Annotation_20", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +22 1 {"jenis": "Type2", "durasi": 9.43, "record": "Record_21", "signals": "Signal_21", "annotations": "Annotation_21", "tanggal_tes": "2024-05-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +23 1 {"jenis": "Type1", "durasi": 18.45, "record": "Record_22", "signals": "Signal_22", "annotations": "Annotation_22", "tanggal_tes": "2024-08-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +24 1 {"jenis": "Type2", "durasi": 11.17, "record": "Record_23", "signals": "Signal_23", "annotations": "Annotation_23", "tanggal_tes": "2024-02-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +25 1 {"jenis": "Type1", "durasi": 6.44, "record": "Record_24", "signals": "Signal_24", "annotations": "Annotation_24", "tanggal_tes": "2024-10-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +26 1 {"jenis": "Type1", "durasi": 11.94, "record": "Record_25", "signals": "Signal_25", "annotations": "Annotation_25", "tanggal_tes": "2024-02-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +27 1 {"jenis": "Type1", "durasi": 8.88, "record": "Record_26", "signals": "Signal_26", "annotations": "Annotation_26", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +28 1 {"jenis": "Type1", "durasi": 14.81, "record": "Record_27", "signals": "Signal_27", "annotations": "Annotation_27", "tanggal_tes": "2024-05-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +29 1 {"jenis": "Type1", "durasi": 12.64, "record": "Record_28", "signals": "Signal_28", "annotations": "Annotation_28", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +30 1 {"jenis": "Type1", "durasi": 15.35, "record": "Record_29", "signals": "Signal_29", "annotations": "Annotation_29", "tanggal_tes": "2024-07-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +31 1 {"jenis": "Type1", "durasi": 10.41, "record": "Record_30", "signals": "Signal_30", "annotations": "Annotation_30", "tanggal_tes": "2024-12-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +32 1 {"jenis": "Type2", "durasi": 14.78, "record": "Record_31", "signals": "Signal_31", "annotations": "Annotation_31", "tanggal_tes": "2024-11-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +33 1 {"jenis": "Type2", "durasi": 13.31, "record": "Record_32", "signals": "Signal_32", "annotations": "Annotation_32", "tanggal_tes": "2024-06-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +34 1 {"jenis": "Type2", "durasi": 16.52, "record": "Record_33", "signals": "Signal_33", "annotations": "Annotation_33", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +35 1 {"jenis": "Type1", "durasi": 20.18, "record": "Record_34", "signals": "Signal_34", "annotations": "Annotation_34", "tanggal_tes": "2025-01-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +36 1 {"jenis": "Type1", "durasi": 8.75, "record": "Record_35", "signals": "Signal_35", "annotations": "Annotation_35", "tanggal_tes": "2024-08-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +37 1 {"jenis": "Type1", "durasi": 20.49, "record": "Record_36", "signals": "Signal_36", "annotations": "Annotation_36", "tanggal_tes": "2024-03-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +38 1 {"jenis": "Type1", "durasi": 7.23, "record": "Record_37", "signals": "Signal_37", "annotations": "Annotation_37", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +39 1 {"jenis": "Type2", "durasi": 9.09, "record": "Record_38", "signals": "Signal_38", "annotations": "Annotation_38", "tanggal_tes": "2024-04-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +40 1 {"jenis": "Type1", "durasi": 15.86, "record": "Record_39", "signals": "Signal_39", "annotations": "Annotation_39", "tanggal_tes": "2024-09-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +41 1 {"jenis": "Type2", "durasi": 10.33, "record": "Record_40", "signals": "Signal_40", "annotations": "Annotation_40", "tanggal_tes": "2024-05-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +42 1 {"jenis": "Type2", "durasi": 19.53, "record": "Record_41", "signals": "Signal_41", "annotations": "Annotation_41", "tanggal_tes": "2024-08-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +43 1 {"jenis": "Type1", "durasi": 10.66, "record": "Record_42", "signals": "Signal_42", "annotations": "Annotation_42", "tanggal_tes": "2024-08-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +44 1 {"jenis": "Type2", "durasi": 16.29, "record": "Record_43", "signals": "Signal_43", "annotations": "Annotation_43", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +45 1 {"jenis": "Type2", "durasi": 10.18, "record": "Record_44", "signals": "Signal_44", "annotations": "Annotation_44", "tanggal_tes": "2024-03-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +46 1 {"jenis": "Type2", "durasi": 19.33, "record": "Record_45", "signals": "Signal_45", "annotations": "Annotation_45", "tanggal_tes": "2024-04-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +47 1 {"jenis": "Type1", "durasi": 13.07, "record": "Record_46", "signals": "Signal_46", "annotations": "Annotation_46", "tanggal_tes": "2025-01-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +48 1 {"jenis": "Type2", "durasi": 18.45, "record": "Record_47", "signals": "Signal_47", "annotations": "Annotation_47", "tanggal_tes": "2024-10-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +49 1 {"jenis": "Type1", "durasi": 10.44, "record": "Record_48", "signals": "Signal_48", "annotations": "Annotation_48", "tanggal_tes": "2024-03-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +50 1 {"jenis": "Type2", "durasi": 9.27, "record": "Record_49", "signals": "Signal_49", "annotations": "Annotation_49", "tanggal_tes": "2024-11-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +51 1 {"jenis": "Type2", "durasi": 5.11, "record": "Record_50", "signals": "Signal_50", "annotations": "Annotation_50", "tanggal_tes": "2024-06-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +52 1 {"jenis": "Type1", "durasi": 7.11, "record": "Record_51", "signals": "Signal_51", "annotations": "Annotation_51", "tanggal_tes": "2024-06-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +53 1 {"jenis": "Type2", "durasi": 11.65, "record": "Record_52", "signals": "Signal_52", "annotations": "Annotation_52", "tanggal_tes": "2024-12-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +54 1 {"jenis": "Type2", "durasi": 7.89, "record": "Record_53", "signals": "Signal_53", "annotations": "Annotation_53", "tanggal_tes": "2024-07-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +55 1 {"jenis": "Type2", "durasi": 16.24, "record": "Record_54", "signals": "Signal_54", "annotations": "Annotation_54", "tanggal_tes": "2024-05-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +56 1 {"jenis": "Type1", "durasi": 10.79, "record": "Record_55", "signals": "Signal_55", "annotations": "Annotation_55", "tanggal_tes": "2024-05-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +57 1 {"jenis": "Type2", "durasi": 16.21, "record": "Record_56", "signals": "Signal_56", "annotations": "Annotation_56", "tanggal_tes": "2024-09-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +58 1 {"jenis": "Type1", "durasi": 14.57, "record": "Record_57", "signals": "Signal_57", "annotations": "Annotation_57", "tanggal_tes": "2024-12-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +59 1 {"jenis": "Type1", "durasi": 14.6, "record": "Record_58", "signals": "Signal_58", "annotations": "Annotation_58", "tanggal_tes": "2024-10-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +60 1 {"jenis": "Type2", "durasi": 14.44, "record": "Record_59", "signals": "Signal_59", "annotations": "Annotation_59", "tanggal_tes": "2024-05-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +61 1 {"jenis": "Type1", "durasi": 13.85, "record": "Record_60", "signals": "Signal_60", "annotations": "Annotation_60", "tanggal_tes": "2024-09-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +62 1 {"jenis": "Type2", "durasi": 13.91, "record": "Record_61", "signals": "Signal_61", "annotations": "Annotation_61", "tanggal_tes": "2024-03-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +63 1 {"jenis": "Type1", "durasi": 14.95, "record": "Record_62", "signals": "Signal_62", "annotations": "Annotation_62", "tanggal_tes": "2024-04-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +64 1 {"jenis": "Type1", "durasi": 18.73, "record": "Record_63", "signals": "Signal_63", "annotations": "Annotation_63", "tanggal_tes": "2024-09-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +65 1 {"jenis": "Type1", "durasi": 10.51, "record": "Record_64", "signals": "Signal_64", "annotations": "Annotation_64", "tanggal_tes": "2024-10-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +66 1 {"jenis": "Type2", "durasi": 9.67, "record": "Record_65", "signals": "Signal_65", "annotations": "Annotation_65", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +67 1 {"jenis": "Type2", "durasi": 12.83, "record": "Record_66", "signals": "Signal_66", "annotations": "Annotation_66", "tanggal_tes": "2024-02-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +68 1 {"jenis": "Type2", "durasi": 7.71, "record": "Record_67", "signals": "Signal_67", "annotations": "Annotation_67", "tanggal_tes": "2024-09-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +69 1 {"jenis": "Type1", "durasi": 9.78, "record": "Record_68", "signals": "Signal_68", "annotations": "Annotation_68", "tanggal_tes": "2024-03-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +70 1 {"jenis": "Type1", "durasi": 17.76, "record": "Record_69", "signals": "Signal_69", "annotations": "Annotation_69", "tanggal_tes": "2024-12-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +71 1 {"jenis": "Type1", "durasi": 14.01, "record": "Record_70", "signals": "Signal_70", "annotations": "Annotation_70", "tanggal_tes": "2024-05-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +72 1 {"jenis": "Type1", "durasi": 5.62, "record": "Record_71", "signals": "Signal_71", "annotations": "Annotation_71", "tanggal_tes": "2024-04-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +73 1 {"jenis": "Type1", "durasi": 17.8, "record": "Record_72", "signals": "Signal_72", "annotations": "Annotation_72", "tanggal_tes": "2024-08-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +74 1 {"jenis": "Type2", "durasi": 9.22, "record": "Record_73", "signals": "Signal_73", "annotations": "Annotation_73", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +75 1 {"jenis": "Type1", "durasi": 16.03, "record": "Record_74", "signals": "Signal_74", "annotations": "Annotation_74", "tanggal_tes": "2024-05-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +76 1 {"jenis": "Type2", "durasi": 16.76, "record": "Record_75", "signals": "Signal_75", "annotations": "Annotation_75", "tanggal_tes": "2024-05-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +77 1 {"jenis": "Type1", "durasi": 13.87, "record": "Record_76", "signals": "Signal_76", "annotations": "Annotation_76", "tanggal_tes": "2024-10-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +78 1 {"jenis": "Type1", "durasi": 20.46, "record": "Record_77", "signals": "Signal_77", "annotations": "Annotation_77", "tanggal_tes": "2024-07-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +79 1 {"jenis": "Type2", "durasi": 11.36, "record": "Record_78", "signals": "Signal_78", "annotations": "Annotation_78", "tanggal_tes": "2024-04-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +80 1 {"jenis": "Type2", "durasi": 6.7, "record": "Record_79", "signals": "Signal_79", "annotations": "Annotation_79", "tanggal_tes": "2024-12-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +81 1 {"jenis": "Type1", "durasi": 16.86, "record": "Record_80", "signals": "Signal_80", "annotations": "Annotation_80", "tanggal_tes": "2024-03-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +82 1 {"jenis": "Type1", "durasi": 13.58, "record": "Record_81", "signals": "Signal_81", "annotations": "Annotation_81", "tanggal_tes": "2025-01-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +83 1 {"jenis": "Type2", "durasi": 8.11, "record": "Record_82", "signals": "Signal_82", "annotations": "Annotation_82", "tanggal_tes": "2025-01-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +84 1 {"jenis": "Type2", "durasi": 13.51, "record": "Record_83", "signals": "Signal_83", "annotations": "Annotation_83", "tanggal_tes": "2024-07-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +85 1 {"jenis": "Type2", "durasi": 6.77, "record": "Record_84", "signals": "Signal_84", "annotations": "Annotation_84", "tanggal_tes": "2024-11-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +86 1 {"jenis": "Type2", "durasi": 14.65, "record": "Record_85", "signals": "Signal_85", "annotations": "Annotation_85", "tanggal_tes": "2024-07-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +87 1 {"jenis": "Type2", "durasi": 5.3, "record": "Record_86", "signals": "Signal_86", "annotations": "Annotation_86", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +88 1 {"jenis": "Type1", "durasi": 16.68, "record": "Record_87", "signals": "Signal_87", "annotations": "Annotation_87", "tanggal_tes": "2024-05-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +89 1 {"jenis": "Type2", "durasi": 7.19, "record": "Record_88", "signals": "Signal_88", "annotations": "Annotation_88", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +90 1 {"jenis": "Type1", "durasi": 14.21, "record": "Record_89", "signals": "Signal_89", "annotations": "Annotation_89", "tanggal_tes": "2024-05-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +91 1 {"jenis": "Type1", "durasi": 17.79, "record": "Record_90", "signals": "Signal_90", "annotations": "Annotation_90", "tanggal_tes": "2024-09-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +92 1 {"jenis": "Type1", "durasi": 15.98, "record": "Record_91", "signals": "Signal_91", "annotations": "Annotation_91", "tanggal_tes": "2025-01-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +93 1 {"jenis": "Type1", "durasi": 5.97, "record": "Record_92", "signals": "Signal_92", "annotations": "Annotation_92", "tanggal_tes": "2024-03-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +94 1 {"jenis": "Type2", "durasi": 15.98, "record": "Record_93", "signals": "Signal_93", "annotations": "Annotation_93", "tanggal_tes": "2024-07-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +95 1 {"jenis": "Type2", "durasi": 13.63, "record": "Record_94", "signals": "Signal_94", "annotations": "Annotation_94", "tanggal_tes": "2024-02-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +96 1 {"jenis": "Type1", "durasi": 5.46, "record": "Record_95", "signals": "Signal_95", "annotations": "Annotation_95", "tanggal_tes": "2024-07-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +97 1 {"jenis": "Type1", "durasi": 15.11, "record": "Record_96", "signals": "Signal_96", "annotations": "Annotation_96", "tanggal_tes": "2024-03-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +98 1 {"jenis": "Type2", "durasi": 7.07, "record": "Record_97", "signals": "Signal_97", "annotations": "Annotation_97", "tanggal_tes": "2024-09-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +99 1 {"jenis": "Type2", "durasi": 10.67, "record": "Record_98", "signals": "Signal_98", "annotations": "Annotation_98", "tanggal_tes": "2024-12-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +100 1 {"jenis": "Type2", "durasi": 16.11, "record": "Record_99", "signals": "Signal_99", "annotations": "Annotation_99", "tanggal_tes": "2024-03-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +101 1 {"jenis": "Type2", "durasi": 6.38, "record": "Record_100", "signals": "Signal_100", "annotations": "Annotation_100", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +102 1 {"jenis": "Type1", "durasi": 7.16, "record": "Record_101", "signals": "Signal_101", "annotations": "Annotation_101", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +103 1 {"jenis": "Type2", "durasi": 20.69, "record": "Record_102", "signals": "Signal_102", "annotations": "Annotation_102", "tanggal_tes": "2024-03-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +104 1 {"jenis": "Type1", "durasi": 19.47, "record": "Record_103", "signals": "Signal_103", "annotations": "Annotation_103", "tanggal_tes": "2025-01-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +105 1 {"jenis": "Type2", "durasi": 17.17, "record": "Record_104", "signals": "Signal_104", "annotations": "Annotation_104", "tanggal_tes": "2024-02-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +106 1 {"jenis": "Type1", "durasi": 5.08, "record": "Record_105", "signals": "Signal_105", "annotations": "Annotation_105", "tanggal_tes": "2024-09-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +107 1 {"jenis": "Type2", "durasi": 16.16, "record": "Record_106", "signals": "Signal_106", "annotations": "Annotation_106", "tanggal_tes": "2024-04-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +108 1 {"jenis": "Type2", "durasi": 20.43, "record": "Record_107", "signals": "Signal_107", "annotations": "Annotation_107", "tanggal_tes": "2024-11-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +109 1 {"jenis": "Type1", "durasi": 8.9, "record": "Record_108", "signals": "Signal_108", "annotations": "Annotation_108", "tanggal_tes": "2024-03-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +110 1 {"jenis": "Type2", "durasi": 14.89, "record": "Record_109", "signals": "Signal_109", "annotations": "Annotation_109", "tanggal_tes": "2024-06-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +111 1 {"jenis": "Type2", "durasi": 9.59, "record": "Record_110", "signals": "Signal_110", "annotations": "Annotation_110", "tanggal_tes": "2024-05-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +112 1 {"jenis": "Type1", "durasi": 11.62, "record": "Record_111", "signals": "Signal_111", "annotations": "Annotation_111", "tanggal_tes": "2025-01-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +113 1 {"jenis": "Type2", "durasi": 8.71, "record": "Record_112", "signals": "Signal_112", "annotations": "Annotation_112", "tanggal_tes": "2024-04-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +114 1 {"jenis": "Type1", "durasi": 13.17, "record": "Record_113", "signals": "Signal_113", "annotations": "Annotation_113", "tanggal_tes": "2024-09-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +115 1 {"jenis": "Type2", "durasi": 10.86, "record": "Record_114", "signals": "Signal_114", "annotations": "Annotation_114", "tanggal_tes": "2024-09-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +116 1 {"jenis": "Type2", "durasi": 18.08, "record": "Record_115", "signals": "Signal_115", "annotations": "Annotation_115", "tanggal_tes": "2024-09-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +117 1 {"jenis": "Type2", "durasi": 8.85, "record": "Record_116", "signals": "Signal_116", "annotations": "Annotation_116", "tanggal_tes": "2024-07-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +118 1 {"jenis": "Type2", "durasi": 8.36, "record": "Record_117", "signals": "Signal_117", "annotations": "Annotation_117", "tanggal_tes": "2024-02-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +119 1 {"jenis": "Type1", "durasi": 16.23, "record": "Record_118", "signals": "Signal_118", "annotations": "Annotation_118", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +120 1 {"jenis": "Type1", "durasi": 15.89, "record": "Record_119", "signals": "Signal_119", "annotations": "Annotation_119", "tanggal_tes": "2024-06-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +121 1 {"jenis": "Type1", "durasi": 18.56, "record": "Record_120", "signals": "Signal_120", "annotations": "Annotation_120", "tanggal_tes": "2024-03-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +122 1 {"jenis": "Type2", "durasi": 16.62, "record": "Record_121", "signals": "Signal_121", "annotations": "Annotation_121", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +123 1 {"jenis": "Type2", "durasi": 16.15, "record": "Record_122", "signals": "Signal_122", "annotations": "Annotation_122", "tanggal_tes": "2024-02-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +124 1 {"jenis": "Type2", "durasi": 13.03, "record": "Record_123", "signals": "Signal_123", "annotations": "Annotation_123", "tanggal_tes": "2024-02-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +125 1 {"jenis": "Type2", "durasi": 17.28, "record": "Record_124", "signals": "Signal_124", "annotations": "Annotation_124", "tanggal_tes": "2025-01-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +126 1 {"jenis": "Type1", "durasi": 19.41, "record": "Record_125", "signals": "Signal_125", "annotations": "Annotation_125", "tanggal_tes": "2024-12-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +127 1 {"jenis": "Type1", "durasi": 10.16, "record": "Record_126", "signals": "Signal_126", "annotations": "Annotation_126", "tanggal_tes": "2024-09-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +128 1 {"jenis": "Type1", "durasi": 19.72, "record": "Record_127", "signals": "Signal_127", "annotations": "Annotation_127", "tanggal_tes": "2024-02-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +129 1 {"jenis": "Type1", "durasi": 6.74, "record": "Record_128", "signals": "Signal_128", "annotations": "Annotation_128", "tanggal_tes": "2024-09-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +130 1 {"jenis": "Type2", "durasi": 10.64, "record": "Record_129", "signals": "Signal_129", "annotations": "Annotation_129", "tanggal_tes": "2024-08-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +131 1 {"jenis": "Type2", "durasi": 5.01, "record": "Record_130", "signals": "Signal_130", "annotations": "Annotation_130", "tanggal_tes": "2024-02-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +132 1 {"jenis": "Type2", "durasi": 13.38, "record": "Record_131", "signals": "Signal_131", "annotations": "Annotation_131", "tanggal_tes": "2024-12-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +133 1 {"jenis": "Type1", "durasi": 19.03, "record": "Record_132", "signals": "Signal_132", "annotations": "Annotation_132", "tanggal_tes": "2024-02-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +134 1 {"jenis": "Type2", "durasi": 8.46, "record": "Record_133", "signals": "Signal_133", "annotations": "Annotation_133", "tanggal_tes": "2024-11-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +135 1 {"jenis": "Type2", "durasi": 13.86, "record": "Record_134", "signals": "Signal_134", "annotations": "Annotation_134", "tanggal_tes": "2025-01-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +136 1 {"jenis": "Type1", "durasi": 7.01, "record": "Record_135", "signals": "Signal_135", "annotations": "Annotation_135", "tanggal_tes": "2024-12-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +137 1 {"jenis": "Type1", "durasi": 7.08, "record": "Record_136", "signals": "Signal_136", "annotations": "Annotation_136", "tanggal_tes": "2024-09-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +138 1 {"jenis": "Type2", "durasi": 14.75, "record": "Record_137", "signals": "Signal_137", "annotations": "Annotation_137", "tanggal_tes": "2024-11-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +139 1 {"jenis": "Type2", "durasi": 19.5, "record": "Record_138", "signals": "Signal_138", "annotations": "Annotation_138", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +140 1 {"jenis": "Type2", "durasi": 16.82, "record": "Record_139", "signals": "Signal_139", "annotations": "Annotation_139", "tanggal_tes": "2025-01-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +141 1 {"jenis": "Type1", "durasi": 7.57, "record": "Record_140", "signals": "Signal_140", "annotations": "Annotation_140", "tanggal_tes": "2024-05-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +142 1 {"jenis": "Type2", "durasi": 14.93, "record": "Record_141", "signals": "Signal_141", "annotations": "Annotation_141", "tanggal_tes": "2024-02-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +143 1 {"jenis": "Type1", "durasi": 19.75, "record": "Record_142", "signals": "Signal_142", "annotations": "Annotation_142", "tanggal_tes": "2024-12-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +144 1 {"jenis": "Type1", "durasi": 11.63, "record": "Record_143", "signals": "Signal_143", "annotations": "Annotation_143", "tanggal_tes": "2024-10-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +145 1 {"jenis": "Type2", "durasi": 11.9, "record": "Record_144", "signals": "Signal_144", "annotations": "Annotation_144", "tanggal_tes": "2024-12-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +146 1 {"jenis": "Type2", "durasi": 18.16, "record": "Record_145", "signals": "Signal_145", "annotations": "Annotation_145", "tanggal_tes": "2024-12-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +147 1 {"jenis": "Type2", "durasi": 9.32, "record": "Record_146", "signals": "Signal_146", "annotations": "Annotation_146", "tanggal_tes": "2024-12-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +148 1 {"jenis": "Type2", "durasi": 10.44, "record": "Record_147", "signals": "Signal_147", "annotations": "Annotation_147", "tanggal_tes": "2024-08-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +149 1 {"jenis": "Type1", "durasi": 15.46, "record": "Record_148", "signals": "Signal_148", "annotations": "Annotation_148", "tanggal_tes": "2024-11-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +150 1 {"jenis": "Type1", "durasi": 14.37, "record": "Record_149", "signals": "Signal_149", "annotations": "Annotation_149", "tanggal_tes": "2024-02-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +151 1 {"jenis": "Type1", "durasi": 20.7, "record": "Record_150", "signals": "Signal_150", "annotations": "Annotation_150", "tanggal_tes": "2024-03-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +152 1 {"jenis": "Type1", "durasi": 18.08, "record": "Record_151", "signals": "Signal_151", "annotations": "Annotation_151", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +153 1 {"jenis": "Type2", "durasi": 18.14, "record": "Record_152", "signals": "Signal_152", "annotations": "Annotation_152", "tanggal_tes": "2024-09-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +154 1 {"jenis": "Type1", "durasi": 16.07, "record": "Record_153", "signals": "Signal_153", "annotations": "Annotation_153", "tanggal_tes": "2024-07-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +155 1 {"jenis": "Type2", "durasi": 5.28, "record": "Record_154", "signals": "Signal_154", "annotations": "Annotation_154", "tanggal_tes": "2024-07-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +156 1 {"jenis": "Type1", "durasi": 17.09, "record": "Record_155", "signals": "Signal_155", "annotations": "Annotation_155", "tanggal_tes": "2024-05-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +157 1 {"jenis": "Type2", "durasi": 6.77, "record": "Record_156", "signals": "Signal_156", "annotations": "Annotation_156", "tanggal_tes": "2025-01-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +158 1 {"jenis": "Type2", "durasi": 17.02, "record": "Record_157", "signals": "Signal_157", "annotations": "Annotation_157", "tanggal_tes": "2024-02-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +159 1 {"jenis": "Type2", "durasi": 7.22, "record": "Record_158", "signals": "Signal_158", "annotations": "Annotation_158", "tanggal_tes": "2025-01-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +160 1 {"jenis": "Type2", "durasi": 6.52, "record": "Record_159", "signals": "Signal_159", "annotations": "Annotation_159", "tanggal_tes": "2024-06-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +161 1 {"jenis": "Type1", "durasi": 5.9, "record": "Record_160", "signals": "Signal_160", "annotations": "Annotation_160", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +162 1 {"jenis": "Type1", "durasi": 20.26, "record": "Record_161", "signals": "Signal_161", "annotations": "Annotation_161", "tanggal_tes": "2024-10-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +163 1 {"jenis": "Type2", "durasi": 7.86, "record": "Record_162", "signals": "Signal_162", "annotations": "Annotation_162", "tanggal_tes": "2024-03-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +164 1 {"jenis": "Type2", "durasi": 17.13, "record": "Record_163", "signals": "Signal_163", "annotations": "Annotation_163", "tanggal_tes": "2025-01-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +165 1 {"jenis": "Type1", "durasi": 9.7, "record": "Record_164", "signals": "Signal_164", "annotations": "Annotation_164", "tanggal_tes": "2024-10-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +166 1 {"jenis": "Type2", "durasi": 13.82, "record": "Record_165", "signals": "Signal_165", "annotations": "Annotation_165", "tanggal_tes": "2024-08-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +167 1 {"jenis": "Type2", "durasi": 15.9, "record": "Record_166", "signals": "Signal_166", "annotations": "Annotation_166", "tanggal_tes": "2024-02-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +168 1 {"jenis": "Type1", "durasi": 6.97, "record": "Record_167", "signals": "Signal_167", "annotations": "Annotation_167", "tanggal_tes": "2025-01-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +169 1 {"jenis": "Type2", "durasi": 15.45, "record": "Record_168", "signals": "Signal_168", "annotations": "Annotation_168", "tanggal_tes": "2024-07-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +170 1 {"jenis": "Type2", "durasi": 5.19, "record": "Record_169", "signals": "Signal_169", "annotations": "Annotation_169", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +171 1 {"jenis": "Type2", "durasi": 20.34, "record": "Record_170", "signals": "Signal_170", "annotations": "Annotation_170", "tanggal_tes": "2024-05-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +172 1 {"jenis": "Type1", "durasi": 8.81, "record": "Record_171", "signals": "Signal_171", "annotations": "Annotation_171", "tanggal_tes": "2024-11-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +173 1 {"jenis": "Type1", "durasi": 6.19, "record": "Record_172", "signals": "Signal_172", "annotations": "Annotation_172", "tanggal_tes": "2024-06-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +174 1 {"jenis": "Type1", "durasi": 20.97, "record": "Record_173", "signals": "Signal_173", "annotations": "Annotation_173", "tanggal_tes": "2024-10-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +175 1 {"jenis": "Type2", "durasi": 11.29, "record": "Record_174", "signals": "Signal_174", "annotations": "Annotation_174", "tanggal_tes": "2024-11-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +176 1 {"jenis": "Type2", "durasi": 15.34, "record": "Record_175", "signals": "Signal_175", "annotations": "Annotation_175", "tanggal_tes": "2024-07-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +177 1 {"jenis": "Type1", "durasi": 9.52, "record": "Record_176", "signals": "Signal_176", "annotations": "Annotation_176", "tanggal_tes": "2025-01-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +178 1 {"jenis": "Type2", "durasi": 18.56, "record": "Record_177", "signals": "Signal_177", "annotations": "Annotation_177", "tanggal_tes": "2024-12-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +179 1 {"jenis": "Type2", "durasi": 10.33, "record": "Record_178", "signals": "Signal_178", "annotations": "Annotation_178", "tanggal_tes": "2024-10-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +180 1 {"jenis": "Type2", "durasi": 15.76, "record": "Record_179", "signals": "Signal_179", "annotations": "Annotation_179", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +181 1 {"jenis": "Type1", "durasi": 18.86, "record": "Record_180", "signals": "Signal_180", "annotations": "Annotation_180", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +182 1 {"jenis": "Type2", "durasi": 8.33, "record": "Record_181", "signals": "Signal_181", "annotations": "Annotation_181", "tanggal_tes": "2024-09-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +183 1 {"jenis": "Type1", "durasi": 6.9, "record": "Record_182", "signals": "Signal_182", "annotations": "Annotation_182", "tanggal_tes": "2024-11-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +184 1 {"jenis": "Type2", "durasi": 5.63, "record": "Record_183", "signals": "Signal_183", "annotations": "Annotation_183", "tanggal_tes": "2024-02-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +185 1 {"jenis": "Type2", "durasi": 7.26, "record": "Record_184", "signals": "Signal_184", "annotations": "Annotation_184", "tanggal_tes": "2024-10-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +186 1 {"jenis": "Type1", "durasi": 14.11, "record": "Record_185", "signals": "Signal_185", "annotations": "Annotation_185", "tanggal_tes": "2025-01-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +187 1 {"jenis": "Type1", "durasi": 11.29, "record": "Record_186", "signals": "Signal_186", "annotations": "Annotation_186", "tanggal_tes": "2024-04-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +188 1 {"jenis": "Type2", "durasi": 7.67, "record": "Record_187", "signals": "Signal_187", "annotations": "Annotation_187", "tanggal_tes": "2024-07-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +189 1 {"jenis": "Type2", "durasi": 5.54, "record": "Record_188", "signals": "Signal_188", "annotations": "Annotation_188", "tanggal_tes": "2024-11-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +190 1 {"jenis": "Type1", "durasi": 19.59, "record": "Record_189", "signals": "Signal_189", "annotations": "Annotation_189", "tanggal_tes": "2024-02-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +191 1 {"jenis": "Type2", "durasi": 19.26, "record": "Record_190", "signals": "Signal_190", "annotations": "Annotation_190", "tanggal_tes": "2024-05-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +192 1 {"jenis": "Type2", "durasi": 16.86, "record": "Record_191", "signals": "Signal_191", "annotations": "Annotation_191", "tanggal_tes": "2024-10-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +193 1 {"jenis": "Type1", "durasi": 8.9, "record": "Record_192", "signals": "Signal_192", "annotations": "Annotation_192", "tanggal_tes": "2024-04-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +194 1 {"jenis": "Type2", "durasi": 10.29, "record": "Record_193", "signals": "Signal_193", "annotations": "Annotation_193", "tanggal_tes": "2024-07-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +195 1 {"jenis": "Type2", "durasi": 9.37, "record": "Record_194", "signals": "Signal_194", "annotations": "Annotation_194", "tanggal_tes": "2024-08-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +196 1 {"jenis": "Type1", "durasi": 11.53, "record": "Record_195", "signals": "Signal_195", "annotations": "Annotation_195", "tanggal_tes": "2024-04-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +197 1 {"jenis": "Type1", "durasi": 10.13, "record": "Record_196", "signals": "Signal_196", "annotations": "Annotation_196", "tanggal_tes": "2024-10-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +198 1 {"jenis": "Type2", "durasi": 14.04, "record": "Record_197", "signals": "Signal_197", "annotations": "Annotation_197", "tanggal_tes": "2024-08-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +199 1 {"jenis": "Type2", "durasi": 18.8, "record": "Record_198", "signals": "Signal_198", "annotations": "Annotation_198", "tanggal_tes": "2024-07-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +200 1 {"jenis": "Type1", "durasi": 20.48, "record": "Record_199", "signals": "Signal_199", "annotations": "Annotation_199", "tanggal_tes": "2024-12-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +201 1 {"jenis": "Type2", "durasi": 17.62, "record": "Record_200", "signals": "Signal_200", "annotations": "Annotation_200", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +202 1 {"jenis": "Type1", "durasi": 13.86, "record": "Record_201", "signals": "Signal_201", "annotations": "Annotation_201", "tanggal_tes": "2024-09-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +203 1 {"jenis": "Type2", "durasi": 20.93, "record": "Record_202", "signals": "Signal_202", "annotations": "Annotation_202", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +204 1 {"jenis": "Type2", "durasi": 19.84, "record": "Record_203", "signals": "Signal_203", "annotations": "Annotation_203", "tanggal_tes": "2024-03-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +205 1 {"jenis": "Type1", "durasi": 14.46, "record": "Record_204", "signals": "Signal_204", "annotations": "Annotation_204", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +206 1 {"jenis": "Type1", "durasi": 7.48, "record": "Record_205", "signals": "Signal_205", "annotations": "Annotation_205", "tanggal_tes": "2024-08-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +207 1 {"jenis": "Type2", "durasi": 9.12, "record": "Record_206", "signals": "Signal_206", "annotations": "Annotation_206", "tanggal_tes": "2024-11-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +208 1 {"jenis": "Type1", "durasi": 17.74, "record": "Record_207", "signals": "Signal_207", "annotations": "Annotation_207", "tanggal_tes": "2024-05-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +209 1 {"jenis": "Type2", "durasi": 18.77, "record": "Record_208", "signals": "Signal_208", "annotations": "Annotation_208", "tanggal_tes": "2024-05-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +210 1 {"jenis": "Type1", "durasi": 9.72, "record": "Record_209", "signals": "Signal_209", "annotations": "Annotation_209", "tanggal_tes": "2024-07-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +211 1 {"jenis": "Type1", "durasi": 12.28, "record": "Record_210", "signals": "Signal_210", "annotations": "Annotation_210", "tanggal_tes": "2025-01-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +212 1 {"jenis": "Type2", "durasi": 10.93, "record": "Record_211", "signals": "Signal_211", "annotations": "Annotation_211", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +213 1 {"jenis": "Type1", "durasi": 13.3, "record": "Record_212", "signals": "Signal_212", "annotations": "Annotation_212", "tanggal_tes": "2024-10-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +214 1 {"jenis": "Type1", "durasi": 12.92, "record": "Record_213", "signals": "Signal_213", "annotations": "Annotation_213", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +215 1 {"jenis": "Type2", "durasi": 18.12, "record": "Record_214", "signals": "Signal_214", "annotations": "Annotation_214", "tanggal_tes": "2024-06-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +216 1 {"jenis": "Type2", "durasi": 9.27, "record": "Record_215", "signals": "Signal_215", "annotations": "Annotation_215", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +217 1 {"jenis": "Type2", "durasi": 5.97, "record": "Record_216", "signals": "Signal_216", "annotations": "Annotation_216", "tanggal_tes": "2024-04-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +218 1 {"jenis": "Type2", "durasi": 20.48, "record": "Record_217", "signals": "Signal_217", "annotations": "Annotation_217", "tanggal_tes": "2024-02-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +219 1 {"jenis": "Type1", "durasi": 14.03, "record": "Record_218", "signals": "Signal_218", "annotations": "Annotation_218", "tanggal_tes": "2025-01-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +220 1 {"jenis": "Type1", "durasi": 15.7, "record": "Record_219", "signals": "Signal_219", "annotations": "Annotation_219", "tanggal_tes": "2024-09-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +221 1 {"jenis": "Type1", "durasi": 10.74, "record": "Record_220", "signals": "Signal_220", "annotations": "Annotation_220", "tanggal_tes": "2024-03-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +222 1 {"jenis": "Type2", "durasi": 8.52, "record": "Record_221", "signals": "Signal_221", "annotations": "Annotation_221", "tanggal_tes": "2024-09-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +223 1 {"jenis": "Type2", "durasi": 11.89, "record": "Record_222", "signals": "Signal_222", "annotations": "Annotation_222", "tanggal_tes": "2024-03-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +224 1 {"jenis": "Type2", "durasi": 19.31, "record": "Record_223", "signals": "Signal_223", "annotations": "Annotation_223", "tanggal_tes": "2024-07-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +225 1 {"jenis": "Type2", "durasi": 5.8100000000000005, "record": "Record_224", "signals": "Signal_224", "annotations": "Annotation_224", "tanggal_tes": "2024-10-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +226 1 {"jenis": "Type2", "durasi": 9.52, "record": "Record_225", "signals": "Signal_225", "annotations": "Annotation_225", "tanggal_tes": "2024-07-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +227 1 {"jenis": "Type1", "durasi": 19.72, "record": "Record_226", "signals": "Signal_226", "annotations": "Annotation_226", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +228 1 {"jenis": "Type1", "durasi": 5.72, "record": "Record_227", "signals": "Signal_227", "annotations": "Annotation_227", "tanggal_tes": "2024-08-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +229 1 {"jenis": "Type2", "durasi": 5.63, "record": "Record_228", "signals": "Signal_228", "annotations": "Annotation_228", "tanggal_tes": "2024-09-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +230 1 {"jenis": "Type1", "durasi": 16.53, "record": "Record_229", "signals": "Signal_229", "annotations": "Annotation_229", "tanggal_tes": "2024-05-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +231 1 {"jenis": "Type1", "durasi": 5.74, "record": "Record_230", "signals": "Signal_230", "annotations": "Annotation_230", "tanggal_tes": "2024-02-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +232 1 {"jenis": "Type1", "durasi": 12.12, "record": "Record_231", "signals": "Signal_231", "annotations": "Annotation_231", "tanggal_tes": "2024-12-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +233 1 {"jenis": "Type2", "durasi": 16.16, "record": "Record_232", "signals": "Signal_232", "annotations": "Annotation_232", "tanggal_tes": "2024-02-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +234 1 {"jenis": "Type2", "durasi": 17.28, "record": "Record_233", "signals": "Signal_233", "annotations": "Annotation_233", "tanggal_tes": "2024-10-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +235 1 {"jenis": "Type2", "durasi": 17.23, "record": "Record_234", "signals": "Signal_234", "annotations": "Annotation_234", "tanggal_tes": "2024-04-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +236 1 {"jenis": "Type1", "durasi": 16.97, "record": "Record_235", "signals": "Signal_235", "annotations": "Annotation_235", "tanggal_tes": "2024-11-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +237 1 {"jenis": "Type2", "durasi": 6.53, "record": "Record_236", "signals": "Signal_236", "annotations": "Annotation_236", "tanggal_tes": "2024-12-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +238 1 {"jenis": "Type2", "durasi": 5.7, "record": "Record_237", "signals": "Signal_237", "annotations": "Annotation_237", "tanggal_tes": "2024-10-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +239 1 {"jenis": "Type2", "durasi": 14.67, "record": "Record_238", "signals": "Signal_238", "annotations": "Annotation_238", "tanggal_tes": "2025-01-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +240 1 {"jenis": "Type1", "durasi": 16.25, "record": "Record_239", "signals": "Signal_239", "annotations": "Annotation_239", "tanggal_tes": "2024-08-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +241 1 {"jenis": "Type1", "durasi": 14.27, "record": "Record_240", "signals": "Signal_240", "annotations": "Annotation_240", "tanggal_tes": "2024-02-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +242 1 {"jenis": "Type2", "durasi": 12.4, "record": "Record_241", "signals": "Signal_241", "annotations": "Annotation_241", "tanggal_tes": "2024-04-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +243 1 {"jenis": "Type2", "durasi": 5.87, "record": "Record_242", "signals": "Signal_242", "annotations": "Annotation_242", "tanggal_tes": "2024-08-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +244 1 {"jenis": "Type2", "durasi": 20.69, "record": "Record_243", "signals": "Signal_243", "annotations": "Annotation_243", "tanggal_tes": "2024-06-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +245 1 {"jenis": "Type1", "durasi": 11.44, "record": "Record_244", "signals": "Signal_244", "annotations": "Annotation_244", "tanggal_tes": "2024-10-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +246 1 {"jenis": "Type2", "durasi": 19.29, "record": "Record_245", "signals": "Signal_245", "annotations": "Annotation_245", "tanggal_tes": "2024-10-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +247 1 {"jenis": "Type1", "durasi": 17.95, "record": "Record_246", "signals": "Signal_246", "annotations": "Annotation_246", "tanggal_tes": "2025-01-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +248 1 {"jenis": "Type1", "durasi": 9.91, "record": "Record_247", "signals": "Signal_247", "annotations": "Annotation_247", "tanggal_tes": "2024-07-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +249 1 {"jenis": "Type1", "durasi": 8.19, "record": "Record_248", "signals": "Signal_248", "annotations": "Annotation_248", "tanggal_tes": "2025-01-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +250 1 {"jenis": "Type1", "durasi": 15.06, "record": "Record_249", "signals": "Signal_249", "annotations": "Annotation_249", "tanggal_tes": "2024-07-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +251 1 {"jenis": "Type2", "durasi": 9.42, "record": "Record_250", "signals": "Signal_250", "annotations": "Annotation_250", "tanggal_tes": "2024-02-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +252 1 {"jenis": "Type1", "durasi": 15.72, "record": "Record_251", "signals": "Signal_251", "annotations": "Annotation_251", "tanggal_tes": "2024-07-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +253 1 {"jenis": "Type2", "durasi": 15.38, "record": "Record_252", "signals": "Signal_252", "annotations": "Annotation_252", "tanggal_tes": "2024-06-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +254 1 {"jenis": "Type1", "durasi": 7.1, "record": "Record_253", "signals": "Signal_253", "annotations": "Annotation_253", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +255 1 {"jenis": "Type1", "durasi": 16.79, "record": "Record_254", "signals": "Signal_254", "annotations": "Annotation_254", "tanggal_tes": "2024-06-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +256 1 {"jenis": "Type2", "durasi": 14.98, "record": "Record_255", "signals": "Signal_255", "annotations": "Annotation_255", "tanggal_tes": "2024-09-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +257 1 {"jenis": "Type2", "durasi": 11.04, "record": "Record_256", "signals": "Signal_256", "annotations": "Annotation_256", "tanggal_tes": "2024-02-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +258 1 {"jenis": "Type1", "durasi": 10.94, "record": "Record_257", "signals": "Signal_257", "annotations": "Annotation_257", "tanggal_tes": "2024-06-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +259 1 {"jenis": "Type2", "durasi": 20.98, "record": "Record_258", "signals": "Signal_258", "annotations": "Annotation_258", "tanggal_tes": "2024-02-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +260 1 {"jenis": "Type1", "durasi": 20.28, "record": "Record_259", "signals": "Signal_259", "annotations": "Annotation_259", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +261 1 {"jenis": "Type2", "durasi": 17.5, "record": "Record_260", "signals": "Signal_260", "annotations": "Annotation_260", "tanggal_tes": "2024-10-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +262 1 {"jenis": "Type2", "durasi": 16.79, "record": "Record_261", "signals": "Signal_261", "annotations": "Annotation_261", "tanggal_tes": "2024-08-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +263 1 {"jenis": "Type2", "durasi": 12.37, "record": "Record_262", "signals": "Signal_262", "annotations": "Annotation_262", "tanggal_tes": "2024-08-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +264 1 {"jenis": "Type1", "durasi": 6.87, "record": "Record_263", "signals": "Signal_263", "annotations": "Annotation_263", "tanggal_tes": "2024-11-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +265 1 {"jenis": "Type2", "durasi": 8.68, "record": "Record_264", "signals": "Signal_264", "annotations": "Annotation_264", "tanggal_tes": "2024-07-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +266 1 {"jenis": "Type1", "durasi": 20.96, "record": "Record_265", "signals": "Signal_265", "annotations": "Annotation_265", "tanggal_tes": "2024-10-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +267 1 {"jenis": "Type1", "durasi": 5.79, "record": "Record_266", "signals": "Signal_266", "annotations": "Annotation_266", "tanggal_tes": "2024-11-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +268 1 {"jenis": "Type2", "durasi": 14, "record": "Record_267", "signals": "Signal_267", "annotations": "Annotation_267", "tanggal_tes": "2025-01-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +269 1 {"jenis": "Type1", "durasi": 19.86, "record": "Record_268", "signals": "Signal_268", "annotations": "Annotation_268", "tanggal_tes": "2024-03-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +270 1 {"jenis": "Type2", "durasi": 14.46, "record": "Record_269", "signals": "Signal_269", "annotations": "Annotation_269", "tanggal_tes": "2024-10-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +271 1 {"jenis": "Type2", "durasi": 18.35, "record": "Record_270", "signals": "Signal_270", "annotations": "Annotation_270", "tanggal_tes": "2024-02-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +272 1 {"jenis": "Type2", "durasi": 20.51, "record": "Record_271", "signals": "Signal_271", "annotations": "Annotation_271", "tanggal_tes": "2024-06-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +273 1 {"jenis": "Type2", "durasi": 16.73, "record": "Record_272", "signals": "Signal_272", "annotations": "Annotation_272", "tanggal_tes": "2024-11-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +274 1 {"jenis": "Type1", "durasi": 13.11, "record": "Record_273", "signals": "Signal_273", "annotations": "Annotation_273", "tanggal_tes": "2025-01-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +275 1 {"jenis": "Type1", "durasi": 14.94, "record": "Record_274", "signals": "Signal_274", "annotations": "Annotation_274", "tanggal_tes": "2024-08-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +276 1 {"jenis": "Type2", "durasi": 13.25, "record": "Record_275", "signals": "Signal_275", "annotations": "Annotation_275", "tanggal_tes": "2025-01-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +277 1 {"jenis": "Type2", "durasi": 18.64, "record": "Record_276", "signals": "Signal_276", "annotations": "Annotation_276", "tanggal_tes": "2024-01-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +278 1 {"jenis": "Type2", "durasi": 8.4, "record": "Record_277", "signals": "Signal_277", "annotations": "Annotation_277", "tanggal_tes": "2024-03-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +279 1 {"jenis": "Type2", "durasi": 7.41, "record": "Record_278", "signals": "Signal_278", "annotations": "Annotation_278", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +280 1 {"jenis": "Type1", "durasi": 8.35, "record": "Record_279", "signals": "Signal_279", "annotations": "Annotation_279", "tanggal_tes": "2024-11-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +281 1 {"jenis": "Type1", "durasi": 18.19, "record": "Record_280", "signals": "Signal_280", "annotations": "Annotation_280", "tanggal_tes": "2024-05-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +282 1 {"jenis": "Type2", "durasi": 16.8, "record": "Record_281", "signals": "Signal_281", "annotations": "Annotation_281", "tanggal_tes": "2024-09-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +283 1 {"jenis": "Type2", "durasi": 8.9, "record": "Record_282", "signals": "Signal_282", "annotations": "Annotation_282", "tanggal_tes": "2024-09-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +284 1 {"jenis": "Type1", "durasi": 10.34, "record": "Record_283", "signals": "Signal_283", "annotations": "Annotation_283", "tanggal_tes": "2024-06-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +285 1 {"jenis": "Type1", "durasi": 20.78, "record": "Record_284", "signals": "Signal_284", "annotations": "Annotation_284", "tanggal_tes": "2024-10-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +286 1 {"jenis": "Type2", "durasi": 11.27, "record": "Record_285", "signals": "Signal_285", "annotations": "Annotation_285", "tanggal_tes": "2024-12-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +287 1 {"jenis": "Type2", "durasi": 15.19, "record": "Record_286", "signals": "Signal_286", "annotations": "Annotation_286", "tanggal_tes": "2024-04-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +288 1 {"jenis": "Type2", "durasi": 9.32, "record": "Record_287", "signals": "Signal_287", "annotations": "Annotation_287", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +289 1 {"jenis": "Type1", "durasi": 5.9, "record": "Record_288", "signals": "Signal_288", "annotations": "Annotation_288", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +290 1 {"jenis": "Type2", "durasi": 11.38, "record": "Record_289", "signals": "Signal_289", "annotations": "Annotation_289", "tanggal_tes": "2024-07-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +291 1 {"jenis": "Type1", "durasi": 12.06, "record": "Record_290", "signals": "Signal_290", "annotations": "Annotation_290", "tanggal_tes": "2024-10-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +292 1 {"jenis": "Type2", "durasi": 6.68, "record": "Record_291", "signals": "Signal_291", "annotations": "Annotation_291", "tanggal_tes": "2024-12-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +293 1 {"jenis": "Type2", "durasi": 16.79, "record": "Record_292", "signals": "Signal_292", "annotations": "Annotation_292", "tanggal_tes": "2024-11-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +294 1 {"jenis": "Type2", "durasi": 14.27, "record": "Record_293", "signals": "Signal_293", "annotations": "Annotation_293", "tanggal_tes": "2024-07-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +295 1 {"jenis": "Type2", "durasi": 18.46, "record": "Record_294", "signals": "Signal_294", "annotations": "Annotation_294", "tanggal_tes": "2024-11-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +296 1 {"jenis": "Type2", "durasi": 13.31, "record": "Record_295", "signals": "Signal_295", "annotations": "Annotation_295", "tanggal_tes": "2024-10-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +297 1 {"jenis": "Type1", "durasi": 17.06, "record": "Record_296", "signals": "Signal_296", "annotations": "Annotation_296", "tanggal_tes": "2024-02-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +298 1 {"jenis": "Type2", "durasi": 20.56, "record": "Record_297", "signals": "Signal_297", "annotations": "Annotation_297", "tanggal_tes": "2024-03-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +299 1 {"jenis": "Type1", "durasi": 9.51, "record": "Record_298", "signals": "Signal_298", "annotations": "Annotation_298", "tanggal_tes": "2024-07-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +300 1 {"jenis": "Type1", "durasi": 6.46, "record": "Record_299", "signals": "Signal_299", "annotations": "Annotation_299", "tanggal_tes": "2024-07-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +301 1 {"jenis": "Type1", "durasi": 17.47, "record": "Record_300", "signals": "Signal_300", "annotations": "Annotation_300", "tanggal_tes": "2024-09-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +302 1 {"jenis": "Type2", "durasi": 16.24, "record": "Record_301", "signals": "Signal_301", "annotations": "Annotation_301", "tanggal_tes": "2025-01-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +303 1 {"jenis": "Type2", "durasi": 9.49, "record": "Record_302", "signals": "Signal_302", "annotations": "Annotation_302", "tanggal_tes": "2024-09-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +304 1 {"jenis": "Type1", "durasi": 10.38, "record": "Record_303", "signals": "Signal_303", "annotations": "Annotation_303", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +305 1 {"jenis": "Type1", "durasi": 10.72, "record": "Record_304", "signals": "Signal_304", "annotations": "Annotation_304", "tanggal_tes": "2024-09-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +306 1 {"jenis": "Type2", "durasi": 18.37, "record": "Record_305", "signals": "Signal_305", "annotations": "Annotation_305", "tanggal_tes": "2024-02-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +307 1 {"jenis": "Type2", "durasi": 8.55, "record": "Record_306", "signals": "Signal_306", "annotations": "Annotation_306", "tanggal_tes": "2024-03-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +308 1 {"jenis": "Type2", "durasi": 18.15, "record": "Record_307", "signals": "Signal_307", "annotations": "Annotation_307", "tanggal_tes": "2024-03-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +309 1 {"jenis": "Type2", "durasi": 14.87, "record": "Record_308", "signals": "Signal_308", "annotations": "Annotation_308", "tanggal_tes": "2024-07-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +310 1 {"jenis": "Type1", "durasi": 11.48, "record": "Record_309", "signals": "Signal_309", "annotations": "Annotation_309", "tanggal_tes": "2024-04-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +311 1 {"jenis": "Type2", "durasi": 17.55, "record": "Record_310", "signals": "Signal_310", "annotations": "Annotation_310", "tanggal_tes": "2024-03-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +312 1 {"jenis": "Type1", "durasi": 8.82, "record": "Record_311", "signals": "Signal_311", "annotations": "Annotation_311", "tanggal_tes": "2025-01-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +313 1 {"jenis": "Type1", "durasi": 5.68, "record": "Record_312", "signals": "Signal_312", "annotations": "Annotation_312", "tanggal_tes": "2024-11-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +314 1 {"jenis": "Type2", "durasi": 13.34, "record": "Record_313", "signals": "Signal_313", "annotations": "Annotation_313", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +315 1 {"jenis": "Type2", "durasi": 5.74, "record": "Record_314", "signals": "Signal_314", "annotations": "Annotation_314", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +316 1 {"jenis": "Type2", "durasi": 5.25, "record": "Record_315", "signals": "Signal_315", "annotations": "Annotation_315", "tanggal_tes": "2024-06-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +317 1 {"jenis": "Type2", "durasi": 8.69, "record": "Record_316", "signals": "Signal_316", "annotations": "Annotation_316", "tanggal_tes": "2025-01-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +318 1 {"jenis": "Type2", "durasi": 12.99, "record": "Record_317", "signals": "Signal_317", "annotations": "Annotation_317", "tanggal_tes": "2024-11-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +319 1 {"jenis": "Type2", "durasi": 6.58, "record": "Record_318", "signals": "Signal_318", "annotations": "Annotation_318", "tanggal_tes": "2024-09-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +320 1 {"jenis": "Type2", "durasi": 8.92, "record": "Record_319", "signals": "Signal_319", "annotations": "Annotation_319", "tanggal_tes": "2025-01-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +321 1 {"jenis": "Type1", "durasi": 18.34, "record": "Record_320", "signals": "Signal_320", "annotations": "Annotation_320", "tanggal_tes": "2024-09-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +322 1 {"jenis": "Type2", "durasi": 12.09, "record": "Record_321", "signals": "Signal_321", "annotations": "Annotation_321", "tanggal_tes": "2024-12-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +323 1 {"jenis": "Type1", "durasi": 9.51, "record": "Record_322", "signals": "Signal_322", "annotations": "Annotation_322", "tanggal_tes": "2024-02-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +324 1 {"jenis": "Type2", "durasi": 18.11, "record": "Record_323", "signals": "Signal_323", "annotations": "Annotation_323", "tanggal_tes": "2024-08-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +325 1 {"jenis": "Type1", "durasi": 18.43, "record": "Record_324", "signals": "Signal_324", "annotations": "Annotation_324", "tanggal_tes": "2024-10-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +326 1 {"jenis": "Type2", "durasi": 19.56, "record": "Record_325", "signals": "Signal_325", "annotations": "Annotation_325", "tanggal_tes": "2025-01-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +327 1 {"jenis": "Type2", "durasi": 5.03, "record": "Record_326", "signals": "Signal_326", "annotations": "Annotation_326", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +328 1 {"jenis": "Type1", "durasi": 11.84, "record": "Record_327", "signals": "Signal_327", "annotations": "Annotation_327", "tanggal_tes": "2024-02-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +329 1 {"jenis": "Type1", "durasi": 11.83, "record": "Record_328", "signals": "Signal_328", "annotations": "Annotation_328", "tanggal_tes": "2024-11-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +330 1 {"jenis": "Type1", "durasi": 14.84, "record": "Record_329", "signals": "Signal_329", "annotations": "Annotation_329", "tanggal_tes": "2024-02-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +331 1 {"jenis": "Type1", "durasi": 9.22, "record": "Record_330", "signals": "Signal_330", "annotations": "Annotation_330", "tanggal_tes": "2024-02-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +332 1 {"jenis": "Type1", "durasi": 10.43, "record": "Record_331", "signals": "Signal_331", "annotations": "Annotation_331", "tanggal_tes": "2024-07-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +333 1 {"jenis": "Type1", "durasi": 15.44, "record": "Record_332", "signals": "Signal_332", "annotations": "Annotation_332", "tanggal_tes": "2024-02-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +334 1 {"jenis": "Type1", "durasi": 17.42, "record": "Record_333", "signals": "Signal_333", "annotations": "Annotation_333", "tanggal_tes": "2024-06-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +335 1 {"jenis": "Type2", "durasi": 16.45, "record": "Record_334", "signals": "Signal_334", "annotations": "Annotation_334", "tanggal_tes": "2024-05-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +336 1 {"jenis": "Type1", "durasi": 5.66, "record": "Record_335", "signals": "Signal_335", "annotations": "Annotation_335", "tanggal_tes": "2024-06-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +337 1 {"jenis": "Type2", "durasi": 9.16, "record": "Record_336", "signals": "Signal_336", "annotations": "Annotation_336", "tanggal_tes": "2024-06-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +338 1 {"jenis": "Type1", "durasi": 9.29, "record": "Record_337", "signals": "Signal_337", "annotations": "Annotation_337", "tanggal_tes": "2024-03-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +339 1 {"jenis": "Type1", "durasi": 17.12, "record": "Record_338", "signals": "Signal_338", "annotations": "Annotation_338", "tanggal_tes": "2024-12-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +340 1 {"jenis": "Type1", "durasi": 11.54, "record": "Record_339", "signals": "Signal_339", "annotations": "Annotation_339", "tanggal_tes": "2024-04-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +341 1 {"jenis": "Type2", "durasi": 7.11, "record": "Record_340", "signals": "Signal_340", "annotations": "Annotation_340", "tanggal_tes": "2024-11-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +342 1 {"jenis": "Type1", "durasi": 16.38, "record": "Record_341", "signals": "Signal_341", "annotations": "Annotation_341", "tanggal_tes": "2024-06-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +343 1 {"jenis": "Type1", "durasi": 9.17, "record": "Record_342", "signals": "Signal_342", "annotations": "Annotation_342", "tanggal_tes": "2024-06-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +344 1 {"jenis": "Type2", "durasi": 5.35, "record": "Record_343", "signals": "Signal_343", "annotations": "Annotation_343", "tanggal_tes": "2024-11-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +345 1 {"jenis": "Type1", "durasi": 9.39, "record": "Record_344", "signals": "Signal_344", "annotations": "Annotation_344", "tanggal_tes": "2024-12-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +346 1 {"jenis": "Type1", "durasi": 10.68, "record": "Record_345", "signals": "Signal_345", "annotations": "Annotation_345", "tanggal_tes": "2024-07-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +347 1 {"jenis": "Type1", "durasi": 13.7, "record": "Record_346", "signals": "Signal_346", "annotations": "Annotation_346", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +348 1 {"jenis": "Type1", "durasi": 17.78, "record": "Record_347", "signals": "Signal_347", "annotations": "Annotation_347", "tanggal_tes": "2024-03-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +349 1 {"jenis": "Type2", "durasi": 5.85, "record": "Record_348", "signals": "Signal_348", "annotations": "Annotation_348", "tanggal_tes": "2025-01-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +350 1 {"jenis": "Type1", "durasi": 5.46, "record": "Record_349", "signals": "Signal_349", "annotations": "Annotation_349", "tanggal_tes": "2024-11-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +351 1 {"jenis": "Type2", "durasi": 6.48, "record": "Record_350", "signals": "Signal_350", "annotations": "Annotation_350", "tanggal_tes": "2024-10-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +352 1 {"jenis": "Type1", "durasi": 5.64, "record": "Record_351", "signals": "Signal_351", "annotations": "Annotation_351", "tanggal_tes": "2024-03-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +353 1 {"jenis": "Type2", "durasi": 16.92, "record": "Record_352", "signals": "Signal_352", "annotations": "Annotation_352", "tanggal_tes": "2024-10-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +354 1 {"jenis": "Type1", "durasi": 9.12, "record": "Record_353", "signals": "Signal_353", "annotations": "Annotation_353", "tanggal_tes": "2024-03-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +355 1 {"jenis": "Type1", "durasi": 11.43, "record": "Record_354", "signals": "Signal_354", "annotations": "Annotation_354", "tanggal_tes": "2024-05-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +356 1 {"jenis": "Type1", "durasi": 9.12, "record": "Record_355", "signals": "Signal_355", "annotations": "Annotation_355", "tanggal_tes": "2024-11-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +357 1 {"jenis": "Type1", "durasi": 5.59, "record": "Record_356", "signals": "Signal_356", "annotations": "Annotation_356", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +358 1 {"jenis": "Type1", "durasi": 15.46, "record": "Record_357", "signals": "Signal_357", "annotations": "Annotation_357", "tanggal_tes": "2024-02-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +359 1 {"jenis": "Type1", "durasi": 7.95, "record": "Record_358", "signals": "Signal_358", "annotations": "Annotation_358", "tanggal_tes": "2024-03-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +360 1 {"jenis": "Type2", "durasi": 5.91, "record": "Record_359", "signals": "Signal_359", "annotations": "Annotation_359", "tanggal_tes": "2024-08-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +361 1 {"jenis": "Type2", "durasi": 9.3, "record": "Record_360", "signals": "Signal_360", "annotations": "Annotation_360", "tanggal_tes": "2024-01-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +362 1 {"jenis": "Type2", "durasi": 5.7, "record": "Record_361", "signals": "Signal_361", "annotations": "Annotation_361", "tanggal_tes": "2024-07-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +363 1 {"jenis": "Type2", "durasi": 7, "record": "Record_362", "signals": "Signal_362", "annotations": "Annotation_362", "tanggal_tes": "2024-10-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +364 1 {"jenis": "Type2", "durasi": 14.44, "record": "Record_363", "signals": "Signal_363", "annotations": "Annotation_363", "tanggal_tes": "2024-04-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +365 1 {"jenis": "Type1", "durasi": 14.87, "record": "Record_364", "signals": "Signal_364", "annotations": "Annotation_364", "tanggal_tes": "2024-08-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +366 1 {"jenis": "Type1", "durasi": 17.81, "record": "Record_365", "signals": "Signal_365", "annotations": "Annotation_365", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +367 1 {"jenis": "Type2", "durasi": 13.53, "record": "Record_366", "signals": "Signal_366", "annotations": "Annotation_366", "tanggal_tes": "2024-03-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +368 1 {"jenis": "Type1", "durasi": 14.75, "record": "Record_367", "signals": "Signal_367", "annotations": "Annotation_367", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +369 1 {"jenis": "Type2", "durasi": 8.92, "record": "Record_368", "signals": "Signal_368", "annotations": "Annotation_368", "tanggal_tes": "2025-01-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +370 1 {"jenis": "Type2", "durasi": 6.5600000000000005, "record": "Record_369", "signals": "Signal_369", "annotations": "Annotation_369", "tanggal_tes": "2024-09-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +371 1 {"jenis": "Type2", "durasi": 11.36, "record": "Record_370", "signals": "Signal_370", "annotations": "Annotation_370", "tanggal_tes": "2025-01-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +372 1 {"jenis": "Type2", "durasi": 16.36, "record": "Record_371", "signals": "Signal_371", "annotations": "Annotation_371", "tanggal_tes": "2024-10-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +373 1 {"jenis": "Type1", "durasi": 13.25, "record": "Record_372", "signals": "Signal_372", "annotations": "Annotation_372", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +374 1 {"jenis": "Type1", "durasi": 18.71, "record": "Record_373", "signals": "Signal_373", "annotations": "Annotation_373", "tanggal_tes": "2024-05-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +375 1 {"jenis": "Type2", "durasi": 11.92, "record": "Record_374", "signals": "Signal_374", "annotations": "Annotation_374", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +376 1 {"jenis": "Type1", "durasi": 20.75, "record": "Record_375", "signals": "Signal_375", "annotations": "Annotation_375", "tanggal_tes": "2024-06-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +377 1 {"jenis": "Type2", "durasi": 5.85, "record": "Record_376", "signals": "Signal_376", "annotations": "Annotation_376", "tanggal_tes": "2024-12-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +378 1 {"jenis": "Type2", "durasi": 8.02, "record": "Record_377", "signals": "Signal_377", "annotations": "Annotation_377", "tanggal_tes": "2025-01-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +379 1 {"jenis": "Type1", "durasi": 19.73, "record": "Record_378", "signals": "Signal_378", "annotations": "Annotation_378", "tanggal_tes": "2024-10-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +380 1 {"jenis": "Type2", "durasi": 7.74, "record": "Record_379", "signals": "Signal_379", "annotations": "Annotation_379", "tanggal_tes": "2024-10-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +381 1 {"jenis": "Type2", "durasi": 12.21, "record": "Record_380", "signals": "Signal_380", "annotations": "Annotation_380", "tanggal_tes": "2024-06-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +382 1 {"jenis": "Type2", "durasi": 12.06, "record": "Record_381", "signals": "Signal_381", "annotations": "Annotation_381", "tanggal_tes": "2024-09-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +383 1 {"jenis": "Type1", "durasi": 9.55, "record": "Record_382", "signals": "Signal_382", "annotations": "Annotation_382", "tanggal_tes": "2024-12-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +384 1 {"jenis": "Type2", "durasi": 13.17, "record": "Record_383", "signals": "Signal_383", "annotations": "Annotation_383", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +385 1 {"jenis": "Type1", "durasi": 5.61, "record": "Record_384", "signals": "Signal_384", "annotations": "Annotation_384", "tanggal_tes": "2024-12-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +386 1 {"jenis": "Type1", "durasi": 14.36, "record": "Record_385", "signals": "Signal_385", "annotations": "Annotation_385", "tanggal_tes": "2024-05-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +387 1 {"jenis": "Type2", "durasi": 10.41, "record": "Record_386", "signals": "Signal_386", "annotations": "Annotation_386", "tanggal_tes": "2024-05-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +388 1 {"jenis": "Type2", "durasi": 5.22, "record": "Record_387", "signals": "Signal_387", "annotations": "Annotation_387", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +389 1 {"jenis": "Type2", "durasi": 14.67, "record": "Record_388", "signals": "Signal_388", "annotations": "Annotation_388", "tanggal_tes": "2024-08-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +390 1 {"jenis": "Type1", "durasi": 7.13, "record": "Record_389", "signals": "Signal_389", "annotations": "Annotation_389", "tanggal_tes": "2024-03-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +391 1 {"jenis": "Type1", "durasi": 16.45, "record": "Record_390", "signals": "Signal_390", "annotations": "Annotation_390", "tanggal_tes": "2024-10-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +392 1 {"jenis": "Type2", "durasi": 11.75, "record": "Record_391", "signals": "Signal_391", "annotations": "Annotation_391", "tanggal_tes": "2024-04-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +393 1 {"jenis": "Type1", "durasi": 12.67, "record": "Record_392", "signals": "Signal_392", "annotations": "Annotation_392", "tanggal_tes": "2024-08-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +394 1 {"jenis": "Type1", "durasi": 12.18, "record": "Record_393", "signals": "Signal_393", "annotations": "Annotation_393", "tanggal_tes": "2024-03-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +395 1 {"jenis": "Type2", "durasi": 5.09, "record": "Record_394", "signals": "Signal_394", "annotations": "Annotation_394", "tanggal_tes": "2025-01-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +396 1 {"jenis": "Type2", "durasi": 20.86, "record": "Record_395", "signals": "Signal_395", "annotations": "Annotation_395", "tanggal_tes": "2024-08-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +397 1 {"jenis": "Type1", "durasi": 8.37, "record": "Record_396", "signals": "Signal_396", "annotations": "Annotation_396", "tanggal_tes": "2024-02-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +398 1 {"jenis": "Type1", "durasi": 7.1, "record": "Record_397", "signals": "Signal_397", "annotations": "Annotation_397", "tanggal_tes": "2024-07-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +399 1 {"jenis": "Type1", "durasi": 9.93, "record": "Record_398", "signals": "Signal_398", "annotations": "Annotation_398", "tanggal_tes": "2024-07-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +400 1 {"jenis": "Type1", "durasi": 19.65, "record": "Record_399", "signals": "Signal_399", "annotations": "Annotation_399", "tanggal_tes": "2024-04-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +401 1 {"jenis": "Type1", "durasi": 8.09, "record": "Record_400", "signals": "Signal_400", "annotations": "Annotation_400", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +402 1 {"jenis": "Type2", "durasi": 12.78, "record": "Record_401", "signals": "Signal_401", "annotations": "Annotation_401", "tanggal_tes": "2024-08-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +403 1 {"jenis": "Type2", "durasi": 14.4, "record": "Record_402", "signals": "Signal_402", "annotations": "Annotation_402", "tanggal_tes": "2024-05-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +404 1 {"jenis": "Type2", "durasi": 16.3, "record": "Record_403", "signals": "Signal_403", "annotations": "Annotation_403", "tanggal_tes": "2024-09-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +405 1 {"jenis": "Type1", "durasi": 18.36, "record": "Record_404", "signals": "Signal_404", "annotations": "Annotation_404", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +406 1 {"jenis": "Type2", "durasi": 7.15, "record": "Record_405", "signals": "Signal_405", "annotations": "Annotation_405", "tanggal_tes": "2024-02-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +407 1 {"jenis": "Type2", "durasi": 17, "record": "Record_406", "signals": "Signal_406", "annotations": "Annotation_406", "tanggal_tes": "2024-05-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +408 1 {"jenis": "Type1", "durasi": 16.16, "record": "Record_407", "signals": "Signal_407", "annotations": "Annotation_407", "tanggal_tes": "2024-11-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +409 1 {"jenis": "Type1", "durasi": 12.94, "record": "Record_408", "signals": "Signal_408", "annotations": "Annotation_408", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +410 1 {"jenis": "Type1", "durasi": 6.39, "record": "Record_409", "signals": "Signal_409", "annotations": "Annotation_409", "tanggal_tes": "2024-03-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +411 1 {"jenis": "Type1", "durasi": 19.03, "record": "Record_410", "signals": "Signal_410", "annotations": "Annotation_410", "tanggal_tes": "2024-08-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +412 1 {"jenis": "Type2", "durasi": 5.59, "record": "Record_411", "signals": "Signal_411", "annotations": "Annotation_411", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +413 1 {"jenis": "Type1", "durasi": 13.82, "record": "Record_412", "signals": "Signal_412", "annotations": "Annotation_412", "tanggal_tes": "2024-03-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +414 1 {"jenis": "Type2", "durasi": 13.38, "record": "Record_413", "signals": "Signal_413", "annotations": "Annotation_413", "tanggal_tes": "2024-04-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +415 1 {"jenis": "Type2", "durasi": 13.42, "record": "Record_414", "signals": "Signal_414", "annotations": "Annotation_414", "tanggal_tes": "2024-12-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +416 1 {"jenis": "Type1", "durasi": 20.63, "record": "Record_415", "signals": "Signal_415", "annotations": "Annotation_415", "tanggal_tes": "2024-04-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +417 1 {"jenis": "Type1", "durasi": 10.72, "record": "Record_416", "signals": "Signal_416", "annotations": "Annotation_416", "tanggal_tes": "2025-01-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +418 1 {"jenis": "Type2", "durasi": 16.47, "record": "Record_417", "signals": "Signal_417", "annotations": "Annotation_417", "tanggal_tes": "2025-01-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +419 1 {"jenis": "Type1", "durasi": 16.46, "record": "Record_418", "signals": "Signal_418", "annotations": "Annotation_418", "tanggal_tes": "2024-11-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +420 1 {"jenis": "Type2", "durasi": 20.18, "record": "Record_419", "signals": "Signal_419", "annotations": "Annotation_419", "tanggal_tes": "2024-09-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +421 1 {"jenis": "Type2", "durasi": 16.9, "record": "Record_420", "signals": "Signal_420", "annotations": "Annotation_420", "tanggal_tes": "2024-07-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +422 1 {"jenis": "Type1", "durasi": 19.36, "record": "Record_421", "signals": "Signal_421", "annotations": "Annotation_421", "tanggal_tes": "2025-01-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +423 1 {"jenis": "Type2", "durasi": 10.87, "record": "Record_422", "signals": "Signal_422", "annotations": "Annotation_422", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +424 1 {"jenis": "Type2", "durasi": 19.96, "record": "Record_423", "signals": "Signal_423", "annotations": "Annotation_423", "tanggal_tes": "2024-07-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +425 1 {"jenis": "Type2", "durasi": 13.56, "record": "Record_424", "signals": "Signal_424", "annotations": "Annotation_424", "tanggal_tes": "2024-12-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +426 1 {"jenis": "Type1", "durasi": 20.48, "record": "Record_425", "signals": "Signal_425", "annotations": "Annotation_425", "tanggal_tes": "2024-07-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +427 1 {"jenis": "Type1", "durasi": 7.75, "record": "Record_426", "signals": "Signal_426", "annotations": "Annotation_426", "tanggal_tes": "2024-05-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +428 1 {"jenis": "Type1", "durasi": 14.23, "record": "Record_427", "signals": "Signal_427", "annotations": "Annotation_427", "tanggal_tes": "2024-07-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +429 1 {"jenis": "Type2", "durasi": 18.84, "record": "Record_428", "signals": "Signal_428", "annotations": "Annotation_428", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +430 1 {"jenis": "Type2", "durasi": 9.79, "record": "Record_429", "signals": "Signal_429", "annotations": "Annotation_429", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +431 1 {"jenis": "Type2", "durasi": 14.18, "record": "Record_430", "signals": "Signal_430", "annotations": "Annotation_430", "tanggal_tes": "2024-03-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +432 1 {"jenis": "Type2", "durasi": 9.53, "record": "Record_431", "signals": "Signal_431", "annotations": "Annotation_431", "tanggal_tes": "2024-12-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +433 1 {"jenis": "Type2", "durasi": 6.53, "record": "Record_432", "signals": "Signal_432", "annotations": "Annotation_432", "tanggal_tes": "2024-11-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +434 1 {"jenis": "Type2", "durasi": 14.05, "record": "Record_433", "signals": "Signal_433", "annotations": "Annotation_433", "tanggal_tes": "2024-10-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +435 1 {"jenis": "Type1", "durasi": 14.24, "record": "Record_434", "signals": "Signal_434", "annotations": "Annotation_434", "tanggal_tes": "2024-10-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +436 1 {"jenis": "Type2", "durasi": 10.12, "record": "Record_435", "signals": "Signal_435", "annotations": "Annotation_435", "tanggal_tes": "2024-06-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +437 1 {"jenis": "Type1", "durasi": 16.1, "record": "Record_436", "signals": "Signal_436", "annotations": "Annotation_436", "tanggal_tes": "2024-06-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +438 1 {"jenis": "Type1", "durasi": 16.76, "record": "Record_437", "signals": "Signal_437", "annotations": "Annotation_437", "tanggal_tes": "2024-02-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +439 1 {"jenis": "Type1", "durasi": 16.26, "record": "Record_438", "signals": "Signal_438", "annotations": "Annotation_438", "tanggal_tes": "2024-04-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +440 1 {"jenis": "Type2", "durasi": 20.05, "record": "Record_439", "signals": "Signal_439", "annotations": "Annotation_439", "tanggal_tes": "2024-10-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +441 1 {"jenis": "Type1", "durasi": 5.96, "record": "Record_440", "signals": "Signal_440", "annotations": "Annotation_440", "tanggal_tes": "2024-04-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +442 1 {"jenis": "Type1", "durasi": 9.83, "record": "Record_441", "signals": "Signal_441", "annotations": "Annotation_441", "tanggal_tes": "2024-12-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +443 1 {"jenis": "Type1", "durasi": 8.96, "record": "Record_442", "signals": "Signal_442", "annotations": "Annotation_442", "tanggal_tes": "2024-07-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +444 1 {"jenis": "Type2", "durasi": 20.76, "record": "Record_443", "signals": "Signal_443", "annotations": "Annotation_443", "tanggal_tes": "2024-08-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +445 1 {"jenis": "Type1", "durasi": 18.42, "record": "Record_444", "signals": "Signal_444", "annotations": "Annotation_444", "tanggal_tes": "2024-06-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +446 1 {"jenis": "Type1", "durasi": 18.29, "record": "Record_445", "signals": "Signal_445", "annotations": "Annotation_445", "tanggal_tes": "2024-07-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +447 1 {"jenis": "Type2", "durasi": 11.12, "record": "Record_446", "signals": "Signal_446", "annotations": "Annotation_446", "tanggal_tes": "2024-04-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +448 1 {"jenis": "Type2", "durasi": 19.24, "record": "Record_447", "signals": "Signal_447", "annotations": "Annotation_447", "tanggal_tes": "2025-01-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +449 1 {"jenis": "Type2", "durasi": 20.99, "record": "Record_448", "signals": "Signal_448", "annotations": "Annotation_448", "tanggal_tes": "2024-03-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +450 1 {"jenis": "Type2", "durasi": 9.86, "record": "Record_449", "signals": "Signal_449", "annotations": "Annotation_449", "tanggal_tes": "2024-04-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +451 1 {"jenis": "Type2", "durasi": 10.1, "record": "Record_450", "signals": "Signal_450", "annotations": "Annotation_450", "tanggal_tes": "2024-04-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +452 1 {"jenis": "Type1", "durasi": 13.5, "record": "Record_451", "signals": "Signal_451", "annotations": "Annotation_451", "tanggal_tes": "2024-12-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +453 1 {"jenis": "Type1", "durasi": 20.95, "record": "Record_452", "signals": "Signal_452", "annotations": "Annotation_452", "tanggal_tes": "2024-09-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +454 1 {"jenis": "Type2", "durasi": 7.32, "record": "Record_453", "signals": "Signal_453", "annotations": "Annotation_453", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +455 1 {"jenis": "Type1", "durasi": 9.46, "record": "Record_454", "signals": "Signal_454", "annotations": "Annotation_454", "tanggal_tes": "2025-01-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +456 1 {"jenis": "Type1", "durasi": 14.1, "record": "Record_455", "signals": "Signal_455", "annotations": "Annotation_455", "tanggal_tes": "2024-12-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +457 1 {"jenis": "Type2", "durasi": 6.97, "record": "Record_456", "signals": "Signal_456", "annotations": "Annotation_456", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +458 1 {"jenis": "Type1", "durasi": 8.77, "record": "Record_457", "signals": "Signal_457", "annotations": "Annotation_457", "tanggal_tes": "2024-12-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +459 1 {"jenis": "Type2", "durasi": 14.33, "record": "Record_458", "signals": "Signal_458", "annotations": "Annotation_458", "tanggal_tes": "2024-04-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +460 1 {"jenis": "Type1", "durasi": 9.27, "record": "Record_459", "signals": "Signal_459", "annotations": "Annotation_459", "tanggal_tes": "2024-08-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +461 1 {"jenis": "Type2", "durasi": 14.66, "record": "Record_460", "signals": "Signal_460", "annotations": "Annotation_460", "tanggal_tes": "2024-08-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +462 1 {"jenis": "Type1", "durasi": 11.61, "record": "Record_461", "signals": "Signal_461", "annotations": "Annotation_461", "tanggal_tes": "2024-12-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +463 1 {"jenis": "Type1", "durasi": 14.35, "record": "Record_462", "signals": "Signal_462", "annotations": "Annotation_462", "tanggal_tes": "2024-02-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +464 1 {"jenis": "Type2", "durasi": 12.07, "record": "Record_463", "signals": "Signal_463", "annotations": "Annotation_463", "tanggal_tes": "2024-06-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +465 1 {"jenis": "Type1", "durasi": 20.25, "record": "Record_464", "signals": "Signal_464", "annotations": "Annotation_464", "tanggal_tes": "2024-07-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +466 1 {"jenis": "Type2", "durasi": 12.19, "record": "Record_465", "signals": "Signal_465", "annotations": "Annotation_465", "tanggal_tes": "2024-09-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +467 1 {"jenis": "Type1", "durasi": 20.29, "record": "Record_466", "signals": "Signal_466", "annotations": "Annotation_466", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +468 1 {"jenis": "Type2", "durasi": 14.72, "record": "Record_467", "signals": "Signal_467", "annotations": "Annotation_467", "tanggal_tes": "2024-09-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +469 1 {"jenis": "Type2", "durasi": 17.61, "record": "Record_468", "signals": "Signal_468", "annotations": "Annotation_468", "tanggal_tes": "2024-12-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +470 1 {"jenis": "Type1", "durasi": 10.82, "record": "Record_469", "signals": "Signal_469", "annotations": "Annotation_469", "tanggal_tes": "2024-08-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +471 1 {"jenis": "Type2", "durasi": 14.78, "record": "Record_470", "signals": "Signal_470", "annotations": "Annotation_470", "tanggal_tes": "2024-10-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +472 1 {"jenis": "Type2", "durasi": 17.19, "record": "Record_471", "signals": "Signal_471", "annotations": "Annotation_471", "tanggal_tes": "2024-10-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +473 1 {"jenis": "Type1", "durasi": 6.22, "record": "Record_472", "signals": "Signal_472", "annotations": "Annotation_472", "tanggal_tes": "2024-05-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +474 1 {"jenis": "Type1", "durasi": 15.8, "record": "Record_473", "signals": "Signal_473", "annotations": "Annotation_473", "tanggal_tes": "2024-12-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +475 1 {"jenis": "Type1", "durasi": 7.13, "record": "Record_474", "signals": "Signal_474", "annotations": "Annotation_474", "tanggal_tes": "2024-01-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +476 1 {"jenis": "Type2", "durasi": 5.55, "record": "Record_475", "signals": "Signal_475", "annotations": "Annotation_475", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +477 1 {"jenis": "Type1", "durasi": 18.8, "record": "Record_476", "signals": "Signal_476", "annotations": "Annotation_476", "tanggal_tes": "2024-03-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +478 1 {"jenis": "Type1", "durasi": 11.71, "record": "Record_477", "signals": "Signal_477", "annotations": "Annotation_477", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +479 1 {"jenis": "Type2", "durasi": 12.49, "record": "Record_478", "signals": "Signal_478", "annotations": "Annotation_478", "tanggal_tes": "2024-04-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +480 1 {"jenis": "Type1", "durasi": 8.34, "record": "Record_479", "signals": "Signal_479", "annotations": "Annotation_479", "tanggal_tes": "2024-11-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +481 1 {"jenis": "Type1", "durasi": 10.81, "record": "Record_480", "signals": "Signal_480", "annotations": "Annotation_480", "tanggal_tes": "2024-10-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +482 1 {"jenis": "Type2", "durasi": 5.25, "record": "Record_481", "signals": "Signal_481", "annotations": "Annotation_481", "tanggal_tes": "2024-05-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +483 1 {"jenis": "Type1", "durasi": 10.34, "record": "Record_482", "signals": "Signal_482", "annotations": "Annotation_482", "tanggal_tes": "2024-03-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +484 1 {"jenis": "Type2", "durasi": 10.47, "record": "Record_483", "signals": "Signal_483", "annotations": "Annotation_483", "tanggal_tes": "2024-05-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +485 1 {"jenis": "Type1", "durasi": 11.98, "record": "Record_484", "signals": "Signal_484", "annotations": "Annotation_484", "tanggal_tes": "2024-06-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +486 1 {"jenis": "Type1", "durasi": 12.84, "record": "Record_485", "signals": "Signal_485", "annotations": "Annotation_485", "tanggal_tes": "2024-04-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +487 1 {"jenis": "Type1", "durasi": 19.56, "record": "Record_486", "signals": "Signal_486", "annotations": "Annotation_486", "tanggal_tes": "2024-10-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +488 1 {"jenis": "Type2", "durasi": 10.46, "record": "Record_487", "signals": "Signal_487", "annotations": "Annotation_487", "tanggal_tes": "2024-10-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +489 1 {"jenis": "Type1", "durasi": 9.39, "record": "Record_488", "signals": "Signal_488", "annotations": "Annotation_488", "tanggal_tes": "2024-04-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +490 1 {"jenis": "Type1", "durasi": 9.61, "record": "Record_489", "signals": "Signal_489", "annotations": "Annotation_489", "tanggal_tes": "2024-10-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +491 1 {"jenis": "Type2", "durasi": 16.33, "record": "Record_490", "signals": "Signal_490", "annotations": "Annotation_490", "tanggal_tes": "2024-07-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +492 1 {"jenis": "Type1", "durasi": 7.88, "record": "Record_491", "signals": "Signal_491", "annotations": "Annotation_491", "tanggal_tes": "2024-06-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +493 1 {"jenis": "Type1", "durasi": 19.1, "record": "Record_492", "signals": "Signal_492", "annotations": "Annotation_492", "tanggal_tes": "2024-08-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +494 1 {"jenis": "Type1", "durasi": 18.18, "record": "Record_493", "signals": "Signal_493", "annotations": "Annotation_493", "tanggal_tes": "2024-05-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +495 1 {"jenis": "Type2", "durasi": 17.07, "record": "Record_494", "signals": "Signal_494", "annotations": "Annotation_494", "tanggal_tes": "2024-09-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +496 1 {"jenis": "Type1", "durasi": 19.6, "record": "Record_495", "signals": "Signal_495", "annotations": "Annotation_495", "tanggal_tes": "2024-07-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +497 1 {"jenis": "Type1", "durasi": 6.33, "record": "Record_496", "signals": "Signal_496", "annotations": "Annotation_496", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +498 1 {"jenis": "Type1", "durasi": 12.11, "record": "Record_497", "signals": "Signal_497", "annotations": "Annotation_497", "tanggal_tes": "2024-11-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +499 1 {"jenis": "Type2", "durasi": 17.19, "record": "Record_498", "signals": "Signal_498", "annotations": "Annotation_498", "tanggal_tes": "2024-04-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +500 1 {"jenis": "Type2", "durasi": 7.34, "record": "Record_499", "signals": "Signal_499", "annotations": "Annotation_499", "tanggal_tes": "2024-12-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +501 1 {"jenis": "Type1", "durasi": 10.63, "record": "Record_500", "signals": "Signal_500", "annotations": "Annotation_500", "tanggal_tes": "2024-05-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +502 1 {"jenis": "Type2", "durasi": 20.22, "record": "Record_501", "signals": "Signal_501", "annotations": "Annotation_501", "tanggal_tes": "2024-10-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +503 1 {"jenis": "Type2", "durasi": 19.23, "record": "Record_502", "signals": "Signal_502", "annotations": "Annotation_502", "tanggal_tes": "2024-08-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +504 1 {"jenis": "Type2", "durasi": 6.8100000000000005, "record": "Record_503", "signals": "Signal_503", "annotations": "Annotation_503", "tanggal_tes": "2024-09-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +505 1 {"jenis": "Type2", "durasi": 5.35, "record": "Record_504", "signals": "Signal_504", "annotations": "Annotation_504", "tanggal_tes": "2025-01-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +506 1 {"jenis": "Type2", "durasi": 5.76, "record": "Record_505", "signals": "Signal_505", "annotations": "Annotation_505", "tanggal_tes": "2024-06-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +507 1 {"jenis": "Type1", "durasi": 14.31, "record": "Record_506", "signals": "Signal_506", "annotations": "Annotation_506", "tanggal_tes": "2024-04-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +508 1 {"jenis": "Type2", "durasi": 8.04, "record": "Record_507", "signals": "Signal_507", "annotations": "Annotation_507", "tanggal_tes": "2024-04-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +509 1 {"jenis": "Type1", "durasi": 5.03, "record": "Record_508", "signals": "Signal_508", "annotations": "Annotation_508", "tanggal_tes": "2024-04-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +510 1 {"jenis": "Type1", "durasi": 17.03, "record": "Record_509", "signals": "Signal_509", "annotations": "Annotation_509", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +511 1 {"jenis": "Type2", "durasi": 13.96, "record": "Record_510", "signals": "Signal_510", "annotations": "Annotation_510", "tanggal_tes": "2024-03-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +512 1 {"jenis": "Type1", "durasi": 13.19, "record": "Record_511", "signals": "Signal_511", "annotations": "Annotation_511", "tanggal_tes": "2024-06-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +513 1 {"jenis": "Type2", "durasi": 5.37, "record": "Record_512", "signals": "Signal_512", "annotations": "Annotation_512", "tanggal_tes": "2024-12-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +514 1 {"jenis": "Type2", "durasi": 5.82, "record": "Record_513", "signals": "Signal_513", "annotations": "Annotation_513", "tanggal_tes": "2024-08-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +515 1 {"jenis": "Type1", "durasi": 12.55, "record": "Record_514", "signals": "Signal_514", "annotations": "Annotation_514", "tanggal_tes": "2024-09-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +516 1 {"jenis": "Type1", "durasi": 8.57, "record": "Record_515", "signals": "Signal_515", "annotations": "Annotation_515", "tanggal_tes": "2024-05-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +517 1 {"jenis": "Type2", "durasi": 15.85, "record": "Record_516", "signals": "Signal_516", "annotations": "Annotation_516", "tanggal_tes": "2024-03-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +518 1 {"jenis": "Type1", "durasi": 14.65, "record": "Record_517", "signals": "Signal_517", "annotations": "Annotation_517", "tanggal_tes": "2024-10-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +519 1 {"jenis": "Type1", "durasi": 19.47, "record": "Record_518", "signals": "Signal_518", "annotations": "Annotation_518", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +520 1 {"jenis": "Type1", "durasi": 20.05, "record": "Record_519", "signals": "Signal_519", "annotations": "Annotation_519", "tanggal_tes": "2024-09-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +521 1 {"jenis": "Type1", "durasi": 8.46, "record": "Record_520", "signals": "Signal_520", "annotations": "Annotation_520", "tanggal_tes": "2025-01-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +522 1 {"jenis": "Type2", "durasi": 11.14, "record": "Record_521", "signals": "Signal_521", "annotations": "Annotation_521", "tanggal_tes": "2024-05-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +523 1 {"jenis": "Type1", "durasi": 7.66, "record": "Record_522", "signals": "Signal_522", "annotations": "Annotation_522", "tanggal_tes": "2024-06-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +524 1 {"jenis": "Type2", "durasi": 15.68, "record": "Record_523", "signals": "Signal_523", "annotations": "Annotation_523", "tanggal_tes": "2024-11-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +525 1 {"jenis": "Type1", "durasi": 19.14, "record": "Record_524", "signals": "Signal_524", "annotations": "Annotation_524", "tanggal_tes": "2024-06-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +526 1 {"jenis": "Type2", "durasi": 10.16, "record": "Record_525", "signals": "Signal_525", "annotations": "Annotation_525", "tanggal_tes": "2024-08-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +527 1 {"jenis": "Type2", "durasi": 5.35, "record": "Record_526", "signals": "Signal_526", "annotations": "Annotation_526", "tanggal_tes": "2024-07-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +528 1 {"jenis": "Type2", "durasi": 5.54, "record": "Record_527", "signals": "Signal_527", "annotations": "Annotation_527", "tanggal_tes": "2024-07-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +529 1 {"jenis": "Type2", "durasi": 7.72, "record": "Record_528", "signals": "Signal_528", "annotations": "Annotation_528", "tanggal_tes": "2025-01-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +530 1 {"jenis": "Type2", "durasi": 11.99, "record": "Record_529", "signals": "Signal_529", "annotations": "Annotation_529", "tanggal_tes": "2024-10-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +531 1 {"jenis": "Type2", "durasi": 18.15, "record": "Record_530", "signals": "Signal_530", "annotations": "Annotation_530", "tanggal_tes": "2024-05-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +532 1 {"jenis": "Type2", "durasi": 19.51, "record": "Record_531", "signals": "Signal_531", "annotations": "Annotation_531", "tanggal_tes": "2024-02-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +533 1 {"jenis": "Type2", "durasi": 11.44, "record": "Record_532", "signals": "Signal_532", "annotations": "Annotation_532", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +534 1 {"jenis": "Type2", "durasi": 5.8, "record": "Record_533", "signals": "Signal_533", "annotations": "Annotation_533", "tanggal_tes": "2024-09-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +535 1 {"jenis": "Type1", "durasi": 5.17, "record": "Record_534", "signals": "Signal_534", "annotations": "Annotation_534", "tanggal_tes": "2024-12-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +536 1 {"jenis": "Type1", "durasi": 9.92, "record": "Record_535", "signals": "Signal_535", "annotations": "Annotation_535", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +537 1 {"jenis": "Type2", "durasi": 7.35, "record": "Record_536", "signals": "Signal_536", "annotations": "Annotation_536", "tanggal_tes": "2024-04-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +538 1 {"jenis": "Type2", "durasi": 12.46, "record": "Record_537", "signals": "Signal_537", "annotations": "Annotation_537", "tanggal_tes": "2024-11-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +539 1 {"jenis": "Type1", "durasi": 14.05, "record": "Record_538", "signals": "Signal_538", "annotations": "Annotation_538", "tanggal_tes": "2024-03-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +540 1 {"jenis": "Type2", "durasi": 10.05, "record": "Record_539", "signals": "Signal_539", "annotations": "Annotation_539", "tanggal_tes": "2024-12-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +541 1 {"jenis": "Type2", "durasi": 9.42, "record": "Record_540", "signals": "Signal_540", "annotations": "Annotation_540", "tanggal_tes": "2024-05-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +542 1 {"jenis": "Type2", "durasi": 6.18, "record": "Record_541", "signals": "Signal_541", "annotations": "Annotation_541", "tanggal_tes": "2024-02-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +543 1 {"jenis": "Type1", "durasi": 10.29, "record": "Record_542", "signals": "Signal_542", "annotations": "Annotation_542", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +544 1 {"jenis": "Type1", "durasi": 13.56, "record": "Record_543", "signals": "Signal_543", "annotations": "Annotation_543", "tanggal_tes": "2024-04-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +545 1 {"jenis": "Type1", "durasi": 19.65, "record": "Record_544", "signals": "Signal_544", "annotations": "Annotation_544", "tanggal_tes": "2024-05-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +546 1 {"jenis": "Type1", "durasi": 15.49, "record": "Record_545", "signals": "Signal_545", "annotations": "Annotation_545", "tanggal_tes": "2024-09-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +547 1 {"jenis": "Type1", "durasi": 12.68, "record": "Record_546", "signals": "Signal_546", "annotations": "Annotation_546", "tanggal_tes": "2024-03-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +548 1 {"jenis": "Type2", "durasi": 8.19, "record": "Record_547", "signals": "Signal_547", "annotations": "Annotation_547", "tanggal_tes": "2024-01-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +549 1 {"jenis": "Type2", "durasi": 17, "record": "Record_548", "signals": "Signal_548", "annotations": "Annotation_548", "tanggal_tes": "2024-02-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +550 1 {"jenis": "Type1", "durasi": 20.86, "record": "Record_549", "signals": "Signal_549", "annotations": "Annotation_549", "tanggal_tes": "2024-02-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +551 1 {"jenis": "Type2", "durasi": 16.54, "record": "Record_550", "signals": "Signal_550", "annotations": "Annotation_550", "tanggal_tes": "2024-12-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +552 1 {"jenis": "Type2", "durasi": 13.8, "record": "Record_551", "signals": "Signal_551", "annotations": "Annotation_551", "tanggal_tes": "2024-10-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +553 1 {"jenis": "Type1", "durasi": 17.29, "record": "Record_552", "signals": "Signal_552", "annotations": "Annotation_552", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +554 1 {"jenis": "Type2", "durasi": 9.21, "record": "Record_553", "signals": "Signal_553", "annotations": "Annotation_553", "tanggal_tes": "2024-06-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +555 1 {"jenis": "Type1", "durasi": 15.47, "record": "Record_554", "signals": "Signal_554", "annotations": "Annotation_554", "tanggal_tes": "2024-10-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +556 1 {"jenis": "Type2", "durasi": 17.24, "record": "Record_555", "signals": "Signal_555", "annotations": "Annotation_555", "tanggal_tes": "2024-05-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +557 1 {"jenis": "Type1", "durasi": 12.31, "record": "Record_556", "signals": "Signal_556", "annotations": "Annotation_556", "tanggal_tes": "2024-03-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +558 1 {"jenis": "Type1", "durasi": 7.71, "record": "Record_557", "signals": "Signal_557", "annotations": "Annotation_557", "tanggal_tes": "2024-02-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +559 1 {"jenis": "Type1", "durasi": 7.98, "record": "Record_558", "signals": "Signal_558", "annotations": "Annotation_558", "tanggal_tes": "2025-01-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +560 1 {"jenis": "Type1", "durasi": 15.69, "record": "Record_559", "signals": "Signal_559", "annotations": "Annotation_559", "tanggal_tes": "2024-09-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +561 1 {"jenis": "Type1", "durasi": 8.1, "record": "Record_560", "signals": "Signal_560", "annotations": "Annotation_560", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +562 1 {"jenis": "Type2", "durasi": 7.9, "record": "Record_561", "signals": "Signal_561", "annotations": "Annotation_561", "tanggal_tes": "2024-12-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +563 1 {"jenis": "Type1", "durasi": 8.63, "record": "Record_562", "signals": "Signal_562", "annotations": "Annotation_562", "tanggal_tes": "2024-07-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +564 1 {"jenis": "Type2", "durasi": 11.47, "record": "Record_563", "signals": "Signal_563", "annotations": "Annotation_563", "tanggal_tes": "2025-01-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +565 1 {"jenis": "Type1", "durasi": 16.51, "record": "Record_564", "signals": "Signal_564", "annotations": "Annotation_564", "tanggal_tes": "2024-03-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +566 1 {"jenis": "Type1", "durasi": 19.88, "record": "Record_565", "signals": "Signal_565", "annotations": "Annotation_565", "tanggal_tes": "2024-12-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +567 1 {"jenis": "Type2", "durasi": 6.27, "record": "Record_566", "signals": "Signal_566", "annotations": "Annotation_566", "tanggal_tes": "2024-05-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +568 1 {"jenis": "Type2", "durasi": 12.06, "record": "Record_567", "signals": "Signal_567", "annotations": "Annotation_567", "tanggal_tes": "2024-02-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +569 1 {"jenis": "Type1", "durasi": 19.8, "record": "Record_568", "signals": "Signal_568", "annotations": "Annotation_568", "tanggal_tes": "2025-01-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +570 1 {"jenis": "Type1", "durasi": 10.15, "record": "Record_569", "signals": "Signal_569", "annotations": "Annotation_569", "tanggal_tes": "2025-01-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +571 1 {"jenis": "Type1", "durasi": 15.67, "record": "Record_570", "signals": "Signal_570", "annotations": "Annotation_570", "tanggal_tes": "2024-08-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +572 1 {"jenis": "Type1", "durasi": 18.12, "record": "Record_571", "signals": "Signal_571", "annotations": "Annotation_571", "tanggal_tes": "2024-06-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +573 1 {"jenis": "Type1", "durasi": 10.24, "record": "Record_572", "signals": "Signal_572", "annotations": "Annotation_572", "tanggal_tes": "2024-05-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +574 1 {"jenis": "Type1", "durasi": 19.76, "record": "Record_573", "signals": "Signal_573", "annotations": "Annotation_573", "tanggal_tes": "2024-08-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +575 1 {"jenis": "Type1", "durasi": 18.22, "record": "Record_574", "signals": "Signal_574", "annotations": "Annotation_574", "tanggal_tes": "2024-12-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +576 1 {"jenis": "Type2", "durasi": 11.01, "record": "Record_575", "signals": "Signal_575", "annotations": "Annotation_575", "tanggal_tes": "2024-09-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +577 1 {"jenis": "Type1", "durasi": 16.33, "record": "Record_576", "signals": "Signal_576", "annotations": "Annotation_576", "tanggal_tes": "2025-01-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +578 1 {"jenis": "Type2", "durasi": 19.24, "record": "Record_577", "signals": "Signal_577", "annotations": "Annotation_577", "tanggal_tes": "2024-03-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +579 1 {"jenis": "Type1", "durasi": 10.16, "record": "Record_578", "signals": "Signal_578", "annotations": "Annotation_578", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +580 1 {"jenis": "Type1", "durasi": 18.09, "record": "Record_579", "signals": "Signal_579", "annotations": "Annotation_579", "tanggal_tes": "2024-10-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +581 1 {"jenis": "Type1", "durasi": 16.37, "record": "Record_580", "signals": "Signal_580", "annotations": "Annotation_580", "tanggal_tes": "2024-10-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +582 1 {"jenis": "Type1", "durasi": 16.52, "record": "Record_581", "signals": "Signal_581", "annotations": "Annotation_581", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +583 1 {"jenis": "Type2", "durasi": 15.91, "record": "Record_582", "signals": "Signal_582", "annotations": "Annotation_582", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +584 1 {"jenis": "Type1", "durasi": 5.55, "record": "Record_583", "signals": "Signal_583", "annotations": "Annotation_583", "tanggal_tes": "2024-07-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +585 1 {"jenis": "Type1", "durasi": 9.36, "record": "Record_584", "signals": "Signal_584", "annotations": "Annotation_584", "tanggal_tes": "2024-08-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +586 1 {"jenis": "Type2", "durasi": 8.21, "record": "Record_585", "signals": "Signal_585", "annotations": "Annotation_585", "tanggal_tes": "2024-04-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +587 1 {"jenis": "Type2", "durasi": 17.5, "record": "Record_586", "signals": "Signal_586", "annotations": "Annotation_586", "tanggal_tes": "2024-07-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +588 1 {"jenis": "Type2", "durasi": 11.03, "record": "Record_587", "signals": "Signal_587", "annotations": "Annotation_587", "tanggal_tes": "2024-12-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +589 1 {"jenis": "Type2", "durasi": 19.31, "record": "Record_588", "signals": "Signal_588", "annotations": "Annotation_588", "tanggal_tes": "2025-01-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +590 1 {"jenis": "Type2", "durasi": 5.45, "record": "Record_589", "signals": "Signal_589", "annotations": "Annotation_589", "tanggal_tes": "2024-05-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +591 1 {"jenis": "Type1", "durasi": 13.88, "record": "Record_590", "signals": "Signal_590", "annotations": "Annotation_590", "tanggal_tes": "2024-08-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +592 1 {"jenis": "Type1", "durasi": 19.05, "record": "Record_591", "signals": "Signal_591", "annotations": "Annotation_591", "tanggal_tes": "2024-10-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +593 1 {"jenis": "Type1", "durasi": 18.94, "record": "Record_592", "signals": "Signal_592", "annotations": "Annotation_592", "tanggal_tes": "2025-01-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +594 1 {"jenis": "Type2", "durasi": 19.03, "record": "Record_593", "signals": "Signal_593", "annotations": "Annotation_593", "tanggal_tes": "2025-01-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +595 1 {"jenis": "Type2", "durasi": 19.65, "record": "Record_594", "signals": "Signal_594", "annotations": "Annotation_594", "tanggal_tes": "2024-08-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +596 1 {"jenis": "Type2", "durasi": 18.69, "record": "Record_595", "signals": "Signal_595", "annotations": "Annotation_595", "tanggal_tes": "2024-04-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +597 1 {"jenis": "Type2", "durasi": 13.17, "record": "Record_596", "signals": "Signal_596", "annotations": "Annotation_596", "tanggal_tes": "2024-07-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +598 1 {"jenis": "Type2", "durasi": 17.22, "record": "Record_597", "signals": "Signal_597", "annotations": "Annotation_597", "tanggal_tes": "2024-02-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +599 1 {"jenis": "Type1", "durasi": 13.23, "record": "Record_598", "signals": "Signal_598", "annotations": "Annotation_598", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +600 1 {"jenis": "Type2", "durasi": 5.03, "record": "Record_599", "signals": "Signal_599", "annotations": "Annotation_599", "tanggal_tes": "2024-12-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +601 1 {"jenis": "Type1", "durasi": 12.72, "record": "Record_600", "signals": "Signal_600", "annotations": "Annotation_600", "tanggal_tes": "2024-08-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +602 1 {"jenis": "Type2", "durasi": 6.6899999999999995, "record": "Record_601", "signals": "Signal_601", "annotations": "Annotation_601", "tanggal_tes": "2024-10-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +603 1 {"jenis": "Type2", "durasi": 6.4, "record": "Record_602", "signals": "Signal_602", "annotations": "Annotation_602", "tanggal_tes": "2024-09-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +604 1 {"jenis": "Type1", "durasi": 19.72, "record": "Record_603", "signals": "Signal_603", "annotations": "Annotation_603", "tanggal_tes": "2024-07-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +605 1 {"jenis": "Type2", "durasi": 18.14, "record": "Record_604", "signals": "Signal_604", "annotations": "Annotation_604", "tanggal_tes": "2024-05-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +606 1 {"jenis": "Type2", "durasi": 18.43, "record": "Record_605", "signals": "Signal_605", "annotations": "Annotation_605", "tanggal_tes": "2024-04-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +607 1 {"jenis": "Type1", "durasi": 15.42, "record": "Record_606", "signals": "Signal_606", "annotations": "Annotation_606", "tanggal_tes": "2024-04-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +608 1 {"jenis": "Type1", "durasi": 16.84, "record": "Record_607", "signals": "Signal_607", "annotations": "Annotation_607", "tanggal_tes": "2024-10-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +609 1 {"jenis": "Type1", "durasi": 15.25, "record": "Record_608", "signals": "Signal_608", "annotations": "Annotation_608", "tanggal_tes": "2025-01-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +610 1 {"jenis": "Type2", "durasi": 12.4, "record": "Record_609", "signals": "Signal_609", "annotations": "Annotation_609", "tanggal_tes": "2024-10-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +611 1 {"jenis": "Type2", "durasi": 19.08, "record": "Record_610", "signals": "Signal_610", "annotations": "Annotation_610", "tanggal_tes": "2025-01-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +612 1 {"jenis": "Type2", "durasi": 19.4, "record": "Record_611", "signals": "Signal_611", "annotations": "Annotation_611", "tanggal_tes": "2024-09-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +613 1 {"jenis": "Type1", "durasi": 6.63, "record": "Record_612", "signals": "Signal_612", "annotations": "Annotation_612", "tanggal_tes": "2024-09-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +614 1 {"jenis": "Type2", "durasi": 11.06, "record": "Record_613", "signals": "Signal_613", "annotations": "Annotation_613", "tanggal_tes": "2024-05-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +615 1 {"jenis": "Type2", "durasi": 13.84, "record": "Record_614", "signals": "Signal_614", "annotations": "Annotation_614", "tanggal_tes": "2025-01-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +616 1 {"jenis": "Type1", "durasi": 14.62, "record": "Record_615", "signals": "Signal_615", "annotations": "Annotation_615", "tanggal_tes": "2024-05-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +617 1 {"jenis": "Type2", "durasi": 11.41, "record": "Record_616", "signals": "Signal_616", "annotations": "Annotation_616", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +618 1 {"jenis": "Type1", "durasi": 16.2, "record": "Record_617", "signals": "Signal_617", "annotations": "Annotation_617", "tanggal_tes": "2024-08-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +619 1 {"jenis": "Type2", "durasi": 19.73, "record": "Record_618", "signals": "Signal_618", "annotations": "Annotation_618", "tanggal_tes": "2024-08-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +620 1 {"jenis": "Type1", "durasi": 14.73, "record": "Record_619", "signals": "Signal_619", "annotations": "Annotation_619", "tanggal_tes": "2024-07-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +621 1 {"jenis": "Type1", "durasi": 10.69, "record": "Record_620", "signals": "Signal_620", "annotations": "Annotation_620", "tanggal_tes": "2024-08-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +622 1 {"jenis": "Type1", "durasi": 12.53, "record": "Record_621", "signals": "Signal_621", "annotations": "Annotation_621", "tanggal_tes": "2024-09-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +623 1 {"jenis": "Type1", "durasi": 19.09, "record": "Record_622", "signals": "Signal_622", "annotations": "Annotation_622", "tanggal_tes": "2024-05-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +624 1 {"jenis": "Type2", "durasi": 17.77, "record": "Record_623", "signals": "Signal_623", "annotations": "Annotation_623", "tanggal_tes": "2024-02-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +625 1 {"jenis": "Type1", "durasi": 13.78, "record": "Record_624", "signals": "Signal_624", "annotations": "Annotation_624", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +626 1 {"jenis": "Type1", "durasi": 15.36, "record": "Record_625", "signals": "Signal_625", "annotations": "Annotation_625", "tanggal_tes": "2024-04-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +627 1 {"jenis": "Type1", "durasi": 18.86, "record": "Record_626", "signals": "Signal_626", "annotations": "Annotation_626", "tanggal_tes": "2024-07-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +628 1 {"jenis": "Type2", "durasi": 13.58, "record": "Record_627", "signals": "Signal_627", "annotations": "Annotation_627", "tanggal_tes": "2024-02-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +629 1 {"jenis": "Type1", "durasi": 13.4, "record": "Record_628", "signals": "Signal_628", "annotations": "Annotation_628", "tanggal_tes": "2024-04-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +630 1 {"jenis": "Type2", "durasi": 20.7, "record": "Record_629", "signals": "Signal_629", "annotations": "Annotation_629", "tanggal_tes": "2024-02-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +631 1 {"jenis": "Type2", "durasi": 17.15, "record": "Record_630", "signals": "Signal_630", "annotations": "Annotation_630", "tanggal_tes": "2024-09-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +632 1 {"jenis": "Type1", "durasi": 17.64, "record": "Record_631", "signals": "Signal_631", "annotations": "Annotation_631", "tanggal_tes": "2024-04-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +633 1 {"jenis": "Type1", "durasi": 12.09, "record": "Record_632", "signals": "Signal_632", "annotations": "Annotation_632", "tanggal_tes": "2024-11-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +634 1 {"jenis": "Type1", "durasi": 14.76, "record": "Record_633", "signals": "Signal_633", "annotations": "Annotation_633", "tanggal_tes": "2024-06-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +635 1 {"jenis": "Type1", "durasi": 19.15, "record": "Record_634", "signals": "Signal_634", "annotations": "Annotation_634", "tanggal_tes": "2024-04-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +636 1 {"jenis": "Type2", "durasi": 20.95, "record": "Record_635", "signals": "Signal_635", "annotations": "Annotation_635", "tanggal_tes": "2024-10-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +637 1 {"jenis": "Type1", "durasi": 12.27, "record": "Record_636", "signals": "Signal_636", "annotations": "Annotation_636", "tanggal_tes": "2024-08-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +638 1 {"jenis": "Type1", "durasi": 10.37, "record": "Record_637", "signals": "Signal_637", "annotations": "Annotation_637", "tanggal_tes": "2024-05-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +639 1 {"jenis": "Type1", "durasi": 17.09, "record": "Record_638", "signals": "Signal_638", "annotations": "Annotation_638", "tanggal_tes": "2024-07-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +640 1 {"jenis": "Type2", "durasi": 20.97, "record": "Record_639", "signals": "Signal_639", "annotations": "Annotation_639", "tanggal_tes": "2024-06-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +641 1 {"jenis": "Type2", "durasi": 20.74, "record": "Record_640", "signals": "Signal_640", "annotations": "Annotation_640", "tanggal_tes": "2024-07-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +642 1 {"jenis": "Type2", "durasi": 8.11, "record": "Record_641", "signals": "Signal_641", "annotations": "Annotation_641", "tanggal_tes": "2024-05-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +643 1 {"jenis": "Type2", "durasi": 7.78, "record": "Record_642", "signals": "Signal_642", "annotations": "Annotation_642", "tanggal_tes": "2024-04-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +644 1 {"jenis": "Type1", "durasi": 7.68, "record": "Record_643", "signals": "Signal_643", "annotations": "Annotation_643", "tanggal_tes": "2024-08-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +645 1 {"jenis": "Type1", "durasi": 17.32, "record": "Record_644", "signals": "Signal_644", "annotations": "Annotation_644", "tanggal_tes": "2024-03-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +646 1 {"jenis": "Type2", "durasi": 10.57, "record": "Record_645", "signals": "Signal_645", "annotations": "Annotation_645", "tanggal_tes": "2024-08-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +647 1 {"jenis": "Type2", "durasi": 16.57, "record": "Record_646", "signals": "Signal_646", "annotations": "Annotation_646", "tanggal_tes": "2024-12-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +648 1 {"jenis": "Type2", "durasi": 20.9, "record": "Record_647", "signals": "Signal_647", "annotations": "Annotation_647", "tanggal_tes": "2024-05-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +649 1 {"jenis": "Type2", "durasi": 9.96, "record": "Record_648", "signals": "Signal_648", "annotations": "Annotation_648", "tanggal_tes": "2024-09-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +650 1 {"jenis": "Type2", "durasi": 15.58, "record": "Record_649", "signals": "Signal_649", "annotations": "Annotation_649", "tanggal_tes": "2024-03-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +651 1 {"jenis": "Type2", "durasi": 6.9, "record": "Record_650", "signals": "Signal_650", "annotations": "Annotation_650", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +652 1 {"jenis": "Type1", "durasi": 10.86, "record": "Record_651", "signals": "Signal_651", "annotations": "Annotation_651", "tanggal_tes": "2024-07-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +653 1 {"jenis": "Type2", "durasi": 8.97, "record": "Record_652", "signals": "Signal_652", "annotations": "Annotation_652", "tanggal_tes": "2024-05-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +654 1 {"jenis": "Type1", "durasi": 8.9, "record": "Record_653", "signals": "Signal_653", "annotations": "Annotation_653", "tanggal_tes": "2024-06-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +655 1 {"jenis": "Type1", "durasi": 5.62, "record": "Record_654", "signals": "Signal_654", "annotations": "Annotation_654", "tanggal_tes": "2024-02-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +656 1 {"jenis": "Type1", "durasi": 5.43, "record": "Record_655", "signals": "Signal_655", "annotations": "Annotation_655", "tanggal_tes": "2024-03-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +657 1 {"jenis": "Type2", "durasi": 14.88, "record": "Record_656", "signals": "Signal_656", "annotations": "Annotation_656", "tanggal_tes": "2024-02-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +658 1 {"jenis": "Type2", "durasi": 19.48, "record": "Record_657", "signals": "Signal_657", "annotations": "Annotation_657", "tanggal_tes": "2024-07-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +659 1 {"jenis": "Type1", "durasi": 10.24, "record": "Record_658", "signals": "Signal_658", "annotations": "Annotation_658", "tanggal_tes": "2024-08-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +660 1 {"jenis": "Type2", "durasi": 18.47, "record": "Record_659", "signals": "Signal_659", "annotations": "Annotation_659", "tanggal_tes": "2024-05-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +661 1 {"jenis": "Type1", "durasi": 12.52, "record": "Record_660", "signals": "Signal_660", "annotations": "Annotation_660", "tanggal_tes": "2024-09-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +662 1 {"jenis": "Type1", "durasi": 14.97, "record": "Record_661", "signals": "Signal_661", "annotations": "Annotation_661", "tanggal_tes": "2024-11-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +663 1 {"jenis": "Type2", "durasi": 13.09, "record": "Record_662", "signals": "Signal_662", "annotations": "Annotation_662", "tanggal_tes": "2024-04-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +664 1 {"jenis": "Type2", "durasi": 9.07, "record": "Record_663", "signals": "Signal_663", "annotations": "Annotation_663", "tanggal_tes": "2024-10-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +665 1 {"jenis": "Type1", "durasi": 9.35, "record": "Record_664", "signals": "Signal_664", "annotations": "Annotation_664", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +666 1 {"jenis": "Type1", "durasi": 10.08, "record": "Record_665", "signals": "Signal_665", "annotations": "Annotation_665", "tanggal_tes": "2024-03-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +667 1 {"jenis": "Type2", "durasi": 10.21, "record": "Record_666", "signals": "Signal_666", "annotations": "Annotation_666", "tanggal_tes": "2024-06-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +668 1 {"jenis": "Type2", "durasi": 10.22, "record": "Record_667", "signals": "Signal_667", "annotations": "Annotation_667", "tanggal_tes": "2024-10-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +669 1 {"jenis": "Type2", "durasi": 18.09, "record": "Record_668", "signals": "Signal_668", "annotations": "Annotation_668", "tanggal_tes": "2024-09-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +670 1 {"jenis": "Type2", "durasi": 8.35, "record": "Record_669", "signals": "Signal_669", "annotations": "Annotation_669", "tanggal_tes": "2024-10-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +671 1 {"jenis": "Type1", "durasi": 19.62, "record": "Record_670", "signals": "Signal_670", "annotations": "Annotation_670", "tanggal_tes": "2024-10-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +672 1 {"jenis": "Type1", "durasi": 15.08, "record": "Record_671", "signals": "Signal_671", "annotations": "Annotation_671", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +673 1 {"jenis": "Type1", "durasi": 5.31, "record": "Record_672", "signals": "Signal_672", "annotations": "Annotation_672", "tanggal_tes": "2024-10-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +674 1 {"jenis": "Type2", "durasi": 11.89, "record": "Record_673", "signals": "Signal_673", "annotations": "Annotation_673", "tanggal_tes": "2024-11-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +675 1 {"jenis": "Type1", "durasi": 18.44, "record": "Record_674", "signals": "Signal_674", "annotations": "Annotation_674", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +676 1 {"jenis": "Type2", "durasi": 19.61, "record": "Record_675", "signals": "Signal_675", "annotations": "Annotation_675", "tanggal_tes": "2024-01-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +677 1 {"jenis": "Type2", "durasi": 14.75, "record": "Record_676", "signals": "Signal_676", "annotations": "Annotation_676", "tanggal_tes": "2024-11-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +678 1 {"jenis": "Type1", "durasi": 7.5600000000000005, "record": "Record_677", "signals": "Signal_677", "annotations": "Annotation_677", "tanggal_tes": "2024-11-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +679 1 {"jenis": "Type2", "durasi": 7.45, "record": "Record_678", "signals": "Signal_678", "annotations": "Annotation_678", "tanggal_tes": "2024-11-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +680 1 {"jenis": "Type2", "durasi": 8.43, "record": "Record_679", "signals": "Signal_679", "annotations": "Annotation_679", "tanggal_tes": "2024-11-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +681 1 {"jenis": "Type1", "durasi": 5.26, "record": "Record_680", "signals": "Signal_680", "annotations": "Annotation_680", "tanggal_tes": "2024-01-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +682 1 {"jenis": "Type2", "durasi": 11.1, "record": "Record_681", "signals": "Signal_681", "annotations": "Annotation_681", "tanggal_tes": "2024-09-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +683 1 {"jenis": "Type1", "durasi": 13.71, "record": "Record_682", "signals": "Signal_682", "annotations": "Annotation_682", "tanggal_tes": "2024-03-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +684 1 {"jenis": "Type1", "durasi": 6.64, "record": "Record_683", "signals": "Signal_683", "annotations": "Annotation_683", "tanggal_tes": "2024-04-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +685 1 {"jenis": "Type2", "durasi": 17.67, "record": "Record_684", "signals": "Signal_684", "annotations": "Annotation_684", "tanggal_tes": "2024-11-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +686 1 {"jenis": "Type2", "durasi": 12.05, "record": "Record_685", "signals": "Signal_685", "annotations": "Annotation_685", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +687 1 {"jenis": "Type1", "durasi": 15.89, "record": "Record_686", "signals": "Signal_686", "annotations": "Annotation_686", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +688 1 {"jenis": "Type2", "durasi": 9.78, "record": "Record_687", "signals": "Signal_687", "annotations": "Annotation_687", "tanggal_tes": "2024-08-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +689 1 {"jenis": "Type1", "durasi": 12.75, "record": "Record_688", "signals": "Signal_688", "annotations": "Annotation_688", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +690 1 {"jenis": "Type1", "durasi": 9.79, "record": "Record_689", "signals": "Signal_689", "annotations": "Annotation_689", "tanggal_tes": "2024-05-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +691 1 {"jenis": "Type1", "durasi": 20.88, "record": "Record_690", "signals": "Signal_690", "annotations": "Annotation_690", "tanggal_tes": "2024-11-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +692 1 {"jenis": "Type2", "durasi": 14.74, "record": "Record_691", "signals": "Signal_691", "annotations": "Annotation_691", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +693 1 {"jenis": "Type2", "durasi": 7.97, "record": "Record_692", "signals": "Signal_692", "annotations": "Annotation_692", "tanggal_tes": "2024-04-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +694 1 {"jenis": "Type2", "durasi": 10.6, "record": "Record_693", "signals": "Signal_693", "annotations": "Annotation_693", "tanggal_tes": "2024-10-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +695 1 {"jenis": "Type2", "durasi": 19.78, "record": "Record_694", "signals": "Signal_694", "annotations": "Annotation_694", "tanggal_tes": "2025-01-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +696 1 {"jenis": "Type2", "durasi": 12.84, "record": "Record_695", "signals": "Signal_695", "annotations": "Annotation_695", "tanggal_tes": "2024-09-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +697 1 {"jenis": "Type2", "durasi": 12.57, "record": "Record_696", "signals": "Signal_696", "annotations": "Annotation_696", "tanggal_tes": "2024-08-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +698 1 {"jenis": "Type2", "durasi": 20.76, "record": "Record_697", "signals": "Signal_697", "annotations": "Annotation_697", "tanggal_tes": "2024-09-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +699 1 {"jenis": "Type2", "durasi": 20.25, "record": "Record_698", "signals": "Signal_698", "annotations": "Annotation_698", "tanggal_tes": "2024-01-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +700 1 {"jenis": "Type1", "durasi": 5.49, "record": "Record_699", "signals": "Signal_699", "annotations": "Annotation_699", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +701 1 {"jenis": "Type1", "durasi": 14.37, "record": "Record_700", "signals": "Signal_700", "annotations": "Annotation_700", "tanggal_tes": "2024-04-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +702 1 {"jenis": "Type1", "durasi": 8.07, "record": "Record_701", "signals": "Signal_701", "annotations": "Annotation_701", "tanggal_tes": "2024-02-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +703 1 {"jenis": "Type1", "durasi": 8.6, "record": "Record_702", "signals": "Signal_702", "annotations": "Annotation_702", "tanggal_tes": "2024-06-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +704 1 {"jenis": "Type1", "durasi": 6.71, "record": "Record_703", "signals": "Signal_703", "annotations": "Annotation_703", "tanggal_tes": "2024-07-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +705 1 {"jenis": "Type2", "durasi": 17.77, "record": "Record_704", "signals": "Signal_704", "annotations": "Annotation_704", "tanggal_tes": "2024-06-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +706 1 {"jenis": "Type2", "durasi": 11.42, "record": "Record_705", "signals": "Signal_705", "annotations": "Annotation_705", "tanggal_tes": "2024-08-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +707 1 {"jenis": "Type2", "durasi": 15.15, "record": "Record_706", "signals": "Signal_706", "annotations": "Annotation_706", "tanggal_tes": "2024-11-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +708 1 {"jenis": "Type1", "durasi": 11.44, "record": "Record_707", "signals": "Signal_707", "annotations": "Annotation_707", "tanggal_tes": "2024-05-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +709 1 {"jenis": "Type1", "durasi": 19.36, "record": "Record_708", "signals": "Signal_708", "annotations": "Annotation_708", "tanggal_tes": "2024-10-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +710 1 {"jenis": "Type1", "durasi": 16.34, "record": "Record_709", "signals": "Signal_709", "annotations": "Annotation_709", "tanggal_tes": "2024-11-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +711 1 {"jenis": "Type1", "durasi": 19.69, "record": "Record_710", "signals": "Signal_710", "annotations": "Annotation_710", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +712 1 {"jenis": "Type1", "durasi": 16.56, "record": "Record_711", "signals": "Signal_711", "annotations": "Annotation_711", "tanggal_tes": "2024-07-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +713 1 {"jenis": "Type1", "durasi": 17.48, "record": "Record_712", "signals": "Signal_712", "annotations": "Annotation_712", "tanggal_tes": "2024-05-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +714 1 {"jenis": "Type1", "durasi": 15.6, "record": "Record_713", "signals": "Signal_713", "annotations": "Annotation_713", "tanggal_tes": "2024-05-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +715 1 {"jenis": "Type1", "durasi": 16.83, "record": "Record_714", "signals": "Signal_714", "annotations": "Annotation_714", "tanggal_tes": "2024-03-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +716 1 {"jenis": "Type2", "durasi": 20.18, "record": "Record_715", "signals": "Signal_715", "annotations": "Annotation_715", "tanggal_tes": "2024-10-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +717 1 {"jenis": "Type2", "durasi": 10.21, "record": "Record_716", "signals": "Signal_716", "annotations": "Annotation_716", "tanggal_tes": "2024-10-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +718 1 {"jenis": "Type2", "durasi": 20.1, "record": "Record_717", "signals": "Signal_717", "annotations": "Annotation_717", "tanggal_tes": "2024-11-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +719 1 {"jenis": "Type1", "durasi": 14.59, "record": "Record_718", "signals": "Signal_718", "annotations": "Annotation_718", "tanggal_tes": "2024-04-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +720 1 {"jenis": "Type2", "durasi": 6.39, "record": "Record_719", "signals": "Signal_719", "annotations": "Annotation_719", "tanggal_tes": "2024-07-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +721 1 {"jenis": "Type2", "durasi": 11.08, "record": "Record_720", "signals": "Signal_720", "annotations": "Annotation_720", "tanggal_tes": "2024-09-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +722 1 {"jenis": "Type1", "durasi": 7.68, "record": "Record_721", "signals": "Signal_721", "annotations": "Annotation_721", "tanggal_tes": "2024-09-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +723 1 {"jenis": "Type2", "durasi": 6.25, "record": "Record_722", "signals": "Signal_722", "annotations": "Annotation_722", "tanggal_tes": "2024-12-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +724 1 {"jenis": "Type2", "durasi": 16.53, "record": "Record_723", "signals": "Signal_723", "annotations": "Annotation_723", "tanggal_tes": "2024-05-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +725 1 {"jenis": "Type1", "durasi": 12.11, "record": "Record_724", "signals": "Signal_724", "annotations": "Annotation_724", "tanggal_tes": "2025-01-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +726 1 {"jenis": "Type2", "durasi": 12.74, "record": "Record_725", "signals": "Signal_725", "annotations": "Annotation_725", "tanggal_tes": "2024-11-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +727 1 {"jenis": "Type2", "durasi": 16.29, "record": "Record_726", "signals": "Signal_726", "annotations": "Annotation_726", "tanggal_tes": "2024-02-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +728 1 {"jenis": "Type1", "durasi": 6.34, "record": "Record_727", "signals": "Signal_727", "annotations": "Annotation_727", "tanggal_tes": "2024-02-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +729 1 {"jenis": "Type2", "durasi": 14.8, "record": "Record_728", "signals": "Signal_728", "annotations": "Annotation_728", "tanggal_tes": "2024-02-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +730 1 {"jenis": "Type1", "durasi": 6.18, "record": "Record_729", "signals": "Signal_729", "annotations": "Annotation_729", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +731 1 {"jenis": "Type1", "durasi": 16.87, "record": "Record_730", "signals": "Signal_730", "annotations": "Annotation_730", "tanggal_tes": "2024-04-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +732 1 {"jenis": "Type2", "durasi": 14.32, "record": "Record_731", "signals": "Signal_731", "annotations": "Annotation_731", "tanggal_tes": "2024-12-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +733 1 {"jenis": "Type1", "durasi": 5.8, "record": "Record_732", "signals": "Signal_732", "annotations": "Annotation_732", "tanggal_tes": "2024-06-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +734 1 {"jenis": "Type2", "durasi": 7.12, "record": "Record_733", "signals": "Signal_733", "annotations": "Annotation_733", "tanggal_tes": "2024-04-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +735 1 {"jenis": "Type1", "durasi": 11.57, "record": "Record_734", "signals": "Signal_734", "annotations": "Annotation_734", "tanggal_tes": "2024-04-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +736 1 {"jenis": "Type2", "durasi": 7.13, "record": "Record_735", "signals": "Signal_735", "annotations": "Annotation_735", "tanggal_tes": "2024-06-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +737 1 {"jenis": "Type1", "durasi": 11.71, "record": "Record_736", "signals": "Signal_736", "annotations": "Annotation_736", "tanggal_tes": "2024-11-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +738 1 {"jenis": "Type1", "durasi": 14.19, "record": "Record_737", "signals": "Signal_737", "annotations": "Annotation_737", "tanggal_tes": "2024-08-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +739 1 {"jenis": "Type1", "durasi": 13.6, "record": "Record_738", "signals": "Signal_738", "annotations": "Annotation_738", "tanggal_tes": "2024-06-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +740 1 {"jenis": "Type1", "durasi": 14.57, "record": "Record_739", "signals": "Signal_739", "annotations": "Annotation_739", "tanggal_tes": "2024-05-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +741 1 {"jenis": "Type1", "durasi": 11.04, "record": "Record_740", "signals": "Signal_740", "annotations": "Annotation_740", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +742 1 {"jenis": "Type1", "durasi": 17.85, "record": "Record_741", "signals": "Signal_741", "annotations": "Annotation_741", "tanggal_tes": "2024-03-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +743 1 {"jenis": "Type2", "durasi": 11.91, "record": "Record_742", "signals": "Signal_742", "annotations": "Annotation_742", "tanggal_tes": "2024-06-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +744 1 {"jenis": "Type2", "durasi": 5.09, "record": "Record_743", "signals": "Signal_743", "annotations": "Annotation_743", "tanggal_tes": "2024-09-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +745 1 {"jenis": "Type2", "durasi": 10.36, "record": "Record_744", "signals": "Signal_744", "annotations": "Annotation_744", "tanggal_tes": "2024-02-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +746 1 {"jenis": "Type1", "durasi": 17.86, "record": "Record_745", "signals": "Signal_745", "annotations": "Annotation_745", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +747 1 {"jenis": "Type1", "durasi": 14.35, "record": "Record_746", "signals": "Signal_746", "annotations": "Annotation_746", "tanggal_tes": "2024-03-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +748 1 {"jenis": "Type1", "durasi": 10.65, "record": "Record_747", "signals": "Signal_747", "annotations": "Annotation_747", "tanggal_tes": "2024-03-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +749 1 {"jenis": "Type2", "durasi": 12.68, "record": "Record_748", "signals": "Signal_748", "annotations": "Annotation_748", "tanggal_tes": "2024-05-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +750 1 {"jenis": "Type2", "durasi": 12.04, "record": "Record_749", "signals": "Signal_749", "annotations": "Annotation_749", "tanggal_tes": "2024-06-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +751 1 {"jenis": "Type2", "durasi": 10.32, "record": "Record_750", "signals": "Signal_750", "annotations": "Annotation_750", "tanggal_tes": "2024-10-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +752 1 {"jenis": "Type1", "durasi": 20.47, "record": "Record_751", "signals": "Signal_751", "annotations": "Annotation_751", "tanggal_tes": "2024-11-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +753 1 {"jenis": "Type1", "durasi": 8.46, "record": "Record_752", "signals": "Signal_752", "annotations": "Annotation_752", "tanggal_tes": "2024-12-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +754 1 {"jenis": "Type1", "durasi": 14.08, "record": "Record_753", "signals": "Signal_753", "annotations": "Annotation_753", "tanggal_tes": "2024-07-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +755 1 {"jenis": "Type2", "durasi": 18.24, "record": "Record_754", "signals": "Signal_754", "annotations": "Annotation_754", "tanggal_tes": "2024-06-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +756 1 {"jenis": "Type1", "durasi": 9.67, "record": "Record_755", "signals": "Signal_755", "annotations": "Annotation_755", "tanggal_tes": "2024-07-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +757 1 {"jenis": "Type1", "durasi": 17.5, "record": "Record_756", "signals": "Signal_756", "annotations": "Annotation_756", "tanggal_tes": "2024-02-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +758 1 {"jenis": "Type2", "durasi": 5.48, "record": "Record_757", "signals": "Signal_757", "annotations": "Annotation_757", "tanggal_tes": "2024-09-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +759 1 {"jenis": "Type2", "durasi": 11.91, "record": "Record_758", "signals": "Signal_758", "annotations": "Annotation_758", "tanggal_tes": "2024-07-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +760 1 {"jenis": "Type2", "durasi": 12.02, "record": "Record_759", "signals": "Signal_759", "annotations": "Annotation_759", "tanggal_tes": "2024-12-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +761 1 {"jenis": "Type2", "durasi": 7.13, "record": "Record_760", "signals": "Signal_760", "annotations": "Annotation_760", "tanggal_tes": "2024-06-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +762 1 {"jenis": "Type1", "durasi": 11.05, "record": "Record_761", "signals": "Signal_761", "annotations": "Annotation_761", "tanggal_tes": "2024-08-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +763 1 {"jenis": "Type1", "durasi": 20.2, "record": "Record_762", "signals": "Signal_762", "annotations": "Annotation_762", "tanggal_tes": "2024-06-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +764 1 {"jenis": "Type2", "durasi": 5.77, "record": "Record_763", "signals": "Signal_763", "annotations": "Annotation_763", "tanggal_tes": "2025-01-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +765 1 {"jenis": "Type1", "durasi": 19.36, "record": "Record_764", "signals": "Signal_764", "annotations": "Annotation_764", "tanggal_tes": "2024-03-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +766 1 {"jenis": "Type2", "durasi": 13.17, "record": "Record_765", "signals": "Signal_765", "annotations": "Annotation_765", "tanggal_tes": "2024-02-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +767 1 {"jenis": "Type2", "durasi": 19.42, "record": "Record_766", "signals": "Signal_766", "annotations": "Annotation_766", "tanggal_tes": "2024-02-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +768 1 {"jenis": "Type1", "durasi": 12.74, "record": "Record_767", "signals": "Signal_767", "annotations": "Annotation_767", "tanggal_tes": "2024-02-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +769 1 {"jenis": "Type1", "durasi": 17.25, "record": "Record_768", "signals": "Signal_768", "annotations": "Annotation_768", "tanggal_tes": "2024-11-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +770 1 {"jenis": "Type2", "durasi": 7.85, "record": "Record_769", "signals": "Signal_769", "annotations": "Annotation_769", "tanggal_tes": "2024-10-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +771 1 {"jenis": "Type2", "durasi": 5.86, "record": "Record_770", "signals": "Signal_770", "annotations": "Annotation_770", "tanggal_tes": "2024-12-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +772 1 {"jenis": "Type1", "durasi": 9.09, "record": "Record_771", "signals": "Signal_771", "annotations": "Annotation_771", "tanggal_tes": "2024-12-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +773 1 {"jenis": "Type2", "durasi": 20.99, "record": "Record_772", "signals": "Signal_772", "annotations": "Annotation_772", "tanggal_tes": "2024-08-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +774 1 {"jenis": "Type2", "durasi": 9.19, "record": "Record_773", "signals": "Signal_773", "annotations": "Annotation_773", "tanggal_tes": "2024-07-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +775 1 {"jenis": "Type1", "durasi": 9.29, "record": "Record_774", "signals": "Signal_774", "annotations": "Annotation_774", "tanggal_tes": "2024-07-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +776 1 {"jenis": "Type1", "durasi": 9.98, "record": "Record_775", "signals": "Signal_775", "annotations": "Annotation_775", "tanggal_tes": "2024-05-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +777 1 {"jenis": "Type1", "durasi": 13.5, "record": "Record_776", "signals": "Signal_776", "annotations": "Annotation_776", "tanggal_tes": "2025-01-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +778 1 {"jenis": "Type1", "durasi": 6.74, "record": "Record_777", "signals": "Signal_777", "annotations": "Annotation_777", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +779 1 {"jenis": "Type2", "durasi": 14.39, "record": "Record_778", "signals": "Signal_778", "annotations": "Annotation_778", "tanggal_tes": "2024-08-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +780 1 {"jenis": "Type2", "durasi": 11.68, "record": "Record_779", "signals": "Signal_779", "annotations": "Annotation_779", "tanggal_tes": "2024-07-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +781 1 {"jenis": "Type2", "durasi": 7.84, "record": "Record_780", "signals": "Signal_780", "annotations": "Annotation_780", "tanggal_tes": "2024-03-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +782 1 {"jenis": "Type1", "durasi": 18.2, "record": "Record_781", "signals": "Signal_781", "annotations": "Annotation_781", "tanggal_tes": "2024-12-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +783 1 {"jenis": "Type2", "durasi": 14.1, "record": "Record_782", "signals": "Signal_782", "annotations": "Annotation_782", "tanggal_tes": "2024-11-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +784 1 {"jenis": "Type2", "durasi": 15.19, "record": "Record_783", "signals": "Signal_783", "annotations": "Annotation_783", "tanggal_tes": "2024-09-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +785 1 {"jenis": "Type2", "durasi": 11.9, "record": "Record_784", "signals": "Signal_784", "annotations": "Annotation_784", "tanggal_tes": "2024-10-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +786 1 {"jenis": "Type1", "durasi": 14.1, "record": "Record_785", "signals": "Signal_785", "annotations": "Annotation_785", "tanggal_tes": "2024-08-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +787 1 {"jenis": "Type1", "durasi": 19.45, "record": "Record_786", "signals": "Signal_786", "annotations": "Annotation_786", "tanggal_tes": "2024-08-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +788 1 {"jenis": "Type1", "durasi": 9.23, "record": "Record_787", "signals": "Signal_787", "annotations": "Annotation_787", "tanggal_tes": "2024-11-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +789 1 {"jenis": "Type2", "durasi": 18.65, "record": "Record_788", "signals": "Signal_788", "annotations": "Annotation_788", "tanggal_tes": "2024-12-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +790 1 {"jenis": "Type1", "durasi": 18.96, "record": "Record_789", "signals": "Signal_789", "annotations": "Annotation_789", "tanggal_tes": "2024-11-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +791 1 {"jenis": "Type1", "durasi": 11.58, "record": "Record_790", "signals": "Signal_790", "annotations": "Annotation_790", "tanggal_tes": "2024-06-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +792 1 {"jenis": "Type1", "durasi": 13.39, "record": "Record_791", "signals": "Signal_791", "annotations": "Annotation_791", "tanggal_tes": "2024-07-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +793 1 {"jenis": "Type2", "durasi": 7.55, "record": "Record_792", "signals": "Signal_792", "annotations": "Annotation_792", "tanggal_tes": "2025-01-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +794 1 {"jenis": "Type2", "durasi": 9.29, "record": "Record_793", "signals": "Signal_793", "annotations": "Annotation_793", "tanggal_tes": "2024-11-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +795 1 {"jenis": "Type2", "durasi": 8.93, "record": "Record_794", "signals": "Signal_794", "annotations": "Annotation_794", "tanggal_tes": "2025-01-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +796 1 {"jenis": "Type2", "durasi": 10.12, "record": "Record_795", "signals": "Signal_795", "annotations": "Annotation_795", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +797 1 {"jenis": "Type2", "durasi": 18.95, "record": "Record_796", "signals": "Signal_796", "annotations": "Annotation_796", "tanggal_tes": "2024-08-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +798 1 {"jenis": "Type1", "durasi": 20.94, "record": "Record_797", "signals": "Signal_797", "annotations": "Annotation_797", "tanggal_tes": "2024-06-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +799 1 {"jenis": "Type1", "durasi": 11.36, "record": "Record_798", "signals": "Signal_798", "annotations": "Annotation_798", "tanggal_tes": "2024-12-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +800 1 {"jenis": "Type2", "durasi": 15.5, "record": "Record_799", "signals": "Signal_799", "annotations": "Annotation_799", "tanggal_tes": "2024-12-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +801 1 {"jenis": "Type2", "durasi": 16.5, "record": "Record_800", "signals": "Signal_800", "annotations": "Annotation_800", "tanggal_tes": "2024-06-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +802 1 {"jenis": "Type2", "durasi": 17.62, "record": "Record_801", "signals": "Signal_801", "annotations": "Annotation_801", "tanggal_tes": "2024-09-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +803 1 {"jenis": "Type1", "durasi": 13.87, "record": "Record_802", "signals": "Signal_802", "annotations": "Annotation_802", "tanggal_tes": "2024-02-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +804 1 {"jenis": "Type2", "durasi": 15.84, "record": "Record_803", "signals": "Signal_803", "annotations": "Annotation_803", "tanggal_tes": "2024-06-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +805 1 {"jenis": "Type1", "durasi": 20.91, "record": "Record_804", "signals": "Signal_804", "annotations": "Annotation_804", "tanggal_tes": "2024-06-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +806 1 {"jenis": "Type1", "durasi": 14.18, "record": "Record_805", "signals": "Signal_805", "annotations": "Annotation_805", "tanggal_tes": "2024-05-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +807 1 {"jenis": "Type2", "durasi": 16.99, "record": "Record_806", "signals": "Signal_806", "annotations": "Annotation_806", "tanggal_tes": "2024-07-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +808 1 {"jenis": "Type2", "durasi": 14.11, "record": "Record_807", "signals": "Signal_807", "annotations": "Annotation_807", "tanggal_tes": "2024-09-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +809 1 {"jenis": "Type2", "durasi": 10, "record": "Record_808", "signals": "Signal_808", "annotations": "Annotation_808", "tanggal_tes": "2024-03-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +810 1 {"jenis": "Type1", "durasi": 8.01, "record": "Record_809", "signals": "Signal_809", "annotations": "Annotation_809", "tanggal_tes": "2025-01-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +811 1 {"jenis": "Type2", "durasi": 9.05, "record": "Record_810", "signals": "Signal_810", "annotations": "Annotation_810", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +812 1 {"jenis": "Type1", "durasi": 16.43, "record": "Record_811", "signals": "Signal_811", "annotations": "Annotation_811", "tanggal_tes": "2024-05-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +813 1 {"jenis": "Type1", "durasi": 8.81, "record": "Record_812", "signals": "Signal_812", "annotations": "Annotation_812", "tanggal_tes": "2024-10-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +814 1 {"jenis": "Type1", "durasi": 20.49, "record": "Record_813", "signals": "Signal_813", "annotations": "Annotation_813", "tanggal_tes": "2024-10-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +815 1 {"jenis": "Type2", "durasi": 8.87, "record": "Record_814", "signals": "Signal_814", "annotations": "Annotation_814", "tanggal_tes": "2024-08-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +816 1 {"jenis": "Type1", "durasi": 6.02, "record": "Record_815", "signals": "Signal_815", "annotations": "Annotation_815", "tanggal_tes": "2024-06-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +817 1 {"jenis": "Type1", "durasi": 20.55, "record": "Record_816", "signals": "Signal_816", "annotations": "Annotation_816", "tanggal_tes": "2024-07-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +818 1 {"jenis": "Type1", "durasi": 13.8, "record": "Record_817", "signals": "Signal_817", "annotations": "Annotation_817", "tanggal_tes": "2024-04-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +819 1 {"jenis": "Type2", "durasi": 10.41, "record": "Record_818", "signals": "Signal_818", "annotations": "Annotation_818", "tanggal_tes": "2024-08-18", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +820 1 {"jenis": "Type1", "durasi": 16.73, "record": "Record_819", "signals": "Signal_819", "annotations": "Annotation_819", "tanggal_tes": "2024-05-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +821 1 {"jenis": "Type1", "durasi": 18.41, "record": "Record_820", "signals": "Signal_820", "annotations": "Annotation_820", "tanggal_tes": "2024-07-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +822 1 {"jenis": "Type2", "durasi": 6.51, "record": "Record_821", "signals": "Signal_821", "annotations": "Annotation_821", "tanggal_tes": "2024-05-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +823 1 {"jenis": "Type1", "durasi": 8.65, "record": "Record_822", "signals": "Signal_822", "annotations": "Annotation_822", "tanggal_tes": "2025-01-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +824 1 {"jenis": "Type1", "durasi": 11.78, "record": "Record_823", "signals": "Signal_823", "annotations": "Annotation_823", "tanggal_tes": "2024-11-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +825 1 {"jenis": "Type1", "durasi": 6.37, "record": "Record_824", "signals": "Signal_824", "annotations": "Annotation_824", "tanggal_tes": "2024-03-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +826 1 {"jenis": "Type2", "durasi": 6.12, "record": "Record_825", "signals": "Signal_825", "annotations": "Annotation_825", "tanggal_tes": "2024-12-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +827 1 {"jenis": "Type1", "durasi": 14.04, "record": "Record_826", "signals": "Signal_826", "annotations": "Annotation_826", "tanggal_tes": "2024-07-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +828 1 {"jenis": "Type1", "durasi": 18.22, "record": "Record_827", "signals": "Signal_827", "annotations": "Annotation_827", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +829 1 {"jenis": "Type2", "durasi": 16.36, "record": "Record_828", "signals": "Signal_828", "annotations": "Annotation_828", "tanggal_tes": "2024-05-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +830 1 {"jenis": "Type1", "durasi": 13, "record": "Record_829", "signals": "Signal_829", "annotations": "Annotation_829", "tanggal_tes": "2024-12-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +831 1 {"jenis": "Type2", "durasi": 12.31, "record": "Record_830", "signals": "Signal_830", "annotations": "Annotation_830", "tanggal_tes": "2024-05-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +832 1 {"jenis": "Type1", "durasi": 20.85, "record": "Record_831", "signals": "Signal_831", "annotations": "Annotation_831", "tanggal_tes": "2024-06-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +833 1 {"jenis": "Type2", "durasi": 15.8, "record": "Record_832", "signals": "Signal_832", "annotations": "Annotation_832", "tanggal_tes": "2024-03-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +834 1 {"jenis": "Type1", "durasi": 16.26, "record": "Record_833", "signals": "Signal_833", "annotations": "Annotation_833", "tanggal_tes": "2024-07-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +835 1 {"jenis": "Type1", "durasi": 18.08, "record": "Record_834", "signals": "Signal_834", "annotations": "Annotation_834", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +836 1 {"jenis": "Type2", "durasi": 13.25, "record": "Record_835", "signals": "Signal_835", "annotations": "Annotation_835", "tanggal_tes": "2024-09-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +837 1 {"jenis": "Type2", "durasi": 10.06, "record": "Record_836", "signals": "Signal_836", "annotations": "Annotation_836", "tanggal_tes": "2025-01-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +838 1 {"jenis": "Type2", "durasi": 5.59, "record": "Record_837", "signals": "Signal_837", "annotations": "Annotation_837", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +839 1 {"jenis": "Type1", "durasi": 10.59, "record": "Record_838", "signals": "Signal_838", "annotations": "Annotation_838", "tanggal_tes": "2024-03-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +840 1 {"jenis": "Type1", "durasi": 10.37, "record": "Record_839", "signals": "Signal_839", "annotations": "Annotation_839", "tanggal_tes": "2024-08-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +841 1 {"jenis": "Type1", "durasi": 19.66, "record": "Record_840", "signals": "Signal_840", "annotations": "Annotation_840", "tanggal_tes": "2024-10-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +842 1 {"jenis": "Type1", "durasi": 5.58, "record": "Record_841", "signals": "Signal_841", "annotations": "Annotation_841", "tanggal_tes": "2024-09-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +843 1 {"jenis": "Type1", "durasi": 6.32, "record": "Record_842", "signals": "Signal_842", "annotations": "Annotation_842", "tanggal_tes": "2024-08-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +844 1 {"jenis": "Type2", "durasi": 16.59, "record": "Record_843", "signals": "Signal_843", "annotations": "Annotation_843", "tanggal_tes": "2024-11-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +845 1 {"jenis": "Type1", "durasi": 14.87, "record": "Record_844", "signals": "Signal_844", "annotations": "Annotation_844", "tanggal_tes": "2024-05-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +846 1 {"jenis": "Type2", "durasi": 19.19, "record": "Record_845", "signals": "Signal_845", "annotations": "Annotation_845", "tanggal_tes": "2024-12-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +847 1 {"jenis": "Type1", "durasi": 7.02, "record": "Record_846", "signals": "Signal_846", "annotations": "Annotation_846", "tanggal_tes": "2024-06-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +848 1 {"jenis": "Type1", "durasi": 7.47, "record": "Record_847", "signals": "Signal_847", "annotations": "Annotation_847", "tanggal_tes": "2024-04-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +849 1 {"jenis": "Type2", "durasi": 19.28, "record": "Record_848", "signals": "Signal_848", "annotations": "Annotation_848", "tanggal_tes": "2024-04-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +850 1 {"jenis": "Type2", "durasi": 12.15, "record": "Record_849", "signals": "Signal_849", "annotations": "Annotation_849", "tanggal_tes": "2024-08-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +851 1 {"jenis": "Type2", "durasi": 10.73, "record": "Record_850", "signals": "Signal_850", "annotations": "Annotation_850", "tanggal_tes": "2024-05-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +852 1 {"jenis": "Type2", "durasi": 6.09, "record": "Record_851", "signals": "Signal_851", "annotations": "Annotation_851", "tanggal_tes": "2024-06-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +853 1 {"jenis": "Type2", "durasi": 16.43, "record": "Record_852", "signals": "Signal_852", "annotations": "Annotation_852", "tanggal_tes": "2024-04-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +854 1 {"jenis": "Type1", "durasi": 5.17, "record": "Record_853", "signals": "Signal_853", "annotations": "Annotation_853", "tanggal_tes": "2025-01-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +855 1 {"jenis": "Type2", "durasi": 5.72, "record": "Record_854", "signals": "Signal_854", "annotations": "Annotation_854", "tanggal_tes": "2024-06-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +856 1 {"jenis": "Type2", "durasi": 18.76, "record": "Record_855", "signals": "Signal_855", "annotations": "Annotation_855", "tanggal_tes": "2024-10-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +857 1 {"jenis": "Type1", "durasi": 12.76, "record": "Record_856", "signals": "Signal_856", "annotations": "Annotation_856", "tanggal_tes": "2024-11-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +858 1 {"jenis": "Type2", "durasi": 15.3, "record": "Record_857", "signals": "Signal_857", "annotations": "Annotation_857", "tanggal_tes": "2024-08-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +859 1 {"jenis": "Type1", "durasi": 5.3, "record": "Record_858", "signals": "Signal_858", "annotations": "Annotation_858", "tanggal_tes": "2024-07-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +860 1 {"jenis": "Type2", "durasi": 17.42, "record": "Record_859", "signals": "Signal_859", "annotations": "Annotation_859", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +861 1 {"jenis": "Type2", "durasi": 14.53, "record": "Record_860", "signals": "Signal_860", "annotations": "Annotation_860", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +862 1 {"jenis": "Type2", "durasi": 6.49, "record": "Record_861", "signals": "Signal_861", "annotations": "Annotation_861", "tanggal_tes": "2024-05-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +863 1 {"jenis": "Type2", "durasi": 8.22, "record": "Record_862", "signals": "Signal_862", "annotations": "Annotation_862", "tanggal_tes": "2024-03-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +864 1 {"jenis": "Type2", "durasi": 11.71, "record": "Record_863", "signals": "Signal_863", "annotations": "Annotation_863", "tanggal_tes": "2024-11-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +865 1 {"jenis": "Type2", "durasi": 12.78, "record": "Record_864", "signals": "Signal_864", "annotations": "Annotation_864", "tanggal_tes": "2024-11-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +866 1 {"jenis": "Type2", "durasi": 16.92, "record": "Record_865", "signals": "Signal_865", "annotations": "Annotation_865", "tanggal_tes": "2024-11-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +867 1 {"jenis": "Type1", "durasi": 16.29, "record": "Record_866", "signals": "Signal_866", "annotations": "Annotation_866", "tanggal_tes": "2025-01-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +868 1 {"jenis": "Type1", "durasi": 19.76, "record": "Record_867", "signals": "Signal_867", "annotations": "Annotation_867", "tanggal_tes": "2024-04-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +869 1 {"jenis": "Type1", "durasi": 9.66, "record": "Record_868", "signals": "Signal_868", "annotations": "Annotation_868", "tanggal_tes": "2024-09-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +870 1 {"jenis": "Type1", "durasi": 14.19, "record": "Record_869", "signals": "Signal_869", "annotations": "Annotation_869", "tanggal_tes": "2024-04-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +871 1 {"jenis": "Type1", "durasi": 10.93, "record": "Record_870", "signals": "Signal_870", "annotations": "Annotation_870", "tanggal_tes": "2024-05-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +872 1 {"jenis": "Type2", "durasi": 8.7, "record": "Record_871", "signals": "Signal_871", "annotations": "Annotation_871", "tanggal_tes": "2024-11-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +873 1 {"jenis": "Type1", "durasi": 12.58, "record": "Record_872", "signals": "Signal_872", "annotations": "Annotation_872", "tanggal_tes": "2024-03-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +874 1 {"jenis": "Type2", "durasi": 12.57, "record": "Record_873", "signals": "Signal_873", "annotations": "Annotation_873", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +875 1 {"jenis": "Type1", "durasi": 13.89, "record": "Record_874", "signals": "Signal_874", "annotations": "Annotation_874", "tanggal_tes": "2024-06-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +876 1 {"jenis": "Type2", "durasi": 9.16, "record": "Record_875", "signals": "Signal_875", "annotations": "Annotation_875", "tanggal_tes": "2024-04-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +877 1 {"jenis": "Type1", "durasi": 15.47, "record": "Record_876", "signals": "Signal_876", "annotations": "Annotation_876", "tanggal_tes": "2024-07-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +878 1 {"jenis": "Type2", "durasi": 14.14, "record": "Record_877", "signals": "Signal_877", "annotations": "Annotation_877", "tanggal_tes": "2025-01-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +879 1 {"jenis": "Type1", "durasi": 5.25, "record": "Record_878", "signals": "Signal_878", "annotations": "Annotation_878", "tanggal_tes": "2024-08-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +880 1 {"jenis": "Type1", "durasi": 7.4, "record": "Record_879", "signals": "Signal_879", "annotations": "Annotation_879", "tanggal_tes": "2024-07-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +881 1 {"jenis": "Type1", "durasi": 9.12, "record": "Record_880", "signals": "Signal_880", "annotations": "Annotation_880", "tanggal_tes": "2024-11-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +882 1 {"jenis": "Type1", "durasi": 20.73, "record": "Record_881", "signals": "Signal_881", "annotations": "Annotation_881", "tanggal_tes": "2024-10-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +883 1 {"jenis": "Type2", "durasi": 5.25, "record": "Record_882", "signals": "Signal_882", "annotations": "Annotation_882", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +884 1 {"jenis": "Type2", "durasi": 19.5, "record": "Record_883", "signals": "Signal_883", "annotations": "Annotation_883", "tanggal_tes": "2024-06-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +885 1 {"jenis": "Type1", "durasi": 8.14, "record": "Record_884", "signals": "Signal_884", "annotations": "Annotation_884", "tanggal_tes": "2024-03-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +886 1 {"jenis": "Type2", "durasi": 6.8100000000000005, "record": "Record_885", "signals": "Signal_885", "annotations": "Annotation_885", "tanggal_tes": "2024-09-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +887 1 {"jenis": "Type1", "durasi": 16.23, "record": "Record_886", "signals": "Signal_886", "annotations": "Annotation_886", "tanggal_tes": "2024-06-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +888 1 {"jenis": "Type1", "durasi": 19.62, "record": "Record_887", "signals": "Signal_887", "annotations": "Annotation_887", "tanggal_tes": "2024-08-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +889 1 {"jenis": "Type1", "durasi": 13.21, "record": "Record_888", "signals": "Signal_888", "annotations": "Annotation_888", "tanggal_tes": "2024-06-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +890 1 {"jenis": "Type1", "durasi": 14.89, "record": "Record_889", "signals": "Signal_889", "annotations": "Annotation_889", "tanggal_tes": "2024-08-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +891 1 {"jenis": "Type1", "durasi": 12.01, "record": "Record_890", "signals": "Signal_890", "annotations": "Annotation_890", "tanggal_tes": "2024-12-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +892 1 {"jenis": "Type2", "durasi": 8.72, "record": "Record_891", "signals": "Signal_891", "annotations": "Annotation_891", "tanggal_tes": "2024-05-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +893 1 {"jenis": "Type1", "durasi": 8.18, "record": "Record_892", "signals": "Signal_892", "annotations": "Annotation_892", "tanggal_tes": "2024-03-12", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +894 1 {"jenis": "Type2", "durasi": 12.84, "record": "Record_893", "signals": "Signal_893", "annotations": "Annotation_893", "tanggal_tes": "2024-12-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +895 1 {"jenis": "Type2", "durasi": 11.56, "record": "Record_894", "signals": "Signal_894", "annotations": "Annotation_894", "tanggal_tes": "2024-12-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +896 1 {"jenis": "Type1", "durasi": 19.51, "record": "Record_895", "signals": "Signal_895", "annotations": "Annotation_895", "tanggal_tes": "2024-03-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +897 1 {"jenis": "Type1", "durasi": 13.38, "record": "Record_896", "signals": "Signal_896", "annotations": "Annotation_896", "tanggal_tes": "2025-01-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +898 1 {"jenis": "Type2", "durasi": 11.01, "record": "Record_897", "signals": "Signal_897", "annotations": "Annotation_897", "tanggal_tes": "2024-03-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +899 1 {"jenis": "Type2", "durasi": 17.74, "record": "Record_898", "signals": "Signal_898", "annotations": "Annotation_898", "tanggal_tes": "2024-03-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +900 1 {"jenis": "Type1", "durasi": 8.19, "record": "Record_899", "signals": "Signal_899", "annotations": "Annotation_899", "tanggal_tes": "2024-12-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +901 1 {"jenis": "Type1", "durasi": 15.48, "record": "Record_900", "signals": "Signal_900", "annotations": "Annotation_900", "tanggal_tes": "2024-10-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +902 1 {"jenis": "Type1", "durasi": 15.92, "record": "Record_901", "signals": "Signal_901", "annotations": "Annotation_901", "tanggal_tes": "2025-01-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +903 1 {"jenis": "Type2", "durasi": 7.67, "record": "Record_902", "signals": "Signal_902", "annotations": "Annotation_902", "tanggal_tes": "2024-09-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +904 1 {"jenis": "Type2", "durasi": 11.69, "record": "Record_903", "signals": "Signal_903", "annotations": "Annotation_903", "tanggal_tes": "2024-02-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +905 1 {"jenis": "Type2", "durasi": 9.16, "record": "Record_904", "signals": "Signal_904", "annotations": "Annotation_904", "tanggal_tes": "2024-08-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +906 1 {"jenis": "Type2", "durasi": 17.84, "record": "Record_905", "signals": "Signal_905", "annotations": "Annotation_905", "tanggal_tes": "2024-06-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +907 1 {"jenis": "Type1", "durasi": 13.64, "record": "Record_906", "signals": "Signal_906", "annotations": "Annotation_906", "tanggal_tes": "2024-06-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +908 1 {"jenis": "Type1", "durasi": 7.32, "record": "Record_907", "signals": "Signal_907", "annotations": "Annotation_907", "tanggal_tes": "2024-06-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +909 1 {"jenis": "Type2", "durasi": 16.6, "record": "Record_908", "signals": "Signal_908", "annotations": "Annotation_908", "tanggal_tes": "2024-08-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +910 1 {"jenis": "Type1", "durasi": 11.5, "record": "Record_909", "signals": "Signal_909", "annotations": "Annotation_909", "tanggal_tes": "2024-09-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +911 1 {"jenis": "Type1", "durasi": 15.22, "record": "Record_910", "signals": "Signal_910", "annotations": "Annotation_910", "tanggal_tes": "2024-02-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +912 1 {"jenis": "Type2", "durasi": 8.72, "record": "Record_911", "signals": "Signal_911", "annotations": "Annotation_911", "tanggal_tes": "2024-05-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +913 1 {"jenis": "Type1", "durasi": 9.42, "record": "Record_912", "signals": "Signal_912", "annotations": "Annotation_912", "tanggal_tes": "2024-09-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +914 1 {"jenis": "Type2", "durasi": 11.86, "record": "Record_913", "signals": "Signal_913", "annotations": "Annotation_913", "tanggal_tes": "2024-08-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +915 1 {"jenis": "Type1", "durasi": 5.63, "record": "Record_914", "signals": "Signal_914", "annotations": "Annotation_914", "tanggal_tes": "2024-04-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +916 1 {"jenis": "Type1", "durasi": 20.96, "record": "Record_915", "signals": "Signal_915", "annotations": "Annotation_915", "tanggal_tes": "2025-01-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +917 1 {"jenis": "Type1", "durasi": 17.54, "record": "Record_916", "signals": "Signal_916", "annotations": "Annotation_916", "tanggal_tes": "2024-04-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +918 1 {"jenis": "Type1", "durasi": 12.99, "record": "Record_917", "signals": "Signal_917", "annotations": "Annotation_917", "tanggal_tes": "2024-11-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +919 1 {"jenis": "Type1", "durasi": 20.69, "record": "Record_918", "signals": "Signal_918", "annotations": "Annotation_918", "tanggal_tes": "2024-02-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +920 1 {"jenis": "Type2", "durasi": 5.07, "record": "Record_919", "signals": "Signal_919", "annotations": "Annotation_919", "tanggal_tes": "2024-06-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +921 1 {"jenis": "Type1", "durasi": 7.39, "record": "Record_920", "signals": "Signal_920", "annotations": "Annotation_920", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +922 1 {"jenis": "Type2", "durasi": 14.94, "record": "Record_921", "signals": "Signal_921", "annotations": "Annotation_921", "tanggal_tes": "2024-06-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +923 1 {"jenis": "Type1", "durasi": 20.61, "record": "Record_922", "signals": "Signal_922", "annotations": "Annotation_922", "tanggal_tes": "2024-11-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +924 1 {"jenis": "Type1", "durasi": 18.15, "record": "Record_923", "signals": "Signal_923", "annotations": "Annotation_923", "tanggal_tes": "2024-02-20", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +925 1 {"jenis": "Type2", "durasi": 10.92, "record": "Record_924", "signals": "Signal_924", "annotations": "Annotation_924", "tanggal_tes": "2024-02-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +926 1 {"jenis": "Type2", "durasi": 9.51, "record": "Record_925", "signals": "Signal_925", "annotations": "Annotation_925", "tanggal_tes": "2024-02-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +927 1 {"jenis": "Type2", "durasi": 12.63, "record": "Record_926", "signals": "Signal_926", "annotations": "Annotation_926", "tanggal_tes": "2024-04-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +928 1 {"jenis": "Type2", "durasi": 16.11, "record": "Record_927", "signals": "Signal_927", "annotations": "Annotation_927", "tanggal_tes": "2024-08-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +929 1 {"jenis": "Type2", "durasi": 14.91, "record": "Record_928", "signals": "Signal_928", "annotations": "Annotation_928", "tanggal_tes": "2024-04-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +930 1 {"jenis": "Type2", "durasi": 16.12, "record": "Record_929", "signals": "Signal_929", "annotations": "Annotation_929", "tanggal_tes": "2024-06-27", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +931 1 {"jenis": "Type1", "durasi": 8.41, "record": "Record_930", "signals": "Signal_930", "annotations": "Annotation_930", "tanggal_tes": "2024-06-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +932 1 {"jenis": "Type2", "durasi": 5.91, "record": "Record_931", "signals": "Signal_931", "annotations": "Annotation_931", "tanggal_tes": "2024-11-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +933 1 {"jenis": "Type1", "durasi": 13.08, "record": "Record_932", "signals": "Signal_932", "annotations": "Annotation_932", "tanggal_tes": "2024-03-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +934 1 {"jenis": "Type1", "durasi": 8.59, "record": "Record_933", "signals": "Signal_933", "annotations": "Annotation_933", "tanggal_tes": "2024-04-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +935 1 {"jenis": "Type2", "durasi": 11.01, "record": "Record_934", "signals": "Signal_934", "annotations": "Annotation_934", "tanggal_tes": "2024-08-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +936 1 {"jenis": "Type1", "durasi": 18.61, "record": "Record_935", "signals": "Signal_935", "annotations": "Annotation_935", "tanggal_tes": "2024-10-03", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +937 1 {"jenis": "Type2", "durasi": 18.06, "record": "Record_936", "signals": "Signal_936", "annotations": "Annotation_936", "tanggal_tes": "2024-09-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +938 1 {"jenis": "Type1", "durasi": 14.81, "record": "Record_937", "signals": "Signal_937", "annotations": "Annotation_937", "tanggal_tes": "2024-03-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +939 1 {"jenis": "Type2", "durasi": 12.92, "record": "Record_938", "signals": "Signal_938", "annotations": "Annotation_938", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +940 1 {"jenis": "Type1", "durasi": 7.3, "record": "Record_939", "signals": "Signal_939", "annotations": "Annotation_939", "tanggal_tes": "2024-09-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +941 1 {"jenis": "Type2", "durasi": 11.01, "record": "Record_940", "signals": "Signal_940", "annotations": "Annotation_940", "tanggal_tes": "2024-04-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +942 1 {"jenis": "Type2", "durasi": 20.75, "record": "Record_941", "signals": "Signal_941", "annotations": "Annotation_941", "tanggal_tes": "2024-08-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +943 1 {"jenis": "Type1", "durasi": 18.78, "record": "Record_942", "signals": "Signal_942", "annotations": "Annotation_942", "tanggal_tes": "2024-06-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +944 1 {"jenis": "Type1", "durasi": 14.95, "record": "Record_943", "signals": "Signal_943", "annotations": "Annotation_943", "tanggal_tes": "2024-11-05", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +945 1 {"jenis": "Type1", "durasi": 14.25, "record": "Record_944", "signals": "Signal_944", "annotations": "Annotation_944", "tanggal_tes": "2024-12-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +946 1 {"jenis": "Type1", "durasi": 6.11, "record": "Record_945", "signals": "Signal_945", "annotations": "Annotation_945", "tanggal_tes": "2024-11-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +947 1 {"jenis": "Type2", "durasi": 17.33, "record": "Record_946", "signals": "Signal_946", "annotations": "Annotation_946", "tanggal_tes": "2024-07-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +948 1 {"jenis": "Type2", "durasi": 9.3, "record": "Record_947", "signals": "Signal_947", "annotations": "Annotation_947", "tanggal_tes": "2024-11-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +949 1 {"jenis": "Type2", "durasi": 9.29, "record": "Record_948", "signals": "Signal_948", "annotations": "Annotation_948", "tanggal_tes": "2024-04-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +950 1 {"jenis": "Type1", "durasi": 19.68, "record": "Record_949", "signals": "Signal_949", "annotations": "Annotation_949", "tanggal_tes": "2024-02-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +951 1 {"jenis": "Type2", "durasi": 5.7, "record": "Record_950", "signals": "Signal_950", "annotations": "Annotation_950", "tanggal_tes": "2024-10-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +952 1 {"jenis": "Type2", "durasi": 16.57, "record": "Record_951", "signals": "Signal_951", "annotations": "Annotation_951", "tanggal_tes": "2024-07-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +953 1 {"jenis": "Type1", "durasi": 5.87, "record": "Record_952", "signals": "Signal_952", "annotations": "Annotation_952", "tanggal_tes": "2024-06-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +954 1 {"jenis": "Type2", "durasi": 6.11, "record": "Record_953", "signals": "Signal_953", "annotations": "Annotation_953", "tanggal_tes": "2025-01-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +955 1 {"jenis": "Type1", "durasi": 13.76, "record": "Record_954", "signals": "Signal_954", "annotations": "Annotation_954", "tanggal_tes": "2024-11-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +956 1 {"jenis": "Type1", "durasi": 20.95, "record": "Record_955", "signals": "Signal_955", "annotations": "Annotation_955", "tanggal_tes": "2024-03-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +957 1 {"jenis": "Type2", "durasi": 5.83, "record": "Record_956", "signals": "Signal_956", "annotations": "Annotation_956", "tanggal_tes": "2024-03-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +958 1 {"jenis": "Type2", "durasi": 5.48, "record": "Record_957", "signals": "Signal_957", "annotations": "Annotation_957", "tanggal_tes": "2024-03-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +959 1 {"jenis": "Type2", "durasi": 18.41, "record": "Record_958", "signals": "Signal_958", "annotations": "Annotation_958", "tanggal_tes": "2025-01-13", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +960 1 {"jenis": "Type1", "durasi": 9.03, "record": "Record_959", "signals": "Signal_959", "annotations": "Annotation_959", "tanggal_tes": "2024-02-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +961 1 {"jenis": "Type1", "durasi": 20.11, "record": "Record_960", "signals": "Signal_960", "annotations": "Annotation_960", "tanggal_tes": "2024-07-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +962 1 {"jenis": "Type2", "durasi": 20.48, "record": "Record_961", "signals": "Signal_961", "annotations": "Annotation_961", "tanggal_tes": "2024-05-25", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +963 1 {"jenis": "Type1", "durasi": 17.02, "record": "Record_962", "signals": "Signal_962", "annotations": "Annotation_962", "tanggal_tes": "2024-09-19", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +964 1 {"jenis": "Type1", "durasi": 12.55, "record": "Record_963", "signals": "Signal_963", "annotations": "Annotation_963", "tanggal_tes": "2024-03-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +965 1 {"jenis": "Type1", "durasi": 18.83, "record": "Record_964", "signals": "Signal_964", "annotations": "Annotation_964", "tanggal_tes": "2025-01-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +966 1 {"jenis": "Type1", "durasi": 7.72, "record": "Record_965", "signals": "Signal_965", "annotations": "Annotation_965", "tanggal_tes": "2024-05-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +967 1 {"jenis": "Type1", "durasi": 14.05, "record": "Record_966", "signals": "Signal_966", "annotations": "Annotation_966", "tanggal_tes": "2024-10-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +968 1 {"jenis": "Type1", "durasi": 8.56, "record": "Record_967", "signals": "Signal_967", "annotations": "Annotation_967", "tanggal_tes": "2024-09-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +969 1 {"jenis": "Type1", "durasi": 10.11, "record": "Record_968", "signals": "Signal_968", "annotations": "Annotation_968", "tanggal_tes": "2024-06-17", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +970 1 {"jenis": "Type1", "durasi": 17.06, "record": "Record_969", "signals": "Signal_969", "annotations": "Annotation_969", "tanggal_tes": "2024-04-04", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +971 1 {"jenis": "Type1", "durasi": 17.44, "record": "Record_970", "signals": "Signal_970", "annotations": "Annotation_970", "tanggal_tes": "2024-12-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +972 1 {"jenis": "Type1", "durasi": 15.99, "record": "Record_971", "signals": "Signal_971", "annotations": "Annotation_971", "tanggal_tes": "2024-12-10", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +973 1 {"jenis": "Type1", "durasi": 16.8, "record": "Record_972", "signals": "Signal_972", "annotations": "Annotation_972", "tanggal_tes": "2024-05-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +974 1 {"jenis": "Type1", "durasi": 14.59, "record": "Record_973", "signals": "Signal_973", "annotations": "Annotation_973", "tanggal_tes": "2024-07-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +975 1 {"jenis": "Type2", "durasi": 10.87, "record": "Record_974", "signals": "Signal_974", "annotations": "Annotation_974", "tanggal_tes": "2024-09-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +976 1 {"jenis": "Type1", "durasi": 9.01, "record": "Record_975", "signals": "Signal_975", "annotations": "Annotation_975", "tanggal_tes": "2024-08-31", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +977 1 {"jenis": "Type2", "durasi": 10.06, "record": "Record_976", "signals": "Signal_976", "annotations": "Annotation_976", "tanggal_tes": "2024-03-01", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +978 1 {"jenis": "Type1", "durasi": 18.1, "record": "Record_977", "signals": "Signal_977", "annotations": "Annotation_977", "tanggal_tes": "2024-04-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +979 1 {"jenis": "Type1", "durasi": 6.26, "record": "Record_978", "signals": "Signal_978", "annotations": "Annotation_978", "tanggal_tes": "2024-11-21", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +980 1 {"jenis": "Type1", "durasi": 14.76, "record": "Record_979", "signals": "Signal_979", "annotations": "Annotation_979", "tanggal_tes": "2024-03-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +981 1 {"jenis": "Type1", "durasi": 13.03, "record": "Record_980", "signals": "Signal_980", "annotations": "Annotation_980", "tanggal_tes": "2024-02-14", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +982 1 {"jenis": "Type2", "durasi": 20.83, "record": "Record_981", "signals": "Signal_981", "annotations": "Annotation_981", "tanggal_tes": "2024-04-15", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +983 1 {"jenis": "Type1", "durasi": 14.13, "record": "Record_982", "signals": "Signal_982", "annotations": "Annotation_982", "tanggal_tes": "2024-03-09", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +984 1 {"jenis": "Type2", "durasi": 14.89, "record": "Record_983", "signals": "Signal_983", "annotations": "Annotation_983", "tanggal_tes": "2024-10-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +985 1 {"jenis": "Type2", "durasi": 16.67, "record": "Record_984", "signals": "Signal_984", "annotations": "Annotation_984", "tanggal_tes": "2024-05-23", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +986 1 {"jenis": "Type2", "durasi": 10.6, "record": "Record_985", "signals": "Signal_985", "annotations": "Annotation_985", "tanggal_tes": "2024-10-11", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +987 1 {"jenis": "Type2", "durasi": 13.86, "record": "Record_986", "signals": "Signal_986", "annotations": "Annotation_986", "tanggal_tes": "2024-05-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +988 1 {"jenis": "Type2", "durasi": 8.72, "record": "Record_987", "signals": "Signal_987", "annotations": "Annotation_987", "tanggal_tes": "2024-07-24", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +989 1 {"jenis": "Type2", "durasi": 14.38, "record": "Record_988", "signals": "Signal_988", "annotations": "Annotation_988", "tanggal_tes": "2024-04-02", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +990 1 {"jenis": "Type1", "durasi": 11.92, "record": "Record_989", "signals": "Signal_989", "annotations": "Annotation_989", "tanggal_tes": "2024-09-22", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +991 1 {"jenis": "Type2", "durasi": 5.14, "record": "Record_990", "signals": "Signal_990", "annotations": "Annotation_990", "tanggal_tes": "2024-11-26", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +992 1 {"jenis": "Type2", "durasi": 8.95, "record": "Record_991", "signals": "Signal_991", "annotations": "Annotation_991", "tanggal_tes": "2024-02-28", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +993 1 {"jenis": "Type2", "durasi": 13.22, "record": "Record_992", "signals": "Signal_992", "annotations": "Annotation_992", "tanggal_tes": "2024-10-08", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +994 1 {"jenis": "Type1", "durasi": 12.1, "record": "Record_993", "signals": "Signal_993", "annotations": "Annotation_993", "tanggal_tes": "2024-06-07", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +995 1 {"jenis": "Type2", "durasi": 18.96, "record": "Record_994", "signals": "Signal_994", "annotations": "Annotation_994", "tanggal_tes": "2024-07-29", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +996 1 {"jenis": "Type1", "durasi": 15.08, "record": "Record_995", "signals": "Signal_995", "annotations": "Annotation_995", "tanggal_tes": "2024-03-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +997 1 {"jenis": "Type2", "durasi": 17.93, "record": "Record_996", "signals": "Signal_996", "annotations": "Annotation_996", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +998 1 {"jenis": "Type2", "durasi": 6.8100000000000005, "record": "Record_997", "signals": "Signal_997", "annotations": "Annotation_997", "tanggal_tes": "2024-06-06", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +999 1 {"jenis": "Type2", "durasi": 5.75, "record": "Record_998", "signals": "Signal_998", "annotations": "Annotation_998", "tanggal_tes": "2024-06-16", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1000 1 {"jenis": "Type1", "durasi": 17.65, "record": "Record_999", "signals": "Signal_999", "annotations": "Annotation_999", "tanggal_tes": "2024-09-30", "file_detak_jantung": "diseases/records/1/example1.wav"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1001 2 {"umur": 56, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_0", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-21", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1002 2 {"umur": 70, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_1", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-16", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1003 2 {"umur": 41, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_2", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-02", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1004 2 {"umur": 39, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_3", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-20", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1005 2 {"umur": 68, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_4", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-15", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1006 2 {"umur": 42, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_5", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1007 2 {"umur": 39, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_6", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-18", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1008 2 {"umur": 46, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_7", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-24", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1009 2 {"umur": 51, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_8", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-19", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1010 2 {"umur": 42, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_9", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-25", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1011 2 {"umur": 66, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_10", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-20", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1012 2 {"umur": 65, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_11", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-30", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1013 2 {"umur": 37, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_12", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-26", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1014 2 {"umur": 33, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_13", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-01", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:15 2025-01-28 14:54:15 +1015 2 {"umur": 47, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_14", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1016 2 {"umur": 39, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_15", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-07", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1017 2 {"umur": 38, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_16", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1018 2 {"umur": 70, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_17", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-30", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1019 2 {"umur": 47, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_18", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-13", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1020 2 {"umur": 51, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_19", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-12", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1021 2 {"umur": 33, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_20", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-08", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1022 2 {"umur": 34, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_21", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-14", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1023 2 {"umur": 65, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_22", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-27", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1024 2 {"umur": 30, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_23", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-10", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1025 2 {"umur": 39, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_24", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-29", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1026 2 {"umur": 53, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_25", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-27", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1027 2 {"umur": 67, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_26", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-31", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1028 2 {"umur": 32, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_27", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1029 2 {"umur": 52, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_28", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-28", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1030 2 {"umur": 39, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_29", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-23", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1031 2 {"umur": 40, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_30", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-29", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1032 2 {"umur": 52, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_31", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-07", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1033 2 {"umur": 69, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_32", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-04", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1034 2 {"umur": 41, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_33", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-15", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1035 2 {"umur": 48, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_34", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-21", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1036 2 {"umur": 63, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_35", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-31", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1037 2 {"umur": 52, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_36", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-15", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1038 2 {"umur": 59, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_37", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-21", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1039 2 {"umur": 32, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_38", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-23", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1040 2 {"umur": 67, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_39", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-25", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1041 2 {"umur": 40, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_40", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-20", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1042 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_41", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-29", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1043 2 {"umur": 65, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_42", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1044 2 {"umur": 37, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_43", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-03", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1045 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_44", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-18", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1046 2 {"umur": 40, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_45", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-29", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1047 2 {"umur": 59, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_46", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-20", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1048 2 {"umur": 67, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_47", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1049 2 {"umur": 38, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_48", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1050 2 {"umur": 47, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_49", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-18", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1051 2 {"umur": 44, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_50", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-03", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1052 2 {"umur": 56, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_51", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-09", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1053 2 {"umur": 45, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_52", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-10", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1054 2 {"umur": 53, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_53", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-01", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1055 2 {"umur": 64, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_54", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-03", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1056 2 {"umur": 64, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_55", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-18", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1057 2 {"umur": 50, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_56", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-23", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1058 2 {"umur": 33, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_57", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-27", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1059 2 {"umur": 46, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_58", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-14", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1060 2 {"umur": 52, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_59", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-31", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1061 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_60", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1062 2 {"umur": 56, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_61", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-29", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1063 2 {"umur": 50, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_62", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-18", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1064 2 {"umur": 58, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_63", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-04", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1065 2 {"umur": 53, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_64", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-04", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1066 2 {"umur": 61, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_65", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-13", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1067 2 {"umur": 61, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_66", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-16", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1068 2 {"umur": 44, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_67", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-14", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1069 2 {"umur": 57, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_68", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-21", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1070 2 {"umur": 57, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_69", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-10", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1071 2 {"umur": 65, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_70", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-09", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1072 2 {"umur": 47, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_71", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-15", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1073 2 {"umur": 30, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_72", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-18", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1074 2 {"umur": 35, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_73", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-11", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1075 2 {"umur": 67, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_74", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-22", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1076 2 {"umur": 33, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_75", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-18", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1077 2 {"umur": 70, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_76", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-26", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1078 2 {"umur": 32, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_77", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-01", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1079 2 {"umur": 45, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_78", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-17", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1080 2 {"umur": 61, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_79", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1081 2 {"umur": 51, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_80", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-15", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1082 2 {"umur": 63, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_81", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-09", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1083 2 {"umur": 30, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_82", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-13", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1084 2 {"umur": 66, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_83", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-06", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1085 2 {"umur": 62, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_84", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-25", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1086 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_85", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-25", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1087 2 {"umur": 61, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_86", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-15", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1088 2 {"umur": 40, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_87", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-21", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1089 2 {"umur": 43, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_88", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-10", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1090 2 {"umur": 52, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_89", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-17", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1091 2 {"umur": 35, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_90", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-01", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1092 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_91", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-17", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1093 2 {"umur": 31, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_92", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-19", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1094 2 {"umur": 59, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_93", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-13", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1095 2 {"umur": 48, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_94", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-21", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1096 2 {"umur": 38, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_95", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-18", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1097 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_96", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-30", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1098 2 {"umur": 32, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_97", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-06", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1099 2 {"umur": 62, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_98", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-26", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1100 2 {"umur": 36, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_99", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-09", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1101 2 {"umur": 34, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_100", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-06", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1102 2 {"umur": 55, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_101", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-16", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1103 2 {"umur": 40, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_102", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-13", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1104 2 {"umur": 58, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_103", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1105 2 {"umur": 34, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_104", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-01", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1106 2 {"umur": 30, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_105", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-11", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1107 2 {"umur": 62, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_106", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1108 2 {"umur": 39, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_107", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-27", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1109 2 {"umur": 52, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_108", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-16", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1110 2 {"umur": 40, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_109", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-24", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1111 2 {"umur": 69, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_110", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-24", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1112 2 {"umur": 57, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_111", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-04", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1113 2 {"umur": 37, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_112", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-08", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1114 2 {"umur": 64, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_113", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-12", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1115 2 {"umur": 62, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_114", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-20", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1116 2 {"umur": 37, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_115", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-13", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1117 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_116", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1118 2 {"umur": 69, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_117", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-09", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1119 2 {"umur": 30, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_118", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-29", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1120 2 {"umur": 35, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_119", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-30", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1121 2 {"umur": 55, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_120", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-04", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1122 2 {"umur": 37, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_121", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-12", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1123 2 {"umur": 31, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_122", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-30", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1124 2 {"umur": 54, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_123", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-29", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1125 2 {"umur": 57, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_124", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1126 2 {"umur": 69, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_125", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-15", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1127 2 {"umur": 62, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_126", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-31", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1128 2 {"umur": 59, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_127", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-12", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1129 2 {"umur": 69, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_128", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-13", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1130 2 {"umur": 45, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_129", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-23", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1131 2 {"umur": 51, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_130", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-07", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1132 2 {"umur": 62, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_131", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-24", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1133 2 {"umur": 41, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_132", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-14", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1134 2 {"umur": 47, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_133", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1135 2 {"umur": 64, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_134", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-11", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1136 2 {"umur": 47, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_135", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-19", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1137 2 {"umur": 42, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_136", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-18", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1138 2 {"umur": 40, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_137", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-02", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1139 2 {"umur": 43, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_138", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-06", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1140 2 {"umur": 64, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_139", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-18", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1141 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_140", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-09", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1142 2 {"umur": 36, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_141", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-05", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1143 2 {"umur": 59, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_142", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-08", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1144 2 {"umur": 33, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_143", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-04", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1145 2 {"umur": 47, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_144", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-22", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1146 2 {"umur": 62, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_145", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-05", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1147 2 {"umur": 42, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_146", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-12", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1148 2 {"umur": 37, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_147", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-24", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1149 2 {"umur": 37, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_148", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-10", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1150 2 {"umur": 60, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_149", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-04", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1151 2 {"umur": 70, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_150", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-08", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1152 2 {"umur": 62, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_151", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-15", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1153 2 {"umur": 56, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_152", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-11", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1154 2 {"umur": 65, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_153", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1155 2 {"umur": 40, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_154", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-14", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1156 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_155", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-12", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1157 2 {"umur": 36, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_156", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-26", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1158 2 {"umur": 60, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_157", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-02", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1159 2 {"umur": 63, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_158", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-12", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1160 2 {"umur": 67, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_159", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-20", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1161 2 {"umur": 33, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_160", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-02", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1162 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_161", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-08", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1163 2 {"umur": 55, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_162", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1164 2 {"umur": 47, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_163", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-03", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1165 2 {"umur": 51, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_164", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-28", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1166 2 {"umur": 58, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_165", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-21", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1167 2 {"umur": 31, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_166", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1168 2 {"umur": 37, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_167", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1169 2 {"umur": 45, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_168", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-26", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1170 2 {"umur": 40, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_169", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-03", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1171 2 {"umur": 66, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_170", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-05", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1172 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_171", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-27", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1173 2 {"umur": 47, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_172", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-25", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1174 2 {"umur": 44, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_173", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-11", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1175 2 {"umur": 35, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_174", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1176 2 {"umur": 41, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_175", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-01", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1177 2 {"umur": 45, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_176", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-10", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1178 2 {"umur": 43, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_177", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-13", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1179 2 {"umur": 51, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_178", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1180 2 {"umur": 61, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_179", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-30", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1181 2 {"umur": 50, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_180", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-09", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1182 2 {"umur": 70, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_181", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-28", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1183 2 {"umur": 55, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_182", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-21", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1184 2 {"umur": 50, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_183", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-09", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1185 2 {"umur": 67, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_184", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-09", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1186 2 {"umur": 58, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_185", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-05", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1187 2 {"umur": 53, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_186", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-25", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1188 2 {"umur": 44, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_187", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1189 2 {"umur": 70, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_188", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-24", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1190 2 {"umur": 60, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_189", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1191 2 {"umur": 46, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_190", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-22", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1192 2 {"umur": 32, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_191", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-26", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1193 2 {"umur": 39, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_192", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-24", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1194 2 {"umur": 38, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_193", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-14", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1195 2 {"umur": 59, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_194", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-27", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1196 2 {"umur": 35, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_195", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-11", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1197 2 {"umur": 49, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_196", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-20", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1198 2 {"umur": 46, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_197", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-20", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1199 2 {"umur": 66, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_198", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-19", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1200 2 {"umur": 52, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_199", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-23", "jenis_kelamin": "Female", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1201 2 {"umur": 70, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_200", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-15", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1202 2 {"umur": 64, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_201", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1203 2 {"umur": 61, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_202", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-13", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1204 2 {"umur": 42, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_203", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1205 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_204", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-29", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1206 2 {"umur": 64, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_205", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-28", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1207 2 {"umur": 60, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_206", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-26", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1208 2 {"umur": 61, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_207", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-31", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1209 2 {"umur": 69, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_208", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1210 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_209", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-18", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1211 2 {"umur": 49, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_210", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1212 2 {"umur": 57, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_211", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-10", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1213 2 {"umur": 55, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_212", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-09", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1214 2 {"umur": 50, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_213", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-04", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1215 2 {"umur": 65, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_214", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1216 2 {"umur": 42, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_215", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-12", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1217 2 {"umur": 58, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_216", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-28", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1218 2 {"umur": 46, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_217", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-30", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1219 2 {"umur": 58, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_218", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-16", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1220 2 {"umur": 32, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_219", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-08", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1221 2 {"umur": 64, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_220", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-10", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1222 2 {"umur": 42, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_221", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-18", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1223 2 {"umur": 43, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_222", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-04", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1224 2 {"umur": 56, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_223", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-04", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1225 2 {"umur": 42, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_224", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-14", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1226 2 {"umur": 45, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_225", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1227 2 {"umur": 32, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_226", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-09", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1228 2 {"umur": 44, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_227", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-23", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1229 2 {"umur": 49, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_228", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-27", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1230 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_229", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-06", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1231 2 {"umur": 52, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_230", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-10", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1232 2 {"umur": 41, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_231", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-27", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1233 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_232", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-07", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1234 2 {"umur": 54, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_233", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-24", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1235 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_234", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-22", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1236 2 {"umur": 57, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_235", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-03", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1237 2 {"umur": 60, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_236", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-18", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1238 2 {"umur": 66, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_237", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-03", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1239 2 {"umur": 49, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_238", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1240 2 {"umur": 60, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_239", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-22", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1241 2 {"umur": 50, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_240", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-14", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1242 2 {"umur": 47, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_241", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-06", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1243 2 {"umur": 60, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_242", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-16", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1244 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_243", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-28", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1245 2 {"umur": 47, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_244", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-28", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1246 2 {"umur": 60, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_245", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-19", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1247 2 {"umur": 41, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_246", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-23", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1248 2 {"umur": 42, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_247", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-25", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1249 2 {"umur": 61, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_248", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1250 2 {"umur": 36, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_249", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-17", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1251 2 {"umur": 66, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_250", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-17", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1252 2 {"umur": 50, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_251", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-28", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1253 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_252", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-23", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1254 2 {"umur": 53, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_253", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-03", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1255 2 {"umur": 35, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_254", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-07", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1256 2 {"umur": 41, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_255", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-27", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1257 2 {"umur": 30, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_256", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-28", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1258 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_257", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1259 2 {"umur": 67, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_258", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-06", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1260 2 {"umur": 40, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_259", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-03", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1261 2 {"umur": 49, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_260", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-29", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1262 2 {"umur": 60, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_261", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-19", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1263 2 {"umur": 40, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_262", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-10", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1264 2 {"umur": 61, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_263", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-24", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1265 2 {"umur": 51, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_264", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-09", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1266 2 {"umur": 33, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_265", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-18", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1267 2 {"umur": 30, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_266", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-12", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1268 2 {"umur": 58, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_267", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-08", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1269 2 {"umur": 46, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_268", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-16", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1270 2 {"umur": 57, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_269", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-14", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1271 2 {"umur": 32, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_270", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-25", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1272 2 {"umur": 49, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_271", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-29", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1273 2 {"umur": 69, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_272", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-26", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1274 2 {"umur": 64, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_273", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-22", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1275 2 {"umur": 48, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_274", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-23", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1276 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_275", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1277 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_276", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-02", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1278 2 {"umur": 34, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_277", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-29", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1279 2 {"umur": 43, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_278", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-06", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1280 2 {"umur": 41, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_279", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-07", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1281 2 {"umur": 57, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_280", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1282 2 {"umur": 45, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_281", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-27", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1283 2 {"umur": 52, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_282", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-06", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1284 2 {"umur": 47, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_283", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-10", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1285 2 {"umur": 38, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_284", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-21", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1286 2 {"umur": 69, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_285", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-06", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1287 2 {"umur": 31, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_286", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-26", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1288 2 {"umur": 34, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_287", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-07", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1289 2 {"umur": 41, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_288", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-19", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1290 2 {"umur": 63, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_289", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1291 2 {"umur": 68, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_290", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-22", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1292 2 {"umur": 68, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_291", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-16", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1293 2 {"umur": 62, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_292", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1294 2 {"umur": 50, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_293", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-18", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1295 2 {"umur": 68, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_294", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1296 2 {"umur": 69, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_295", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-15", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1297 2 {"umur": 35, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_296", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-17", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1298 2 {"umur": 60, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_297", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-16", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1299 2 {"umur": 65, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_298", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-05", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1300 2 {"umur": 60, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_299", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1301 2 {"umur": 39, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_300", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-11", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1302 2 {"umur": 67, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_301", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-12", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1303 2 {"umur": 60, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_302", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-26", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1304 2 {"umur": 46, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_303", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1305 2 {"umur": 44, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_304", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-11", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1306 2 {"umur": 46, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_305", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1307 2 {"umur": 33, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_306", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-28", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1308 2 {"umur": 31, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_307", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1309 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_308", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-06", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1310 2 {"umur": 30, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_309", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-18", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1311 2 {"umur": 43, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_310", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1312 2 {"umur": 33, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_311", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-19", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1313 2 {"umur": 34, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_312", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-24", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1314 2 {"umur": 52, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_313", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-16", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1315 2 {"umur": 60, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_314", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-30", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1316 2 {"umur": 31, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_315", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1317 2 {"umur": 33, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_316", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-19", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1318 2 {"umur": 57, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_317", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-24", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1319 2 {"umur": 57, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_318", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-02", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1320 2 {"umur": 59, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_319", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1321 2 {"umur": 38, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_320", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-17", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1322 2 {"umur": 43, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_321", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-14", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1323 2 {"umur": 67, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_322", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-02", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1324 2 {"umur": 57, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_323", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1325 2 {"umur": 48, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_324", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-03", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1326 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_325", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-06", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1327 2 {"umur": 69, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_326", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-28", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1328 2 {"umur": 36, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_327", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1329 2 {"umur": 57, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_328", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-14", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1330 2 {"umur": 58, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_329", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-20", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1331 2 {"umur": 65, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_330", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-25", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1332 2 {"umur": 49, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_331", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-24", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1333 2 {"umur": 70, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_332", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-08", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1334 2 {"umur": 45, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_333", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-17", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1335 2 {"umur": 44, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_334", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-13", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1336 2 {"umur": 59, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_335", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-26", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1337 2 {"umur": 42, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_336", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-09", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1338 2 {"umur": 62, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_337", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-17", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1339 2 {"umur": 56, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_338", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-08", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1340 2 {"umur": 47, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_339", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-27", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1341 2 {"umur": 31, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_340", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-09", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1342 2 {"umur": 31, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_341", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-29", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1343 2 {"umur": 33, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_342", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-13", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1344 2 {"umur": 62, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_343", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-29", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1345 2 {"umur": 56, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_344", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-03", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1346 2 {"umur": 41, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_345", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-31", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1347 2 {"umur": 52, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_346", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-30", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1348 2 {"umur": 61, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_347", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-31", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1349 2 {"umur": 63, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_348", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-15", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1350 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_349", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-29", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1351 2 {"umur": 37, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_350", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-27", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1352 2 {"umur": 49, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_351", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-05", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1353 2 {"umur": 60, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_352", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-17", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1354 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_353", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-01", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1355 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_354", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-20", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1356 2 {"umur": 51, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_355", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-28", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1357 2 {"umur": 53, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_356", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-27", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1358 2 {"umur": 70, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_357", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-27", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1359 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_358", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-21", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1360 2 {"umur": 65, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_359", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-21", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1361 2 {"umur": 42, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_360", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-27", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1362 2 {"umur": 57, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_361", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1363 2 {"umur": 39, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_362", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-11", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1364 2 {"umur": 33, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_363", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-25", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1365 2 {"umur": 68, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_364", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-26", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1366 2 {"umur": 46, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_365", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-29", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1367 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_366", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-10", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1368 2 {"umur": 50, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_367", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-02", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1369 2 {"umur": 54, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_368", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-08", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1370 2 {"umur": 49, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_369", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-19", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1371 2 {"umur": 41, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_370", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-11", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1372 2 {"umur": 45, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_371", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-10", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1373 2 {"umur": 65, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_372", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-10", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1374 2 {"umur": 35, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_373", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-10", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1375 2 {"umur": 49, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_374", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-11", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1376 2 {"umur": 65, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_375", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1377 2 {"umur": 59, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_376", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-24", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1378 2 {"umur": 61, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_377", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-10", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1379 2 {"umur": 51, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_378", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-10", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1380 2 {"umur": 33, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_379", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-24", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1381 2 {"umur": 47, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_380", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-01", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1382 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_381", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1383 2 {"umur": 54, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_382", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-23", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1384 2 {"umur": 42, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_383", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-18", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1385 2 {"umur": 45, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_384", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-31", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1386 2 {"umur": 53, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_385", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-11", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1387 2 {"umur": 51, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_386", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-31", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1388 2 {"umur": 70, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_387", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-28", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1389 2 {"umur": 48, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_388", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-27", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1390 2 {"umur": 66, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_389", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1391 2 {"umur": 64, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_390", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-14", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1392 2 {"umur": 54, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_391", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-04", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1393 2 {"umur": 47, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_392", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-12", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1394 2 {"umur": 38, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_393", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-11", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1395 2 {"umur": 38, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_394", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-09", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1396 2 {"umur": 34, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_395", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-13", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1397 2 {"umur": 54, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_396", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-23", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1398 2 {"umur": 53, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_397", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-04", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1399 2 {"umur": 40, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_398", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-15", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1400 2 {"umur": 70, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_399", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-04", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1401 2 {"umur": 48, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_400", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-17", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1402 2 {"umur": 48, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_401", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-13", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1403 2 {"umur": 70, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_402", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-22", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1404 2 {"umur": 60, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_403", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-12", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1405 2 {"umur": 32, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_404", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-17", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1406 2 {"umur": 35, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_405", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-03", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1407 2 {"umur": 46, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_406", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-01", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1408 2 {"umur": 59, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_407", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-30", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1409 2 {"umur": 48, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_408", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-07", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1410 2 {"umur": 69, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_409", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-03", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1411 2 {"umur": 47, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_410", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-04", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1412 2 {"umur": 41, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_411", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-24", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1413 2 {"umur": 51, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_412", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-24", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1414 2 {"umur": 49, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_413", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-20", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1415 2 {"umur": 58, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_414", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-31", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1416 2 {"umur": 42, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_415", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-11", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1417 2 {"umur": 69, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_416", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-17", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1418 2 {"umur": 45, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_417", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-29", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1419 2 {"umur": 38, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_418", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-25", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1420 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_419", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1421 2 {"umur": 37, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_420", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1422 2 {"umur": 64, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_421", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-29", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1423 2 {"umur": 56, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_422", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-22", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1424 2 {"umur": 35, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_423", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-31", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1425 2 {"umur": 54, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_424", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-28", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1426 2 {"umur": 63, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_425", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-26", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1427 2 {"umur": 58, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_426", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-28", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1428 2 {"umur": 64, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_427", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-14", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1429 2 {"umur": 45, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_428", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1430 2 {"umur": 45, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_429", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-28", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1431 2 {"umur": 43, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_430", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-09", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1432 2 {"umur": 57, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_431", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-18", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1433 2 {"umur": 51, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_432", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-12", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1434 2 {"umur": 55, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_433", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-06", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1435 2 {"umur": 34, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_434", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-11", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1436 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_435", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-10", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1437 2 {"umur": 32, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_436", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-19", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1438 2 {"umur": 54, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_437", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1439 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_438", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-25", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1440 2 {"umur": 52, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_439", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-05", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1441 2 {"umur": 45, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_440", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-16", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1442 2 {"umur": 53, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_441", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-01", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1443 2 {"umur": 40, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_442", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-05", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1444 2 {"umur": 33, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_443", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1445 2 {"umur": 64, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_444", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-12", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1446 2 {"umur": 59, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_445", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-30", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1447 2 {"umur": 55, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_446", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-08", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1448 2 {"umur": 31, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_447", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-21", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1449 2 {"umur": 51, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_448", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-27", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1450 2 {"umur": 36, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_449", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-31", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1451 2 {"umur": 57, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_450", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-29", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1452 2 {"umur": 44, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_451", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-02", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1453 2 {"umur": 54, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_452", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-13", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1454 2 {"umur": 31, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_453", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-27", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1455 2 {"umur": 56, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_454", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-04", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1456 2 {"umur": 43, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_455", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-03", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1457 2 {"umur": 63, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_456", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-08", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1458 2 {"umur": 36, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_457", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-20", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1459 2 {"umur": 45, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_458", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1460 2 {"umur": 53, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_459", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-01", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1461 2 {"umur": 49, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_460", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-23", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1462 2 {"umur": 57, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_461", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-04", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1463 2 {"umur": 42, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_462", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-07", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1464 2 {"umur": 39, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_463", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-01", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1465 2 {"umur": 67, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_464", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-06", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1466 2 {"umur": 34, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_465", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1467 2 {"umur": 46, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_466", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-25", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1468 2 {"umur": 66, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_467", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-27", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1469 2 {"umur": 61, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_468", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-03", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1470 2 {"umur": 52, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_469", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-23", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1471 2 {"umur": 65, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_470", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-04", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1472 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_471", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-02", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1473 2 {"umur": 65, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_472", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1474 2 {"umur": 49, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_473", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-26", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1475 2 {"umur": 70, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_474", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-06", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1476 2 {"umur": 60, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_475", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-05", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1477 2 {"umur": 36, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_476", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-30", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1478 2 {"umur": 46, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_477", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-30", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1479 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_478", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1480 2 {"umur": 42, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_479", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-27", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1481 2 {"umur": 67, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_480", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-16", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1482 2 {"umur": 39, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_481", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-14", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1483 2 {"umur": 45, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_482", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-10", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1484 2 {"umur": 56, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_483", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-18", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1485 2 {"umur": 32, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_484", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-29", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1486 2 {"umur": 63, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_485", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-28", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1487 2 {"umur": 64, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_486", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-31", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1488 2 {"umur": 54, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_487", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-21", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1489 2 {"umur": 52, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_488", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-09", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1490 2 {"umur": 43, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_489", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1491 2 {"umur": 52, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_490", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-06", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1492 2 {"umur": 42, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_491", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-20", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1493 2 {"umur": 65, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_492", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-22", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1494 2 {"umur": 68, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_493", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-20", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1495 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_494", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-08", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1496 2 {"umur": 40, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_495", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-13", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1497 2 {"umur": 49, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_496", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1498 2 {"umur": 52, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_497", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1499 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_498", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1500 2 {"umur": 36, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_499", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-18", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1501 2 {"umur": 67, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_500", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1502 2 {"umur": 53, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_501", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-22", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1503 2 {"umur": 33, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_502", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-10", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1504 2 {"umur": 30, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_503", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-19", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1505 2 {"umur": 51, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_504", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-18", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1506 2 {"umur": 57, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_505", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1507 2 {"umur": 60, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_506", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-18", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1508 2 {"umur": 63, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_507", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-18", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1509 2 {"umur": 44, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_508", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-24", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1510 2 {"umur": 43, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_509", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Female", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1511 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_510", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-22", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1512 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_511", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1513 2 {"umur": 70, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_512", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-14", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1514 2 {"umur": 55, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_513", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-05", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1515 2 {"umur": 45, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_514", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-04", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1516 2 {"umur": 37, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_515", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-29", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1517 2 {"umur": 53, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_516", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-02", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1518 2 {"umur": 70, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_517", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-04", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1519 2 {"umur": 34, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_518", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-26", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1520 2 {"umur": 51, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_519", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-03", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1521 2 {"umur": 55, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_520", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-02", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1522 2 {"umur": 60, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_521", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-27", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1523 2 {"umur": 50, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_522", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-29", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1524 2 {"umur": 33, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_523", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-21", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1525 2 {"umur": 44, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_524", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-06", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1526 2 {"umur": 57, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_525", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-23", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1527 2 {"umur": 55, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_526", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-04", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1528 2 {"umur": 52, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_527", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-28", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1529 2 {"umur": 50, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_528", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-27", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1530 2 {"umur": 60, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_529", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-05", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1531 2 {"umur": 49, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_530", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-19", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1532 2 {"umur": 56, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_531", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-30", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1533 2 {"umur": 33, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_532", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-08", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1534 2 {"umur": 67, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_533", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-22", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1535 2 {"umur": 58, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_534", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-07", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1536 2 {"umur": 41, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_535", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-23", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1537 2 {"umur": 52, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_536", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-13", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1538 2 {"umur": 37, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_537", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-03", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1539 2 {"umur": 39, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_538", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-21", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1540 2 {"umur": 39, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_539", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-29", "jenis_kelamin": "Female", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1541 2 {"umur": 64, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_540", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1542 2 {"umur": 46, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_541", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-12", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1543 2 {"umur": 58, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_542", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-16", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1544 2 {"umur": 34, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_543", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-03", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1545 2 {"umur": 68, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_544", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-21", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1546 2 {"umur": 46, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_545", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-24", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1547 2 {"umur": 37, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_546", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-30", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1548 2 {"umur": 60, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_547", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1549 2 {"umur": 66, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_548", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-13", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1550 2 {"umur": 35, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_549", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1551 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_550", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-01", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1552 2 {"umur": 63, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_551", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-26", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1553 2 {"umur": 59, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_552", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-19", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1554 2 {"umur": 68, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_553", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-18", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1555 2 {"umur": 30, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_554", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-20", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1556 2 {"umur": 60, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_555", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-06", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1557 2 {"umur": 49, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_556", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-24", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1558 2 {"umur": 46, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_557", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-24", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1559 2 {"umur": 66, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_558", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1560 2 {"umur": 57, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_559", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1561 2 {"umur": 55, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_560", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-13", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1562 2 {"umur": 48, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_561", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-27", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1563 2 {"umur": 34, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_562", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-28", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1564 2 {"umur": 55, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_563", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-25", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1565 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_564", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-23", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1566 2 {"umur": 65, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_565", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1567 2 {"umur": 56, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_566", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-27", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1568 2 {"umur": 37, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_567", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-18", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1569 2 {"umur": 38, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_568", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-15", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1570 2 {"umur": 61, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_569", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-30", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1571 2 {"umur": 38, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_570", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-13", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1572 2 {"umur": 60, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_571", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-11", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1573 2 {"umur": 47, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_572", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-07", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1574 2 {"umur": 39, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_573", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1575 2 {"umur": 48, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_574", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-08", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1576 2 {"umur": 40, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_575", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-29", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1577 2 {"umur": 52, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_576", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-19", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1578 2 {"umur": 34, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_577", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-25", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1579 2 {"umur": 35, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_578", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-21", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1580 2 {"umur": 40, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_579", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-20", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1581 2 {"umur": 46, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_580", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-12", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1582 2 {"umur": 49, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_581", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-21", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1583 2 {"umur": 67, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_582", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1584 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_583", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-12", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1585 2 {"umur": 54, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_584", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-12", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1586 2 {"umur": 44, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_585", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-14", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1587 2 {"umur": 54, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_586", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1588 2 {"umur": 60, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_587", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-17", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1589 2 {"umur": 63, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_588", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-01", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1590 2 {"umur": 65, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_589", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-11", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1591 2 {"umur": 38, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_590", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-17", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1592 2 {"umur": 63, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_591", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-14", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1593 2 {"umur": 56, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_592", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-01", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1594 2 {"umur": 57, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_593", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-22", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1595 2 {"umur": 67, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_594", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-05", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1596 2 {"umur": 67, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_595", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-30", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1597 2 {"umur": 69, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_596", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-08", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1598 2 {"umur": 55, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_597", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1599 2 {"umur": 58, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_598", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-11", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1600 2 {"umur": 52, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_599", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-26", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1601 2 {"umur": 38, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_600", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-08", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1602 2 {"umur": 36, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_601", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-24", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1603 2 {"umur": 45, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_602", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-09", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1604 2 {"umur": 66, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_603", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-10", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1605 2 {"umur": 56, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_604", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-23", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1606 2 {"umur": 43, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_605", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1607 2 {"umur": 67, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_606", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-12", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1608 2 {"umur": 44, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_607", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1609 2 {"umur": 50, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_608", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-07", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1610 2 {"umur": 53, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_609", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-19", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1611 2 {"umur": 32, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_610", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-21", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1612 2 {"umur": 38, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_611", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-06", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1613 2 {"umur": 62, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_612", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-06", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1614 2 {"umur": 30, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_613", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-02", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1615 2 {"umur": 50, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_614", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-10", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1616 2 {"umur": 37, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_615", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-17", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1617 2 {"umur": 46, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_616", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-28", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1618 2 {"umur": 55, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_617", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-08", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1619 2 {"umur": 51, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_618", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-24", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1620 2 {"umur": 35, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_619", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1621 2 {"umur": 70, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_620", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-09", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1622 2 {"umur": 32, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_621", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-28", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1623 2 {"umur": 67, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_622", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-15", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1624 2 {"umur": 52, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_623", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-09", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1625 2 {"umur": 49, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_624", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-06", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1626 2 {"umur": 59, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_625", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-09", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1627 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_626", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1628 2 {"umur": 42, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_627", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-20", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1629 2 {"umur": 36, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_628", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-14", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1630 2 {"umur": 60, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_629", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-17", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1631 2 {"umur": 58, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_630", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-04", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1632 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_631", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-05", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1633 2 {"umur": 42, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_632", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-02", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1634 2 {"umur": 47, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_633", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1635 2 {"umur": 66, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_634", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-02", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1636 2 {"umur": 50, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_635", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-16", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1637 2 {"umur": 54, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_636", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-05", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1638 2 {"umur": 65, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_637", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-07", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1639 2 {"umur": 32, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_638", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1640 2 {"umur": 68, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_639", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-03", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1641 2 {"umur": 36, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_640", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-25", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1642 2 {"umur": 35, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_641", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-26", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1643 2 {"umur": 49, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_642", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-10", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1644 2 {"umur": 59, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_643", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-31", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1645 2 {"umur": 60, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_644", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-03", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1646 2 {"umur": 63, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_645", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-08", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1647 2 {"umur": 31, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_646", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-08", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1648 2 {"umur": 41, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_647", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-20", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1649 2 {"umur": 34, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_648", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-04", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1650 2 {"umur": 33, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_649", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-10", "jenis_kelamin": "Male", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1651 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_650", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1652 2 {"umur": 51, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_651", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1653 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_652", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-19", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1654 2 {"umur": 69, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_653", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-25", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1655 2 {"umur": 30, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_654", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-29", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1656 2 {"umur": 50, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_655", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1657 2 {"umur": 36, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_656", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-02", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1658 2 {"umur": 54, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_657", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1659 2 {"umur": 42, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_658", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-29", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1660 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_659", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1661 2 {"umur": 49, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_660", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-13", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1662 2 {"umur": 70, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_661", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-18", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1663 2 {"umur": 43, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_662", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-10", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1664 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_663", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-02", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1665 2 {"umur": 44, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_664", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-26", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1666 2 {"umur": 41, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_665", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1667 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_666", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1668 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_667", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-11", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1669 2 {"umur": 58, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_668", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1670 2 {"umur": 41, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_669", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1671 2 {"umur": 36, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_670", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-29", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1672 2 {"umur": 40, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_671", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-15", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1673 2 {"umur": 31, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_672", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-11", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1674 2 {"umur": 47, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_673", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-10", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1675 2 {"umur": 61, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_674", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-07", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1676 2 {"umur": 31, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_675", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-06", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1677 2 {"umur": 38, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_676", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-12", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1678 2 {"umur": 34, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_677", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-17", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1679 2 {"umur": 30, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_678", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1680 2 {"umur": 68, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_679", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-16", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1681 2 {"umur": 49, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_680", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-01", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1682 2 {"umur": 58, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_681", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-24", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1683 2 {"umur": 34, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_682", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-15", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1684 2 {"umur": 64, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_683", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-15", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1685 2 {"umur": 40, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_684", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-30", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1686 2 {"umur": 54, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_685", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1687 2 {"umur": 38, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_686", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-23", "jenis_kelamin": "Male", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1688 2 {"umur": 53, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_687", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-03", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1689 2 {"umur": 50, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_688", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-30", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1690 2 {"umur": 69, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_689", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-11", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1691 2 {"umur": 55, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_690", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-25", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1692 2 {"umur": 48, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_691", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1693 2 {"umur": 61, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_692", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-22", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1694 2 {"umur": 35, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_693", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-20", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1695 2 {"umur": 48, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_694", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-21", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1696 2 {"umur": 44, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_695", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1697 2 {"umur": 65, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_696", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-13", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1698 2 {"umur": 45, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_697", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-22", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1699 2 {"umur": 38, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_698", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-12", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1700 2 {"umur": 49, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_699", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-18", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1701 2 {"umur": 67, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_700", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-27", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1702 2 {"umur": 45, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_701", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-19", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1703 2 {"umur": 63, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_702", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1704 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_703", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-11", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1705 2 {"umur": 37, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_704", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-05", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1706 2 {"umur": 69, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_705", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-23", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1707 2 {"umur": 47, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_706", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-27", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1708 2 {"umur": 45, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_707", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-13", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1709 2 {"umur": 36, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_708", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-23", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1710 2 {"umur": 57, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_709", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-13", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1711 2 {"umur": 40, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_710", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1712 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_711", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-08", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1713 2 {"umur": 46, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_712", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1714 2 {"umur": 70, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_713", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-13", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1715 2 {"umur": 67, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_714", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-12", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1716 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_715", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-12", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1717 2 {"umur": 36, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_716", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-07", "jenis_kelamin": "Female", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1718 2 {"umur": 56, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_717", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-31", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1719 2 {"umur": 35, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_718", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-30", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1720 2 {"umur": 63, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_719", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-25", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1721 2 {"umur": 52, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_720", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-02", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1722 2 {"umur": 43, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_721", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1723 2 {"umur": 47, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_722", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-04", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1724 2 {"umur": 33, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_723", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-24", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1725 2 {"umur": 44, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_724", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1726 2 {"umur": 32, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_725", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1727 2 {"umur": 45, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_726", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-06", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1728 2 {"umur": 44, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_727", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-16", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1729 2 {"umur": 67, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_728", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-27", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1730 2 {"umur": 63, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_729", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-08", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1731 2 {"umur": 41, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_730", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-06", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1732 2 {"umur": 45, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_731", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-24", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1733 2 {"umur": 62, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_732", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1734 2 {"umur": 62, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_733", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-16", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1735 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_734", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-10", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1736 2 {"umur": 64, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_735", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-11", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1737 2 {"umur": 49, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_736", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1738 2 {"umur": 61, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_737", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-23", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1739 2 {"umur": 61, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_738", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-29", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1740 2 {"umur": 57, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_739", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-30", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1741 2 {"umur": 49, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_740", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-07", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1742 2 {"umur": 46, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_741", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-23", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1743 2 {"umur": 57, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_742", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1744 2 {"umur": 58, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_743", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-11", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1745 2 {"umur": 42, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_744", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-20", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1746 2 {"umur": 60, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_745", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1747 2 {"umur": 58, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_746", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-16", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1748 2 {"umur": 51, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_747", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-31", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1749 2 {"umur": 45, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_748", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-03", "jenis_kelamin": "Male", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1750 2 {"umur": 51, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_749", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-27", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1751 2 {"umur": 62, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_750", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-16", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1752 2 {"umur": 33, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_751", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-28", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1753 2 {"umur": 61, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_752", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-07", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1754 2 {"umur": 40, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_753", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-07", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1755 2 {"umur": 53, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_754", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-06", "jenis_kelamin": "Female", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1756 2 {"umur": 63, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_755", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-21", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1757 2 {"umur": 52, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_756", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-23", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1758 2 {"umur": 51, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_757", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-10", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1759 2 {"umur": 40, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_758", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-08", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1760 2 {"umur": 43, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_759", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-05", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1761 2 {"umur": 33, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_760", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1762 2 {"umur": 49, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_761", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-14", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1763 2 {"umur": 38, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_762", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-25", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1764 2 {"umur": 44, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_763", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-20", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1765 2 {"umur": 56, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_764", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-02", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1766 2 {"umur": 50, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_765", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-11", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1767 2 {"umur": 64, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_766", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-06", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1768 2 {"umur": 64, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_767", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-15", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1769 2 {"umur": 54, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_768", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-08", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1770 2 {"umur": 61, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_769", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-29", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1771 2 {"umur": 67, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_770", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-22", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1772 2 {"umur": 59, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_771", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-21", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1773 2 {"umur": 47, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_772", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-31", "jenis_kelamin": "Male", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1774 2 {"umur": 31, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_773", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-21", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1775 2 {"umur": 64, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_774", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-10", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1776 2 {"umur": 32, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_775", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1777 2 {"umur": 62, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_776", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-04", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1778 2 {"umur": 43, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_777", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-16", "jenis_kelamin": "Female", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1779 2 {"umur": 36, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_778", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-04", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1780 2 {"umur": 62, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_779", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-03", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1781 2 {"umur": 46, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_780", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-01-31", "jenis_kelamin": "Female", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1782 2 {"umur": 60, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_781", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1783 2 {"umur": 65, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_782", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-25", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1784 2 {"umur": 57, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_783", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-21", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1785 2 {"umur": 33, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_784", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-16", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1786 2 {"umur": 69, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_785", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-29", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1787 2 {"umur": 70, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_786", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-02", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1788 2 {"umur": 59, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_787", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-27", "jenis_kelamin": "Male", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1789 2 {"umur": 67, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_788", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1790 2 {"umur": 66, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_789", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-05", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1791 2 {"umur": 38, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_790", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-14", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1792 2 {"umur": 41, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_791", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-20", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1793 2 {"umur": 57, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_792", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-15", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1794 2 {"umur": 66, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_793", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1795 2 {"umur": 57, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_794", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-17", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1796 2 {"umur": 52, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_795", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-23", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1797 2 {"umur": 40, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_796", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-21", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1798 2 {"umur": 57, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_797", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-12", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1799 2 {"umur": 56, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_798", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-13", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1800 2 {"umur": 32, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_799", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-16", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1801 2 {"umur": 67, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_800", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-01", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1802 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_801", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1803 2 {"umur": 57, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_802", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-24", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1804 2 {"umur": 41, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_803", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-03", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1805 2 {"umur": 52, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_804", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-24", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1806 2 {"umur": 42, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_805", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-07", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1807 2 {"umur": 31, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_806", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-26", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1808 2 {"umur": 50, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_807", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-04", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1809 2 {"umur": 41, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_808", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-21", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1810 2 {"umur": 51, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_809", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-15", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1811 2 {"umur": 39, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_810", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1812 2 {"umur": 44, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_811", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-13", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1813 2 {"umur": 35, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_812", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-26", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1814 2 {"umur": 68, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_813", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-21", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1815 2 {"umur": 31, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_814", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-15", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1816 2 {"umur": 47, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_815", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-15", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1817 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_816", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-10", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1818 2 {"umur": 61, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_817", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-26", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1819 2 {"umur": 30, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_818", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-25", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1820 2 {"umur": 61, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_819", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1821 2 {"umur": 41, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_820", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1822 2 {"umur": 35, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_821", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1823 2 {"umur": 41, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_822", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-08", "jenis_kelamin": "Male", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1824 2 {"umur": 41, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_823", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-04", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1825 2 {"umur": 50, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_824", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-07", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1826 2 {"umur": 49, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_825", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-03", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1827 2 {"umur": 34, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_826", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-07", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1828 2 {"umur": 39, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_827", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-09", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1829 2 {"umur": 69, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_828", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1830 2 {"umur": 62, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_829", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-24", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1831 2 {"umur": 57, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_830", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-27", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1832 2 {"umur": 65, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_831", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-22", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1833 2 {"umur": 69, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_832", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-21", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1834 2 {"umur": 48, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_833", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-23", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1835 2 {"umur": 51, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_834", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-23", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1836 2 {"umur": 44, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_835", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-17", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1837 2 {"umur": 64, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_836", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-06", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1838 2 {"umur": 44, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_837", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-06", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1839 2 {"umur": 49, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_838", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1840 2 {"umur": 43, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_839", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-16", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1841 2 {"umur": 44, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_840", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-28", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1842 2 {"umur": 50, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_841", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-29", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1843 2 {"umur": 49, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_842", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-21", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1844 2 {"umur": 48, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_843", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1845 2 {"umur": 43, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_844", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-08", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1846 2 {"umur": 67, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_845", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-25", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1847 2 {"umur": 63, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_846", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Female", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1848 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_847", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-15", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1849 2 {"umur": 56, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_848", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-09", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1850 2 {"umur": 54, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_849", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-17", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1851 2 {"umur": 64, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_850", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-01", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1852 2 {"umur": 54, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_851", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1853 2 {"umur": 56, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_852", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-22", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1854 2 {"umur": 59, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_853", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-05", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1855 2 {"umur": 45, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_854", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-14", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1856 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_855", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-23", "jenis_kelamin": "Female", "tanggal_lahir": "1977-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1857 2 {"umur": 44, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_856", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-22", "jenis_kelamin": "Female", "tanggal_lahir": "1991-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1858 2 {"umur": 55, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_857", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-09", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1859 2 {"umur": 70, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_858", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-27", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1860 2 {"umur": 32, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_859", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-20", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1861 2 {"umur": 46, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_860", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-15", "jenis_kelamin": "Male", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1862 2 {"umur": 35, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_861", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1863 2 {"umur": 31, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_862", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-14", "jenis_kelamin": "Male", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1864 2 {"umur": 46, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_863", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-17", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1865 2 {"umur": 42, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_864", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-04", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1866 2 {"umur": 38, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_865", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-04", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1867 2 {"umur": 33, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_866", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-14", "jenis_kelamin": "Female", "tanggal_lahir": "1962-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1868 2 {"umur": 47, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_867", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-29", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1869 2 {"umur": 53, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_868", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-30", "jenis_kelamin": "Male", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1870 2 {"umur": 55, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_869", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-04", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1871 2 {"umur": 61, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_870", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-16", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1872 2 {"umur": 47, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_871", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-23", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1873 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_872", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-22", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1874 2 {"umur": 51, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_873", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-15", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1875 2 {"umur": 33, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_874", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-28", "jenis_kelamin": "Female", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1876 2 {"umur": 60, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_875", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-03", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1877 2 {"umur": 68, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_876", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-07", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1878 2 {"umur": 35, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_877", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-03", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1879 2 {"umur": 45, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_878", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-01", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1880 2 {"umur": 64, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_879", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1881 2 {"umur": 30, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_880", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-05", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1882 2 {"umur": 36, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_881", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1883 2 {"umur": 57, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_882", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-10", "jenis_kelamin": "Male", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1884 2 {"umur": 65, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_883", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-28", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1885 2 {"umur": 54, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_884", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-01", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1886 2 {"umur": 68, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_885", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-16", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1887 2 {"umur": 62, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_886", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-23", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1888 2 {"umur": 57, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_887", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-16", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1889 2 {"umur": 65, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_888", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1890 2 {"umur": 57, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_889", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-01", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1891 2 {"umur": 54, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_890", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-05", "jenis_kelamin": "Male", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1892 2 {"umur": 59, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_891", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-22", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1893 2 {"umur": 55, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_892", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-26", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1894 2 {"umur": 34, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_893", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-13", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1895 2 {"umur": 54, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_894", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-29", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1896 2 {"umur": 53, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_895", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-27", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1897 2 {"umur": 58, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_896", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-02", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1898 2 {"umur": 55, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_897", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-19", "jenis_kelamin": "Male", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1899 2 {"umur": 60, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_898", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-13", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1900 2 {"umur": 55, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_899", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-27", "jenis_kelamin": "Male", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1901 2 {"umur": 69, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_900", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-14", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1902 2 {"umur": 32, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_901", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-21", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1903 2 {"umur": 60, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_902", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-19", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1904 2 {"umur": 30, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_903", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-05", "jenis_kelamin": "Female", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1905 2 {"umur": 66, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_904", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-18", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1906 2 {"umur": 69, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_905", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-27", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1907 2 {"umur": 58, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_906", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-11", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1908 2 {"umur": 45, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_907", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-01", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1909 2 {"umur": 54, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_908", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-03", "jenis_kelamin": "Female", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1910 2 {"umur": 33, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_909", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-09", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1911 2 {"umur": 67, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_910", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-01", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1912 2 {"umur": 40, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_911", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-26", "jenis_kelamin": "Male", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1913 2 {"umur": 32, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_912", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-19", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1914 2 {"umur": 36, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_913", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-09", "jenis_kelamin": "Male", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1915 2 {"umur": 63, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_914", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-25", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1916 2 {"umur": 39, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_915", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-30", "jenis_kelamin": "Female", "tanggal_lahir": "1966-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1917 2 {"umur": 50, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_916", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-26", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1918 2 {"umur": 70, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_917", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-28", "jenis_kelamin": "Male", "tanggal_lahir": "1968-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1919 2 {"umur": 42, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_918", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-11", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1920 2 {"umur": 57, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_919", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-20", "jenis_kelamin": "Female", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1921 2 {"umur": 57, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_920", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-05", "jenis_kelamin": "Male", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1922 2 {"umur": 70, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_921", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-30", "jenis_kelamin": "Female", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1923 2 {"umur": 51, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_922", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-19", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1924 2 {"umur": 41, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_923", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-07", "jenis_kelamin": "Female", "tanggal_lahir": "1973-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1925 2 {"umur": 34, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_924", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1926 2 {"umur": 44, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_925", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1927 2 {"umur": 30, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_926", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-09", "jenis_kelamin": "Male", "tanggal_lahir": "1992-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1928 2 {"umur": 55, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_927", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-08", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1929 2 {"umur": 58, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_928", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-19", "jenis_kelamin": "Female", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1930 2 {"umur": 33, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_929", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-05", "jenis_kelamin": "Male", "tanggal_lahir": "1969-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1931 2 {"umur": 50, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_930", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-12", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1932 2 {"umur": 30, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_931", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-14", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1933 2 {"umur": 61, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_932", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-08", "jenis_kelamin": "Female", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1934 2 {"umur": 66, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_933", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-20", "jenis_kelamin": "Female", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1935 2 {"umur": 34, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_934", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-18", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1936 2 {"umur": 48, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_935", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-07", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1937 2 {"umur": 38, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_936", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-30", "jenis_kelamin": "Male", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1938 2 {"umur": 40, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_937", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-10", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1939 2 {"umur": 55, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_938", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-04-15", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1940 2 {"umur": 64, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_939", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Male", "tanggal_lahir": "1961-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1941 2 {"umur": 60, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_940", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-25", "jenis_kelamin": "Male", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1942 2 {"umur": 59, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_941", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-21", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1943 2 {"umur": 62, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_942", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-16", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1944 2 {"umur": 61, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_943", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-19", "jenis_kelamin": "Female", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1945 2 {"umur": 37, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_944", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-04", "jenis_kelamin": "Female", "tanggal_lahir": "1967-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1946 2 {"umur": 64, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_945", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-09-27", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1947 2 {"umur": 40, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_946", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-11", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1948 2 {"umur": 51, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_947", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-11", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1949 2 {"umur": 32, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_948", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-27", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1950 2 {"umur": 57, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_949", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-15", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1951 2 {"umur": 49, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_950", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-17", "jenis_kelamin": "Female", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1952 2 {"umur": 65, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_951", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-11", "jenis_kelamin": "Female", "tanggal_lahir": "1988-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1953 2 {"umur": 41, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_952", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-12", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1954 2 {"umur": 63, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_953", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-08", "jenis_kelamin": "Female", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1955 2 {"umur": 34, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_954", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-06", "jenis_kelamin": "Female", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1956 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_955", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-23", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1957 2 {"umur": 58, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_956", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-11", "jenis_kelamin": "Male", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1958 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_957", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-21", "jenis_kelamin": "Male", "tanggal_lahir": "1993-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1959 2 {"umur": 49, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_958", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-16", "jenis_kelamin": "Female", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1960 2 {"umur": 57, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_959", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-02", "jenis_kelamin": "Female", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1961 2 {"umur": 64, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_960", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-04", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1962 2 {"umur": 32, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_961", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-06", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1963 2 {"umur": 58, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_962", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-15", "jenis_kelamin": "Female", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1964 2 {"umur": 37, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_963", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-06", "jenis_kelamin": "Male", "tanggal_lahir": "1963-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1965 2 {"umur": 56, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_964", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-18", "jenis_kelamin": "Male", "tanggal_lahir": "1990-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1966 2 {"umur": 56, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_965", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-01", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1967 2 {"umur": 51, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_966", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-11", "jenis_kelamin": "Male", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1968 2 {"umur": 58, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_967", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-19", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1969 2 {"umur": 30, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_968", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-13", "jenis_kelamin": "Female", "tanggal_lahir": "1981-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1970 2 {"umur": 56, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_969", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-29", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1971 2 {"umur": 54, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_970", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-06-09", "jenis_kelamin": "Male", "tanggal_lahir": "1974-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1972 2 {"umur": 69, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_971", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-03", "jenis_kelamin": "Male", "tanggal_lahir": "1984-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1973 2 {"umur": 61, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_972", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-06", "jenis_kelamin": "Male", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1974 2 {"umur": 33, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_973", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-28", "jenis_kelamin": "Female", "tanggal_lahir": "1995-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1975 2 {"umur": 61, "tempat_tes": "Hospital_10", "nama_pasien": "Patient_974", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-29", "jenis_kelamin": "Female", "tanggal_lahir": "1964-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1976 2 {"umur": 67, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_975", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-15", "jenis_kelamin": "Male", "tanggal_lahir": "1965-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1977 2 {"umur": 42, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_976", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-29", "jenis_kelamin": "Female", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1978 2 {"umur": 46, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_977", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-16", "jenis_kelamin": "Female", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1979 2 {"umur": 45, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_978", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-19", "jenis_kelamin": "Male", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1980 2 {"umur": 46, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_979", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-21", "jenis_kelamin": "Female", "tanggal_lahir": "1989-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1981 2 {"umur": 65, "tempat_tes": "Hospital_2", "nama_pasien": "Patient_980", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-16", "jenis_kelamin": "Female", "tanggal_lahir": "1985-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1982 2 {"umur": 69, "tempat_tes": "Hospital_1", "nama_pasien": "Patient_981", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-12-12", "jenis_kelamin": "Female", "tanggal_lahir": "1983-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1983 2 {"umur": 30, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_982", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-15", "jenis_kelamin": "Female", "tanggal_lahir": "1959-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1984 2 {"umur": 33, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_983", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-11", "jenis_kelamin": "Female", "tanggal_lahir": "1955-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1985 2 {"umur": 69, "tempat_tes": "Hospital_6", "nama_pasien": "Patient_984", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-24", "jenis_kelamin": "Male", "tanggal_lahir": "1957-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1986 2 {"umur": 35, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_985", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-23", "jenis_kelamin": "Female", "tanggal_lahir": "1982-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1987 2 {"umur": 60, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_986", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-11-25", "jenis_kelamin": "Female", "tanggal_lahir": "1979-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1988 2 {"umur": 32, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_987", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-17", "jenis_kelamin": "Female", "tanggal_lahir": "1978-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1989 2 {"umur": 57, "tempat_tes": "Hospital_9", "nama_pasien": "Patient_988", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-10-25", "jenis_kelamin": "Female", "tanggal_lahir": "1971-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1990 2 {"umur": 60, "tempat_tes": "Hospital_8", "nama_pasien": "Patient_989", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-26", "jenis_kelamin": "Male", "tanggal_lahir": "1975-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1991 2 {"umur": 62, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_990", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-08", "jenis_kelamin": "Male", "tanggal_lahir": "1958-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1992 2 {"umur": 68, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_991", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-03-28", "jenis_kelamin": "Male", "tanggal_lahir": "1970-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1993 2 {"umur": 48, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_992", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-29", "jenis_kelamin": "Male", "tanggal_lahir": "1994-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1994 2 {"umur": 62, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_993", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-08", "jenis_kelamin": "Female", "tanggal_lahir": "1987-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1995 2 {"umur": 65, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_994", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-27", "jenis_kelamin": "Male", "tanggal_lahir": "1976-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1996 2 {"umur": 60, "tempat_tes": "Hospital_5", "nama_pasien": "Patient_995", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-05-23", "jenis_kelamin": "Male", "tanggal_lahir": "1980-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1997 2 {"umur": 70, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_996", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2025-01-13", "jenis_kelamin": "Female", "tanggal_lahir": "1972-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1998 2 {"umur": 56, "tempat_tes": "Hospital_3", "nama_pasien": "Patient_997", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-07-05", "jenis_kelamin": "Male", "tanggal_lahir": "1956-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +1999 2 {"umur": 32, "tempat_tes": "Hospital_7", "nama_pasien": "Patient_998", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-02-21", "jenis_kelamin": "Female", "tanggal_lahir": "1960-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +2000 2 {"umur": 48, "tempat_tes": "Hospital_4", "nama_pasien": "Patient_999", "record_data": ["diseases/records/2/example1.wav", "diseases/records/2/example2.wav"], "tanggal_tes": "2024-08-01", "jenis_kelamin": "Male", "tanggal_lahir": "1986-01-28"} 2025-01-28 14:54:16 2025-01-28 14:54:16 +2001 1 {"jenis": "Tes Ganti", "durasi": "121", "record": "Tes Ganti", "signals": "Tes Ganti", "annotations": "Tes Ganti", "tanggal_tes": "2025-01-28T22:09", "file_detak_jantung": "diseases/records/1/file-detak-jantung-1738077133.mp3"} 2025-01-28 15:10:39 2025-01-28 15:12:13 +\. + + +-- +-- Name: disease_records_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.disease_records_id_seq', 2014, true); + + +-- +-- Data for Name: diseases; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.diseases (id, name, deskripsi, visibilitas, schema, cover_page, created_at, updated_at) FROM stdin; +1 Arrhythmia A condition where the heart beats with an irregular or abnormal rhythm. publik {"columns": [{"name": "record", "type": "string", "is_visible": true}, {"name": "annotations", "type": "string", "is_visible": true}, {"name": "jenis", "type": "string", "is_visible": true}, {"name": "signals", "type": "string", "is_visible": true}, {"name": "durasi", "type": "decimal", "is_visible": true}, {"name": "tanggal_tes", "type": "datetime", "is_visible": true}, {"name": "file_detak_jantung", "type": "file", "format": "audio"}]} diseases/covers/disease-1-cover.jpg 2025-01-28 14:54:14 2025-01-28 14:54:14 +2 Myocardial A condition related to heart muscle injury or damage. publik {"columns": [{"name": "nama_pasien", "type": "string", "is_visible": true}, {"name": "umur", "type": "integer", "is_visible": true}, {"name": "jenis_kelamin", "type": "string", "is_visible": true}, {"name": "tanggal_lahir", "type": "date", "is_visible": true}, {"name": "tempat_tes", "type": "string", "is_visible": true}, {"name": "tanggal_tes", "type": "datetime", "is_visible": true}, {"name": "record_data", "type": "file", "format": "audio", "multiple": 1}]} diseases/covers/disease-2-cover.jpg 2025-01-28 14:54:14 2025-01-28 14:54:14 +5 Hipertensi Ini merupakan dataset Hipertensi publik {"columns": [{"name": "nama", "type": "string", "is_visible": "1"}, {"name": "tekanan_darah", "type": "integer", "is_visible": "1"}, {"name": "bukti_tekanan", "type": "file", "format": "image", "multiple": "0", "is_visible": "1"}, {"name": "tanggal", "type": "date", "is_visible": "1"}]} diseases/covers/disease-5-cover.jpg 2025-01-30 04:00:01 2025-02-08 12:29:45 +\. + + +-- +-- Name: diseases_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.diseases_id_seq', 11, true); + + +-- +-- Data for Name: failed_jobs; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.failed_jobs (id, uuid, connection, queue, payload, exception, failed_at) FROM stdin; +\. + + +-- +-- Name: failed_jobs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.failed_jobs_id_seq', 1, false); + + +-- +-- Data for Name: logs; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.logs (id, user_id, action, model, model_id, changes, description, "timestamp", is_success, created_at, updated_at) FROM stdin; +1 1 create User 2 {"name":"Tes Operator","email":"tesoperator@gmail.com","role":"operator","approval_status":"approved","institution":null,"gender":null,"phone_number":null,"updated_at":"2025-01-28T15:08:03.000000Z","created_at":"2025-01-28T15:08:03.000000Z","id":2,"managed_diseases":{"disease_id":1,"name":"Arrhythmia","pivot":{"user_id":2,"disease_id":1}}} Created user: Tes Operator 2025-01-28 15:08:04 t 2025-01-28 15:08:04 2025-01-28 15:08:04 +2 2 create DiseaseRecord 2001 {"disease_id":"1","data":{"record":"Tes Input","annotations":"Tes Input","jenis":"Tes Input","signals":"Tes Input","durasi":"121","tanggal_tes":"2025-01-28T22:09","file_detak_jantung":"diseases\\/records\\/1\\/file-detak-jantung-1738077039.mp3"},"updated_at":"2025-01-28T15:10:39.000000Z","created_at":"2025-01-28T15:10:39.000000Z","id":2001,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/1\\/records\\/2001\\/export"} Created disease record for disease ID: 1 2025-01-28 15:10:40 t 2025-01-28 15:10:40 2025-01-28 15:10:40 +3 2 delete DiseaseRecord 3 {"disease_id":1,"data_fields":["jenis","durasi","record","signals","annotations","tanggal_tes","file_detak_jantung"],"file_count":0} Deleted disease record ID: 3 2025-01-28 15:10:54 t 2025-01-28 15:10:54 2025-01-28 15:10:54 +4 2 edit DiseaseRecord 2001 {"old":{"id":2001,"disease_id":1,"data":{"jenis":"Tes Input","durasi":"121","record":"Tes Input","signals":"Tes Input","annotations":"Tes Input","tanggal_tes":"2025-01-28T22:09","file_detak_jantung":"diseases\\/records\\/1\\/file-detak-jantung-1738077039.mp3"},"created_at":"2025-01-28T15:10:39.000000Z","updated_at":"2025-01-28T15:10:39.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/1\\/records\\/2001\\/export"},"new":{"id":2001,"disease_id":1,"data":{"jenis":"Tes Ganti","durasi":"121","record":"Tes Ganti","signals":"Tes Ganti","annotations":"Tes Ganti","tanggal_tes":"2025-01-28T22:09","file_detak_jantung":"diseases\\/records\\/1\\/file-detak-jantung-1738077133.mp3"},"created_at":"2025-01-28T15:10:39.000000Z","updated_at":"2025-01-28T15:12:13.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/1\\/records\\/2001\\/export"},"changed_fields":["record","annotations","jenis","signals","durasi","tanggal_tes","file_detak_jantung"]} Updated disease record ID: 2001 2025-01-28 15:12:13 t 2025-01-28 15:12:13 2025-01-28 15:12:13 +5 1 edit User 3 {"old":{"approval_status":"pending"},"new":{"approval_status":"approved"},"changed_fields":["approval_status"]} Updated user: Tes Peneliti 2025-01-28 15:14:36 t 2025-01-28 15:14:36 2025-01-28 15:14:36 +6 1 create Disease 3 {"name":"Tes Tambah","deskripsi":"Tes Tambah","visibilitas":"privat","schema":{"columns":[{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"},{"name":"teks","type":"text","is_visible":"1"},{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-3-cover.jpeg","updated_at":"2025-01-28T15:16:39.000000Z","created_at":"2025-01-28T15:16:39.000000Z","id":3,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-3-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/3\\/export"} Created disease: Tes Tambah 2025-01-28 15:16:40 t 2025-01-28 15:16:40 2025-01-28 15:16:40 +7 1 create User 4 {"name":"Operator Dua","email":"operator2@gmail.com","role":"operator","approval_status":"approved","institution":null,"gender":null,"phone_number":null,"updated_at":"2025-01-28T15:17:48.000000Z","created_at":"2025-01-28T15:17:48.000000Z","id":4,"managed_diseases":{"disease_id":3,"name":"Tes Tambah","pivot":{"user_id":4,"disease_id":3}}} Created user: Operator Dua 2025-01-28 15:17:48 t 2025-01-28 15:17:48 2025-01-28 15:17:48 +8 1 edit Disease 3 {"old":{"name":"Tes Tambah","deskripsi":"Tes Tambah","visibilitas":"privat"},"new":{"name":"Ubah Tes Tambah","deskripsi":"Ubah Tes Tambah","visibilitas":"privat"},"changed_fields":["diseaseId","name","deskripsi"]} Updated disease: Ubah Tes Tambah 2025-01-28 15:18:17 t 2025-01-28 15:18:17 2025-01-28 15:18:17 +13 1 edit Disease 3 {"old":{"name":"Ubah Tes Tambah","deskripsi":"Ubah Tes Tambah","visibilitas":"privat"},"new":{"name":"Ubah Tes Tambah","deskripsi":"Ubah Tes Tambah","visibilitas":"publik"},"changed_fields":["diseaseId","visibilitas"]} Updated disease: Ubah Tes Tambah 2025-01-28 15:24:19 t 2025-01-28 15:24:19 2025-01-28 15:24:19 +14 1 edit Disease 3 {"old":{"name":"Ubah Tes Tambah","deskripsi":"Ubah Tes Tambah","visibilitas":"publik"},"new":{"name":"Ubah Tes Tambah","deskripsi":"Ubah Tes Tambah","visibilitas":"privat"},"changed_fields":["diseaseId","visibilitas"]} Updated disease: Ubah Tes Tambah 2025-01-28 15:25:24 t 2025-01-28 15:25:24 2025-01-28 15:25:24 +15 1 delete Disease 3 {"name":"Ubah Tes Tambah","had_cover_page":true,"schema_columns_count":5} Deleted disease: Ubah Tes Tambah 2025-01-28 15:25:57 t 2025-01-28 15:25:57 2025-01-28 15:25:57 +16 1 create Disease 4 {"name":"Tes Tambah","deskripsi":"Tes privat","visibilitas":"privat","schema":{"columns":[{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"},{"name":"teks","type":"text","is_visible":"1"},{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-4-cover.jpeg","updated_at":"2025-01-28T15:28:33.000000Z","created_at":"2025-01-28T15:28:33.000000Z","id":4,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-4-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/export"} Created disease: Tes Tambah 2025-01-28 15:28:33 t 2025-01-28 15:28:33 2025-01-28 15:28:33 +17 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Dua 2025-01-28 15:28:47 t 2025-01-28 15:28:47 2025-01-28 15:28:47 +19 1 create Disease 5 {"name":"Hipertensi","deskripsi":"Ini merupakan dataset Hipertensi","visibilitas":"publik","schema":{"columns":[{"name":"nama","type":"string","is_visible":"1"},{"name":"tekanan_darah","type":"integer","is_visible":"1"},{"name":"bukti_tekanan","type":"file","format":"image","multiple":"0","is_visible":"1"},{"name":"tanggal","type":"date","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-5-cover.jpg","updated_at":"2025-01-30T04:00:01.000000Z","created_at":"2025-01-30T04:00:01.000000Z","id":5,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-5-cover.jpg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/5\\/export"} Created disease: Hipertensi 2025-01-30 04:00:01 t 2025-01-30 04:00:01 2025-01-30 04:00:01 +20 1 create User 5 {"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","role":"operator","approval_status":"approved","institution":null,"gender":null,"phone_number":null,"updated_at":"2025-01-30T04:01:56.000000Z","created_at":"2025-01-30T04:01:56.000000Z","id":5,"managed_diseases":{"disease_id":5,"name":"Hipertensi","pivot":{"user_id":5,"disease_id":5}}} Created user: Operator Hipertensi 2025-01-30 04:01:56 t 2025-01-30 04:01:56 2025-01-30 04:01:56 +21 1 edit Disease 5 {"old":{"name":"Hipertensi","deskripsi":"Ini merupakan dataset Hipertensi","visibilitas":"publik"},"new":{"name":"Hipertensi","deskripsi":"Ini merupakan dataset Hipertensi","visibilitas":"privat"},"changed_fields":["diseaseId","visibilitas"]} Updated disease: Hipertensi 2025-01-30 04:05:40 t 2025-01-30 04:05:40 2025-01-30 04:05:40 +22 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Dua 2025-02-05 00:37:52 t 2025-02-05 00:37:52 2025-02-05 00:37:52 +23 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Dua 2025-02-05 00:38:17 t 2025-02-05 00:38:17 2025-02-05 00:38:17 +24 1 edit User 5 {"old":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"new":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Hipertensi 2025-02-05 00:38:22 t 2025-02-05 00:38:22 2025-02-05 00:38:22 +25 1 edit User 5 {"old":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"new":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Hipertensi 2025-02-05 00:38:28 t 2025-02-05 00:38:28 2025-02-05 00:38:28 +26 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Dua 2025-02-05 00:38:35 t 2025-02-05 00:38:35 2025-02-05 00:38:35 +27 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["password","disease_id"]} Updated user: Operator Dua 2025-02-05 00:41:00 t 2025-02-05 00:41:00 2025-02-05 00:41:00 +28 1 edit User 4 {"old":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"new":{"name":"Operator Dua","email":"operator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Dua 2025-02-05 00:41:07 t 2025-02-05 00:41:07 2025-02-05 00:41:07 +29 1 edit User 1 {"old":{"name":"Admin User","email":"admin@gmail.com","approval_status":"approved"},"new":{"name":"Admin User","email":"admin@gmail.com","approval_status":"approved"},"changed_fields":[]} Updated user: Admin User 2025-02-05 00:41:54 t 2025-02-05 00:41:54 2025-02-05 00:41:54 +30 1 edit User 2 {"old":{"name":"Tes Operator","email":"tesoperator@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator","email":"tesoperator@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator 2025-02-05 00:43:29 t 2025-02-05 00:43:29 2025-02-05 00:43:29 +31 1 edit User 6 {"old":{"approval_status":"pending"},"new":{"approval_status":"approved"},"changed_fields":["approval_status"]} Updated user: Tes Peneliti Dua 2025-02-05 01:20:30 t 2025-02-05 01:20:30 2025-02-05 01:20:30 +32 1 delete User 4 {"name":"Operator Dua","email":"operator2@gmail.com","role":"operator"} Deleted user: Operator Dua 2025-02-05 01:20:49 t 2025-02-05 01:20:49 2025-02-05 01:20:49 +33 1 edit User 6 {"old":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"approved"},"new":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"approved"},"changed_fields":[]} Updated user: Tes Peneliti Dua 2025-02-05 01:20:57 t 2025-02-05 01:20:57 2025-02-05 01:20:57 +34 1 create Disease 6 {"name":"Tes Penyakit","deskripsi":"Deskripsi","visibilitas":"publik","schema":{"columns":[{"name":"nama","type":"text","is_visible":"1"},{"name":"tanggal","type":"date","is_visible":"1"},{"name":"waktu","type":"time","is_visible":"1"},{"name":"gambar_satu","type":"file","format":"image","multiple":"1","is_visible":"1"},{"name":"gambar_dua","type":"file","format":"image","multiple":"0","is_visible":"1"},{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"},{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"},{"name":"zip_satu","type":"file","format":"compressed-document","multiple":"1","is_visible":"1"},{"name":"zip_dua","type":"file","format":"compressed-document","multiple":"0","is_visible":"1"},{"name":"teks_satu","type":"file","format":"text-document","multiple":"1","is_visible":"1"},{"name":"teks_dua","type":"file","format":"text-document","multiple":"0","is_visible":"1"},{"name":"csv_satu","type":"file","format":"spreadsheet","multiple":"1","is_visible":"1"},{"name":"csv_dua","type":"file","format":"spreadsheet","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-6-cover.jpg","updated_at":"2025-02-05T01:25:56.000000Z","created_at":"2025-02-05T01:25:56.000000Z","id":6,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-6-cover.jpg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/6\\/export"} Created disease: Tes Penyakit 2025-02-05 01:25:56 t 2025-02-05 01:25:56 2025-02-05 01:25:56 +35 1 edit Disease 6 {"old":{"name":"Tes Penyakit","deskripsi":"Deskripsi","visibilitas":"publik"},"new":{"name":"Tes Penyakit","deskripsi":"Deskripsi","visibilitas":"privat"},"changed_fields":["diseaseId","visibilitas"]} Updated disease: Tes Penyakit 2025-02-05 01:26:32 t 2025-02-05 01:26:32 2025-02-05 01:26:32 +36 1 create User 7 {"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","role":"operator","approval_status":"approved","institution":null,"gender":null,"phone_number":null,"updated_at":"2025-02-05T01:27:12.000000Z","created_at":"2025-02-05T01:27:12.000000Z","id":7,"managed_diseases":{"disease_id":6,"name":"Tes Penyakit","pivot":{"user_id":7,"disease_id":6}}} Created user: Tes Operator Dua 2025-02-05 01:27:12 t 2025-02-05 01:27:12 2025-02-05 01:27:12 +37 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-05 01:27:24 t 2025-02-05 01:27:24 2025-02-05 01:27:24 +38 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-05 01:39:52 t 2025-02-05 01:39:52 2025-02-05 01:39:52 +39 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-05 01:39:58 t 2025-02-05 01:39:58 2025-02-05 01:39:58 +40 7 create DiseaseRecord 2005 {"disease_id":"6","data":{"nama":"aaaa","tanggal":"2025-02-05","waktu":"08:42","gambar_satu":["diseases\\/records\\/6\\/gambar-satu-1-1738720875.jpg","diseases\\/records\\/6\\/gambar-satu-2-1738720875.jpg","diseases\\/records\\/6\\/gambar-satu-3-1738720875.jpg"],"gambar_dua":"diseases\\/records\\/6\\/gambar-dua-1738720875.jpg","audio_satu":["diseases\\/records\\/6\\/audio-satu-1-1738720875.mp3"],"audio_dua":"diseases\\/records\\/6\\/audio-dua-1738720875.mp3","video_satu":["diseases\\/records\\/6\\/video-satu-1-1738720875.mp4","diseases\\/records\\/6\\/video-satu-2-1738720875.mp4"],"video_dua":"diseases\\/records\\/6\\/video-dua-1738720875.mp4","zip_satu":["diseases\\/records\\/6\\/zip-satu-1-1738720875.zip","diseases\\/records\\/6\\/zip-satu-2-1738720875.zip","diseases\\/records\\/6\\/zip-satu-3-1738720875.zip"],"zip_dua":"diseases\\/records\\/6\\/zip-dua-1738720875.zip","teks_satu":["diseases\\/records\\/6\\/teks-satu-1-1738720875.txt","diseases\\/records\\/6\\/teks-satu-2-1738720875.txt"],"teks_dua":"diseases\\/records\\/6\\/teks-dua-1738720875.txt","csv_satu":["diseases\\/records\\/6\\/csv-satu-1-1738720875.csv"],"csv_dua":"diseases\\/records\\/6\\/csv-dua-1738720875.csv"},"updated_at":"2025-02-05T02:01:15.000000Z","created_at":"2025-02-05T02:01:15.000000Z","id":2005,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/6\\/records\\/2005\\/export"} Created disease record for disease ID: 6 2025-02-05 02:01:15 t 2025-02-05 02:01:15 2025-02-05 02:01:15 +41 7 create DiseaseRecord 2006 {"disease_id":"6","data":{"nama":"jjn","tanggal":"2025-02-05","waktu":"00:55","gambar_satu":["diseases\\/records\\/6\\/gambar-satu-1-1738735287.jpg","diseases\\/records\\/6\\/gambar-satu-2-1738735287.jpg","diseases\\/records\\/6\\/gambar-satu-3-1738735287.jpg"],"gambar_dua":"diseases\\/records\\/6\\/gambar-dua-1738735287.jpg","audio_satu":["diseases\\/records\\/6\\/audio-satu-1-1738735287.mp3","diseases\\/records\\/6\\/audio-satu-2-1738735287.mp3"],"audio_dua":"diseases\\/records\\/6\\/audio-dua-1738735287.mp3","video_satu":["diseases\\/records\\/6\\/video-satu-1-1738735287.mp4","diseases\\/records\\/6\\/video-satu-2-1738735287.mp4"],"video_dua":"diseases\\/records\\/6\\/video-dua-1738735287.mp4","zip_satu":["diseases\\/records\\/6\\/zip-satu-1-1738735287.zip","diseases\\/records\\/6\\/zip-satu-2-1738735287.zip","diseases\\/records\\/6\\/zip-satu-3-1738735287.zip"],"zip_dua":"diseases\\/records\\/6\\/zip-dua-1738735287.zip","teks_satu":["diseases\\/records\\/6\\/teks-satu-1-1738735287.txt","diseases\\/records\\/6\\/teks-satu-2-1738735287.txt"],"teks_dua":"diseases\\/records\\/6\\/teks-dua-1738735287.txt","csv_satu":["diseases\\/records\\/6\\/csv-satu-1-1738735287.csv"],"csv_dua":"diseases\\/records\\/6\\/csv-dua-1738735287.csv"},"updated_at":"2025-02-05T06:01:27.000000Z","created_at":"2025-02-05T06:01:27.000000Z","id":2006,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/6\\/records\\/2006\\/export"} Created disease record for disease ID: 6 2025-02-05 06:01:27 t 2025-02-05 06:01:27 2025-02-05 06:01:27 +42 7 delete DiseaseRecord 2006 {"disease_id":6,"data_fields":["nama","waktu","csv_dua","tanggal","zip_dua","csv_satu","teks_dua","zip_satu","audio_dua","teks_satu","video_dua","audio_satu","gambar_dua","video_satu","gambar_satu"],"file_count":0} Deleted disease record ID: 2006 2025-02-05 06:03:19 t 2025-02-05 06:03:19 2025-02-05 06:03:19 +76 7 delete DiseaseRecord 2011 {"disease_id":4,"data_fields":["teks","audio_dua","video_dua","audio_satu","video_satu"],"file_count":0} Deleted disease record ID: 2011 2025-02-08 01:42:30 t 2025-02-08 01:42:30 2025-02-08 01:42:30 +43 7 edit DiseaseRecord 2005 {"old":{"id":2005,"disease_id":6,"data":{"nama":"aaaa","waktu":"08:42","csv_dua":"diseases\\/records\\/6\\/csv-dua-1738720875.csv","tanggal":"2025-02-05","zip_dua":"diseases\\/records\\/6\\/zip-dua-1738720875.zip","csv_satu":["diseases\\/records\\/6\\/csv-satu-1-1738720875.csv"],"teks_dua":"diseases\\/records\\/6\\/teks-dua-1738720875.txt","zip_satu":["diseases\\/records\\/6\\/zip-satu-1-1738720875.zip","diseases\\/records\\/6\\/zip-satu-2-1738720875.zip","diseases\\/records\\/6\\/zip-satu-3-1738720875.zip"],"audio_dua":"diseases\\/records\\/6\\/audio-dua-1738720875.mp3","teks_satu":["diseases\\/records\\/6\\/teks-satu-1-1738720875.txt","diseases\\/records\\/6\\/teks-satu-2-1738720875.txt"],"video_dua":"diseases\\/records\\/6\\/video-dua-1738720875.mp4","audio_satu":["diseases\\/records\\/6\\/audio-satu-1-1738720875.mp3"],"gambar_dua":"diseases\\/records\\/6\\/gambar-dua-1738720875.jpg","video_satu":["diseases\\/records\\/6\\/video-satu-1-1738720875.mp4","diseases\\/records\\/6\\/video-satu-2-1738720875.mp4"],"gambar_satu":["diseases\\/records\\/6\\/gambar-satu-1-1738720875.jpg","diseases\\/records\\/6\\/gambar-satu-2-1738720875.jpg","diseases\\/records\\/6\\/gambar-satu-3-1738720875.jpg"]},"created_at":"2025-02-05T02:01:15.000000Z","updated_at":"2025-02-05T02:01:15.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/6\\/records\\/2005\\/export"},"new":{"id":2005,"disease_id":6,"data":{"nama":"aaaa","waktu":"08:42","csv_dua":"diseases\\/records\\/6\\/csv-dua-1738736663.csv","tanggal":"2025-02-05","zip_dua":"diseases\\/records\\/6\\/zip-dua-1738736663.zip","csv_satu":["diseases\\/records\\/6\\/csv-satu-1-1738736663.csv"],"teks_dua":"diseases\\/records\\/6\\/teks-dua-1738736663.txt","zip_satu":["diseases\\/records\\/6\\/zip-satu-1-1738736663.zip"],"audio_dua":"diseases\\/records\\/6\\/audio-dua-1738736663.mp3","teks_satu":["diseases\\/records\\/6\\/teks-satu-1-1738736663.txt"],"video_dua":"diseases\\/records\\/6\\/video-dua-1738736663.mp4","audio_satu":["diseases\\/records\\/6\\/audio-satu-1-1738736663.mp3"],"gambar_dua":"diseases\\/records\\/6\\/gambar-dua-1738736663.jpeg","video_satu":["diseases\\/records\\/6\\/video-satu-1-1738736663.mp4"],"gambar_satu":["diseases\\/records\\/6\\/gambar-satu-1-1738736663.jpeg"]},"created_at":"2025-02-05T02:01:15.000000Z","updated_at":"2025-02-05T06:24:23.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/6\\/records\\/2005\\/export"},"changed_fields":["nama","tanggal","waktu","gambar_satu","gambar_dua","audio_satu","audio_dua","video_satu","video_dua","zip_satu","zip_dua","teks_satu","teks_dua","csv_satu","csv_dua"]} Updated disease record ID: 2005 2025-02-05 06:24:24 t 2025-02-05 06:24:24 2025-02-05 06:24:24 +44 1 delete Disease 6 {"name":"Tes Penyakit","had_cover_page":true,"schema_columns_count":15} Deleted disease: Tes Penyakit 2025-02-05 06:26:33 t 2025-02-05 06:26:33 2025-02-05 06:26:33 +45 1 create Disease 7 {"name":"Tes No File","deskripsi":"Deskripsi","visibilitas":"publik","schema":{"columns":[{"name":"string","type":"string","is_visible":"1"},{"name":"text","type":"text","is_visible":"1"},{"name":"integer","type":"integer","is_visible":"1"},{"name":"float","type":"float","is_visible":"1"},{"name":"datetime","type":"datetime","is_visible":"1"},{"name":"date","type":"date","is_visible":"1"},{"name":"time","type":"time","is_visible":"1"},{"name":"boolean","type":"boolean","is_visible":"1"},{"name":"email","type":"email","is_visible":"1"},{"name":"phone","type":"phone","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-7-cover.jpeg","updated_at":"2025-02-05T06:32:45.000000Z","created_at":"2025-02-05T06:32:45.000000Z","id":7,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-7-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/export"} Created disease: Tes No File 2025-02-05 06:32:45 t 2025-02-05 06:32:45 2025-02-05 06:32:45 +46 1 edit Disease 7 {"old":{"name":"Tes No File","deskripsi":"Deskripsi","visibilitas":"publik"},"new":{"name":"Tes No File Ganti","deskripsi":"Deskripsi Ganti","visibilitas":"privat"},"changed_fields":["diseaseId","name","deskripsi","visibilitas"]} Updated disease: Tes No File Ganti 2025-02-05 06:33:04 t 2025-02-05 06:33:04 2025-02-05 06:33:04 +47 1 edit Disease 7 {"old":{"name":"Tes No File Ganti","deskripsi":"Deskripsi Ganti","visibilitas":"privat","cover_page":"diseases\\/covers\\/disease-7-cover.jpeg"},"new":{"name":"Tes No File Ganti","deskripsi":"Deskripsi Ganti","visibilitas":"privat","cover_page":"diseases\\/covers\\/disease-7-cover.jpg"},"changed_fields":["diseaseId","cover_page"]} Updated disease: Tes No File Ganti 2025-02-05 06:33:22 t 2025-02-05 06:33:22 2025-02-05 06:33:22 +48 1 edit Disease 7 {"old":{"name":"Tes No File Ganti","deskripsi":"Deskripsi Ganti","visibilitas":"privat","cover_page":"diseases\\/covers\\/disease-7-cover.jpg"},"new":{"name":"Tes No File Ganti","deskripsi":"Deskripsi Ganti","visibilitas":"privat","cover_page":"diseases\\/covers\\/disease-7-cover.jpeg"},"changed_fields":["diseaseId","cover_page"]} Updated disease: Tes No File Ganti 2025-02-05 06:36:52 t 2025-02-05 06:36:52 2025-02-05 06:36:52 +49 1 edit User 6 {"old":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"approved"},"new":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"pending"},"changed_fields":["approval_status"]} Updated user: Tes Peneliti Dua 2025-02-05 06:38:16 t 2025-02-05 06:38:16 2025-02-05 06:38:16 +50 1 edit User 6 {"old":{"approval_status":"pending"},"new":{"approval_status":"rejected"},"changed_fields":["approval_status"]} Updated user: Tes Peneliti Dua 2025-02-05 06:38:22 t 2025-02-05 06:38:22 2025-02-05 06:38:22 +51 1 edit User 6 {"old":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"rejected"},"new":{"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","institution":"Telkom University","gender":"male","phone_number":"6282285348919","approval_status":"approved"},"changed_fields":["approval_status"]} Updated user: Tes Peneliti Dua 2025-02-05 06:39:15 t 2025-02-05 06:39:15 2025-02-05 06:39:15 +52 1 create Disease 8 {"name":"Tes All FIle","deskripsi":"Tes","visibilitas":"publik","schema":{"columns":[{"name":"gambar_satu","type":"file","format":"image","multiple":"1","is_visible":"1"},{"name":"gambar_dua","type":"file","format":"image","multiple":"0","is_visible":"1"},{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"},{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"},{"name":"sheet_satu","type":"file","format":"spreadsheet","multiple":"1","is_visible":"1"},{"name":"sheet_dua","type":"file","format":"spreadsheet","multiple":"0","is_visible":"1"},{"name":"compressed_satu","type":"file","format":"compressed-document","multiple":"1","is_visible":"1"},{"name":"compressed_dua","type":"file","format":"compressed-document","multiple":"0","is_visible":"1"},{"name":"docs_satu","type":"file","format":"text-document","multiple":"1","is_visible":"1"},{"name":"docs_dua","type":"file","format":"text-document","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-8-cover.jpg","updated_at":"2025-02-05T06:43:42.000000Z","created_at":"2025-02-05T06:43:42.000000Z","id":8,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-8-cover.jpg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/8\\/export"} Created disease: Tes All FIle 2025-02-05 06:43:43 t 2025-02-05 06:43:43 2025-02-05 06:43:43 +53 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":[]} Updated user: Tes Operator Dua 2025-02-05 06:44:16 t 2025-02-05 06:44:16 2025-02-05 06:44:16 +54 1 edit User 5 {"old":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"new":{"name":"Operator Hipertensi","email":"operatorhipertensi@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Operator Hipertensi 2025-02-05 06:44:22 t 2025-02-05 06:44:22 2025-02-05 06:44:22 +55 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":[]} Updated user: Tes Operator Dua 2025-02-05 06:50:31 t 2025-02-05 06:50:31 2025-02-05 06:50:31 +56 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-05 06:50:47 t 2025-02-05 06:50:47 2025-02-05 06:50:47 +57 7 create DiseaseRecord 2007 {"disease_id":"7","data":{"string":"aas","text":"aa","integer":"2","float":"-0.003","datetime":"2025-02-06T06:41","date":"2025-02-06","time":"18:42","boolean":"1","email":"lutvinovra@gmail.com","phone":"082285348919"},"updated_at":"2025-02-05T23:42:49.000000Z","created_at":"2025-02-05T23:42:49.000000Z","id":2007,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2007\\/export"} Created disease record for disease ID: 7 2025-02-05 23:42:49 t 2025-02-05 23:42:49 2025-02-05 23:42:49 +58 7 create DiseaseRecord 2008 {"disease_id":"7","data":{"string":"aa","text":"aa","integer":"2","float":"-0.003","datetime":"2025-02-06T06:45","date":"2025-02-06","time":"06:45","boolean":"0","email":"lutvinovra@gmail.com","phone":"082285348919"},"updated_at":"2025-02-05T23:46:23.000000Z","created_at":"2025-02-05T23:46:23.000000Z","id":2008,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2008\\/export"} Created disease record for disease ID: 7 2025-02-05 23:46:23 t 2025-02-05 23:46:23 2025-02-05 23:46:23 +59 7 edit DiseaseRecord 2008 {"old":{"id":2008,"disease_id":7,"data":{"date":"2025-02-06","text":"aa","time":"06:45","email":"lutvinovra@gmail.com","float":"-0.003","phone":"082285348919","string":"aa","boolean":"0","integer":"2","datetime":"2025-02-06T06:45"},"created_at":"2025-02-05T23:46:23.000000Z","updated_at":"2025-02-05T23:46:23.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2008\\/export"},"new":{"id":2008,"disease_id":7,"data":{"date":"2025-02-06","text":"aa","time":"06:45","email":"lutvinovra@gmail.com","float":"-0.003","phone":"082285348919","string":"aa","boolean":"1","integer":"2","datetime":"2025-02-06T06:45"},"created_at":"2025-02-05T23:46:23.000000Z","updated_at":"2025-02-05T23:46:33.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2008\\/export"},"changed_fields":["string","text","integer","float","datetime","date","time","boolean","email","phone"]} Updated disease record ID: 2008 2025-02-05 23:46:33 t 2025-02-05 23:46:33 2025-02-05 23:46:33 +60 7 edit DiseaseRecord 2007 {"old":{"id":2007,"disease_id":7,"data":{"date":"2025-02-06","text":"aa","time":"18:42","email":"lutvinovra@gmail.com","float":"-0.003","phone":"082285348919","string":"aas","boolean":"1","integer":"2","datetime":"2025-02-06T06:41"},"created_at":"2025-02-05T23:42:49.000000Z","updated_at":"2025-02-05T23:42:49.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2007\\/export"},"new":{"id":2007,"disease_id":7,"data":{"date":"2025-02-06","text":"aa","time":"19:42","email":"lutvinovra@gmail.com","float":"-0.003","phone":"082285348919","string":"aas","boolean":"0","integer":"2","datetime":"2025-02-06T06:41"},"created_at":"2025-02-05T23:42:49.000000Z","updated_at":"2025-02-05T23:46:48.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/7\\/records\\/2007\\/export"},"changed_fields":["string","text","integer","float","datetime","date","time","boolean","email","phone"]} Updated disease record ID: 2007 2025-02-05 23:46:49 t 2025-02-05 23:46:49 2025-02-05 23:46:49 +61 7 delete DiseaseRecord 2007 {"disease_id":7,"data_fields":["date","text","time","email","float","phone","string","boolean","integer","datetime"],"file_count":0} Deleted disease record ID: 2007 2025-02-05 23:46:53 t 2025-02-05 23:46:53 2025-02-05 23:46:53 +62 1 delete Disease 8 {"name":"Tes All FIle","had_cover_page":true,"schema_columns_count":12} Deleted disease: Tes All FIle 2025-02-05 23:48:02 t 2025-02-05 23:48:02 2025-02-05 23:48:02 +63 1 delete Disease 7 {"name":"Tes No File Ganti","had_cover_page":true,"schema_columns_count":10} Deleted disease: Tes No File Ganti 2025-02-05 23:48:14 t 2025-02-05 23:48:14 2025-02-05 23:48:14 +64 1 create Disease 9 {"name":"Tes All FIle","deskripsi":"Tes File","visibilitas":"publik","schema":{"columns":[{"name":"gambar_satu","type":"file","format":"image","multiple":"1","is_visible":"1"},{"name":"gambar_dua","type":"file","format":"image","multiple":"0","is_visible":"1"},{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"},{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"},{"name":"sheet_satu","type":"file","format":"spreadsheet","multiple":"1","is_visible":"1"},{"name":"sheet_dua","type":"file","format":"spreadsheet","multiple":"0","is_visible":"1"},{"name":"compressed_satu","type":"file","format":"compressed-document","multiple":"1","is_visible":"1"},{"name":"compressed_dua","type":"file","format":"compressed-document","multiple":"0","is_visible":"1"},{"name":"docs_satu","type":"file","format":"text-document","multiple":"1","is_visible":"1"},{"name":"docs_dua","type":"file","format":"text-document","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-9-cover.jpeg","updated_at":"2025-02-05T23:53:19.000000Z","created_at":"2025-02-05T23:53:19.000000Z","id":9,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-9-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/9\\/export"} Created disease: Tes All FIle 2025-02-05 23:53:19 t 2025-02-05 23:53:19 2025-02-05 23:53:19 +65 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-05 23:54:19 t 2025-02-05 23:54:19 2025-02-05 23:54:19 +66 7 create DiseaseRecord 2009 {"disease_id":"9","data":{"gambar_satu":["diseases\\/records\\/9\\/gambar-satu-1-1738800117.jpg","diseases\\/records\\/9\\/gambar-satu-2-1738800117.jpg","diseases\\/records\\/9\\/gambar-satu-3-1738800117.jpg"],"gambar_dua":"diseases\\/records\\/9\\/gambar-dua-1738800117.jpg","audio_satu":["diseases\\/records\\/9\\/audio-satu-1-1738800117.mp3","diseases\\/records\\/9\\/audio-satu-2-1738800117.mp3"],"audio_dua":"diseases\\/records\\/9\\/audio-dua-1738800117.mp3","video_satu":["diseases\\/records\\/9\\/video-satu-1-1738800117.mp4","diseases\\/records\\/9\\/video-satu-2-1738800117.mp4"],"video_dua":"diseases\\/records\\/9\\/video-dua-1738800117.mp4","sheet_satu":["diseases\\/records\\/9\\/sheet-satu-1-1738800117.csv","diseases\\/records\\/9\\/sheet-satu-2-1738800117.csv","diseases\\/records\\/9\\/sheet-satu-3-1738800117.csv"],"sheet_dua":"diseases\\/records\\/9\\/sheet-dua-1738800117.csv","compressed_satu":["diseases\\/records\\/9\\/compressed-satu-1-1738800117.zip","diseases\\/records\\/9\\/compressed-satu-2-1738800117.zip","diseases\\/records\\/9\\/compressed-satu-3-1738800117.zip"],"compressed_dua":"diseases\\/records\\/9\\/compressed-dua-1738800117.zip","docs_satu":["diseases\\/records\\/9\\/docs-satu-1-1738800117.txt"],"docs_dua":"diseases\\/records\\/9\\/docs-dua-1738800117.txt"},"updated_at":"2025-02-06T00:01:57.000000Z","created_at":"2025-02-06T00:01:57.000000Z","id":2009,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/9\\/records\\/2009\\/export"} Created disease record for disease ID: 9 2025-02-06 00:01:58 t 2025-02-06 00:01:58 2025-02-06 00:01:58 +67 7 create DiseaseRecord 2010 {"disease_id":"9","data":{"gambar_satu":["diseases\\/records\\/9\\/gambar-satu-1-1738800812.jpeg"],"gambar_dua":"diseases\\/records\\/9\\/gambar-dua-1738800812.jpg","audio_satu":["diseases\\/records\\/9\\/audio-satu-1-1738800812.mp3"],"audio_dua":"diseases\\/records\\/9\\/audio-dua-1738800812.mp3","video_satu":["diseases\\/records\\/9\\/video-satu-1-1738800812.mp4","diseases\\/records\\/9\\/video-satu-2-1738800812.mp4"],"video_dua":"diseases\\/records\\/9\\/video-dua-1738800812.mp4","sheet_satu":["diseases\\/records\\/9\\/sheet-satu-1-1738800812.csv","diseases\\/records\\/9\\/sheet-satu-2-1738800812.csv","diseases\\/records\\/9\\/sheet-satu-3-1738800812.csv"],"sheet_dua":"diseases\\/records\\/9\\/sheet-dua-1738800812.csv","compressed_satu":["diseases\\/records\\/9\\/compressed-satu-1-1738800812.zip"],"compressed_dua":"diseases\\/records\\/9\\/compressed-dua-1738800812.zip","docs_satu":["diseases\\/records\\/9\\/docs-satu-1-1738800812.txt"],"docs_dua":"diseases\\/records\\/9\\/docs-dua-1738800812.txt"},"updated_at":"2025-02-06T00:13:32.000000Z","created_at":"2025-02-06T00:13:32.000000Z","id":2010,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/9\\/records\\/2010\\/export"} Created disease record for disease ID: 9 2025-02-06 00:13:33 t 2025-02-06 00:13:33 2025-02-06 00:13:33 +68 7 edit DiseaseRecord 2009 {"old":{"id":2009,"disease_id":9,"data":{"docs_dua":"diseases\\/records\\/9\\/docs-dua-1738800117.txt","audio_dua":"diseases\\/records\\/9\\/audio-dua-1738800117.mp3","docs_satu":["diseases\\/records\\/9\\/docs-satu-1-1738800117.txt"],"sheet_dua":"diseases\\/records\\/9\\/sheet-dua-1738800117.csv","video_dua":"diseases\\/records\\/9\\/video-dua-1738800117.mp4","audio_satu":["diseases\\/records\\/9\\/audio-satu-1-1738800117.mp3","diseases\\/records\\/9\\/audio-satu-2-1738800117.mp3"],"gambar_dua":"diseases\\/records\\/9\\/gambar-dua-1738800117.jpg","sheet_satu":["diseases\\/records\\/9\\/sheet-satu-1-1738800117.csv","diseases\\/records\\/9\\/sheet-satu-2-1738800117.csv","diseases\\/records\\/9\\/sheet-satu-3-1738800117.csv"],"video_satu":["diseases\\/records\\/9\\/video-satu-1-1738800117.mp4","diseases\\/records\\/9\\/video-satu-2-1738800117.mp4"],"gambar_satu":["diseases\\/records\\/9\\/gambar-satu-1-1738800117.jpg","diseases\\/records\\/9\\/gambar-satu-2-1738800117.jpg","diseases\\/records\\/9\\/gambar-satu-3-1738800117.jpg"],"compressed_dua":"diseases\\/records\\/9\\/compressed-dua-1738800117.zip","compressed_satu":["diseases\\/records\\/9\\/compressed-satu-1-1738800117.zip","diseases\\/records\\/9\\/compressed-satu-2-1738800117.zip","diseases\\/records\\/9\\/compressed-satu-3-1738800117.zip"]},"created_at":"2025-02-06T00:01:57.000000Z","updated_at":"2025-02-06T00:01:57.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/9\\/records\\/2009\\/export"},"new":{"id":2009,"disease_id":9,"data":{"docs_dua":"diseases\\/records\\/9\\/docs-dua-1738800897.txt","audio_dua":"diseases\\/records\\/9\\/audio-dua-1738800897.mp3","docs_satu":["diseases\\/records\\/9\\/docs-satu-1-1738800897.txt"],"sheet_dua":"diseases\\/records\\/9\\/sheet-dua-1738800897.csv","video_dua":"diseases\\/records\\/9\\/video-dua-1738800897.mp4","audio_satu":["diseases\\/records\\/9\\/audio-satu-1-1738800897.mp3"],"gambar_dua":"diseases\\/records\\/9\\/gambar-dua-1738800897.jpeg","sheet_satu":["diseases\\/records\\/9\\/sheet-satu-1-1738800897.csv"],"video_satu":["diseases\\/records\\/9\\/video-satu-1-1738800897.mp4"],"gambar_satu":["diseases\\/records\\/9\\/gambar-satu-1-1738800897.jpg"],"compressed_dua":"diseases\\/records\\/9\\/compressed-dua-1738800897.zip","compressed_satu":["diseases\\/records\\/9\\/compressed-satu-1-1738800897.zip"]},"created_at":"2025-02-06T00:01:57.000000Z","updated_at":"2025-02-06T00:14:57.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/9\\/records\\/2009\\/export"},"changed_fields":["gambar_satu","gambar_dua","audio_satu","audio_dua","video_satu","video_dua","sheet_satu","sheet_dua","compressed_satu","compressed_dua","docs_satu","docs_dua"]} Updated disease record ID: 2009 2025-02-06 00:14:57 t 2025-02-06 00:14:57 2025-02-06 00:14:57 +69 1 delete Disease 9 {"name":"Tes All FIle","had_cover_page":true,"schema_columns_count":12} Deleted disease: Tes All FIle 2025-02-08 01:12:08 t 2025-02-08 01:12:08 2025-02-08 01:12:08 +70 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-08 01:12:44 t 2025-02-08 01:12:44 2025-02-08 01:12:44 +71 7 edit DiseaseRecord 2004 {"old":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738078191.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738078191.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738078191.mp3","diseases\\/records\\/4\\/audio-satu-2-1738078191.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738078191.mp4","diseases\\/records\\/4\\/video-satu-2-1738078191.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-01-28T15:29:51.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"new":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738977476.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738977476.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738977476.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738977476.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-02-08T01:17:56.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"changed_fields":["audio_satu","audio_dua","teks","video_satu","video_dua"]} Updated disease record ID: 2004 2025-02-08 01:17:57 t 2025-02-08 01:17:57 2025-02-08 01:17:57 +72 7 create DiseaseRecord 2011 {"disease_id":"4","data":{"audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738977530.mp3","diseases\\/records\\/4\\/audio-satu-2-1738977530.mp3"],"audio_dua":"diseases\\/records\\/4\\/audio-dua-1738977530.mp3","teks":"huhuh","video_satu":["diseases\\/records\\/4\\/video-satu-1-1738977530.mp4","diseases\\/records\\/4\\/video-satu-2-1738977530.mp4"],"video_dua":"diseases\\/records\\/4\\/video-dua-1738977530.mp4"},"updated_at":"2025-02-08T01:18:50.000000Z","created_at":"2025-02-08T01:18:50.000000Z","id":2011,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2011\\/export"} Created disease record for disease ID: 4 2025-02-08 01:18:50 t 2025-02-08 01:18:50 2025-02-08 01:18:50 +73 7 create DiseaseRecord 2012 {"disease_id":"4","data":{"audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738978224.mp3"],"audio_dua":"diseases\\/records\\/4\\/audio-dua-1738978224.mp3","teks":"asa","video_satu":["diseases\\/records\\/4\\/video-satu-1-1738978224.mp4"],"video_dua":"diseases\\/records\\/4\\/video-dua-1738978224.mp4"},"updated_at":"2025-02-08T01:30:24.000000Z","created_at":"2025-02-08T01:30:24.000000Z","id":2012,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2012\\/export"} Created disease record for disease ID: 4 2025-02-08 01:30:24 t 2025-02-08 01:30:24 2025-02-08 01:30:24 +74 7 edit DiseaseRecord 2004 {"old":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738977476.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738977476.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738977476.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738977476.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-02-08T01:17:56.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"new":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738978387.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738978387.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738978387.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738978387.mp4","diseases\\/records\\/4\\/video-satu-2-1738978387.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-02-08T01:33:07.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"changed_fields":["audio_satu","audio_dua","teks","video_satu","video_dua"]} Updated disease record ID: 2004 2025-02-08 01:33:07 t 2025-02-08 01:33:07 2025-02-08 01:33:07 +75 7 edit DiseaseRecord 2004 {"old":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738978387.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738978387.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738978387.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738978387.mp4","diseases\\/records\\/4\\/video-satu-2-1738978387.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-02-08T01:33:07.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"new":{"id":2004,"disease_id":4,"data":{"teks":"data","audio_dua":"diseases\\/records\\/4\\/audio-dua-1738978899.mp3","video_dua":"diseases\\/records\\/4\\/video-dua-1738978899.mp4","audio_satu":["diseases\\/records\\/4\\/audio-satu-1-1738978899.mp3"],"video_satu":["diseases\\/records\\/4\\/video-satu-1-1738978899.mp4"]},"created_at":"2025-01-28T15:29:51.000000Z","updated_at":"2025-02-08T01:41:39.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/4\\/records\\/2004\\/export"},"changed_fields":["audio_satu","audio_dua","teks","video_satu","video_dua"]} Updated disease record ID: 2004 2025-02-08 01:41:39 t 2025-02-08 01:41:39 2025-02-08 01:41:39 +77 1 delete Disease 4 {"name":"Tes Tambah","had_cover_page":true,"schema_columns_count":5} Deleted disease: Tes Tambah 2025-02-08 01:43:08 t 2025-02-08 01:43:08 2025-02-08 01:43:08 +78 1 create Disease 10 {"name":"Tes FIle","deskripsi":"aaaa","visibilitas":"publik","schema":{"columns":[{"name":"video_satu","type":"file","format":"video","multiple":"1","is_visible":"1"},{"name":"video_dua","type":"file","format":"video","multiple":"0","is_visible":"1"},{"name":"audio_satu","type":"file","format":"audio","multiple":"1","is_visible":"1"},{"name":"audio_dua","type":"file","format":"audio","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-10-cover.jpeg","updated_at":"2025-02-08T02:02:51.000000Z","created_at":"2025-02-08T02:02:51.000000Z","id":10,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-10-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/10\\/export"} Created disease: Tes FIle 2025-02-08 02:02:51 t 2025-02-08 02:02:51 2025-02-08 02:02:51 +79 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":[]} Updated user: Tes Operator Dua 2025-02-08 02:02:58 t 2025-02-08 02:02:58 2025-02-08 02:02:58 +80 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-08 02:03:08 t 2025-02-08 02:03:08 2025-02-08 02:03:08 +81 7 create DiseaseRecord 2013 {"disease_id":"10","data":{"video_satu":["diseases\\/records\\/10\\/video-satu-1-1738981391.mp4"],"video_dua":"diseases\\/records\\/10\\/video-dua-1738981391.mp4","audio_satu":["diseases\\/records\\/10\\/audio-satu-1-1738981391.mp3"],"audio_dua":"diseases\\/records\\/10\\/audio-dua-1738981391.mp3"},"updated_at":"2025-02-08T02:23:11.000000Z","created_at":"2025-02-08T02:23:11.000000Z","id":2013,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/10\\/records\\/2013\\/export"} Created disease record for disease ID: 10 2025-02-08 02:23:12 t 2025-02-08 02:23:12 2025-02-08 02:23:12 +82 7 create DiseaseRecord 2014 {"disease_id":"10","data":{"video_satu":["diseases\\/records\\/10\\/video-satu-1-1739017527.mp4","diseases\\/records\\/10\\/video-satu-2-1739017527.mp4"],"video_dua":"diseases\\/records\\/10\\/video-dua-1739017527.mp4","audio_satu":["diseases\\/records\\/10\\/audio-satu-1-1739017527.mp3","diseases\\/records\\/10\\/audio-satu-2-1739017527.mp3"],"audio_dua":"diseases\\/records\\/10\\/audio-dua-1739017527.mp3"},"updated_at":"2025-02-08T12:25:27.000000Z","created_at":"2025-02-08T12:25:27.000000Z","id":2014,"export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/10\\/records\\/2014\\/export"} Created disease record for disease ID: 10 2025-02-08 12:25:28 t 2025-02-08 12:25:28 2025-02-08 12:25:28 +83 7 edit DiseaseRecord 2014 {"old":{"id":2014,"disease_id":10,"data":{"audio_dua":"diseases\\/records\\/10\\/audio-dua-1739017527.mp3","video_dua":"diseases\\/records\\/10\\/video-dua-1739017527.mp4","audio_satu":["diseases\\/records\\/10\\/audio-satu-1-1739017527.mp3","diseases\\/records\\/10\\/audio-satu-2-1739017527.mp3"],"video_satu":["diseases\\/records\\/10\\/video-satu-1-1739017527.mp4","diseases\\/records\\/10\\/video-satu-2-1739017527.mp4"]},"created_at":"2025-02-08T12:25:27.000000Z","updated_at":"2025-02-08T12:25:27.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/10\\/records\\/2014\\/export"},"new":{"id":2014,"disease_id":10,"data":{"audio_dua":"diseases\\/records\\/10\\/audio-dua-1739017605.mp3","video_dua":"diseases\\/records\\/10\\/video-dua-1739017605.mp4","audio_satu":["diseases\\/records\\/10\\/audio-satu-1-1739017605.mp3"],"video_satu":["diseases\\/records\\/10\\/video-satu-1-1739017605.mp4"]},"created_at":"2025-02-08T12:25:27.000000Z","updated_at":"2025-02-08T12:26:45.000000Z","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/10\\/records\\/2014\\/export"},"changed_fields":["video_satu","video_dua","audio_satu","audio_dua"]} Updated disease record ID: 2014 2025-02-08 12:26:45 t 2025-02-08 12:26:45 2025-02-08 12:26:45 +84 7 delete DiseaseRecord 2014 {"disease_id":10,"data_fields":["audio_dua","video_dua","audio_satu","video_satu"],"file_count":0} Deleted disease record ID: 2014 2025-02-08 12:27:16 t 2025-02-08 12:27:16 2025-02-08 12:27:16 +85 1 delete User 6 {"name":"Tes Peneliti Dua","email":"tespeneliti2@gmail.com","role":"peneliti"} Deleted user: Tes Peneliti Dua 2025-02-08 12:28:05 t 2025-02-08 12:28:05 2025-02-08 12:28:05 +86 1 edit User 7 {"old":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"new":{"name":"Tes Operator Dua","email":"tesoperator2@gmail.com","approval_status":"approved"},"changed_fields":["disease_id"]} Updated user: Tes Operator Dua 2025-02-08 12:28:14 t 2025-02-08 12:28:14 2025-02-08 12:28:14 +87 1 delete Disease 10 {"name":"Tes FIle","had_cover_page":true,"schema_columns_count":4} Deleted disease: Tes FIle 2025-02-08 12:28:19 t 2025-02-08 12:28:19 2025-02-08 12:28:19 +88 1 create Disease 11 {"name":"aa","deskripsi":"aaa","visibilitas":"publik","schema":{"columns":[{"name":"aaa","type":"file","format":"image","multiple":"0","is_visible":"1"}]},"cover_page":"diseases\\/covers\\/disease-11-cover.jpeg","updated_at":"2025-02-08T12:29:09.000000Z","created_at":"2025-02-08T12:29:09.000000Z","id":11,"cover_page_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/storage\\/public\\/diseases\\/covers\\/disease-11-cover.jpeg","export_url":"https:\\/\\/healthcareapi.humicprototyping.com\\/api\\/diseases\\/11\\/export"} Created disease: aa 2025-02-08 12:29:09 t 2025-02-08 12:29:09 2025-02-08 12:29:09 +89 1 delete Disease 11 {"name":"aa","had_cover_page":true,"schema_columns_count":1} Deleted disease: aa 2025-02-08 12:29:37 t 2025-02-08 12:29:37 2025-02-08 12:29:37 +90 1 edit Disease 5 {"old":{"name":"Hipertensi","deskripsi":"Ini merupakan dataset Hipertensi","visibilitas":"privat"},"new":{"name":"Hipertensi","deskripsi":"Ini merupakan dataset Hipertensi","visibilitas":"publik"},"changed_fields":["diseaseId","visibilitas"]} Updated disease: Hipertensi 2025-02-08 12:29:45 t 2025-02-08 12:29:45 2025-02-08 12:29:45 +\. + + +-- +-- Name: logs_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.logs_id_seq', 90, true); + + +-- +-- Data for Name: migrations; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.migrations (id, migration, batch) FROM stdin; +1 2014_10_12_000000_create_users_table 1 +2 2014_10_12_100000_create_password_reset_tokens_table 1 +3 2019_08_19_000000_create_failed_jobs_table 1 +4 2019_12_14_000001_create_personal_access_tokens_table 1 +5 2024_10_22_062900_create_api_keys_table 1 +6 2024_10_31_021621_create_diseases_table 1 +7 2024_10_31_025127_create_disease_operator_table 1 +8 2024_11_11_131248_create_disease_records_table 1 +9 2024_11_12_094947_add_is_primary_admin_to_users_table 1 +10 2024_11_20_054955_create_logs_table 1 +11 2024_11_20_133119_create_comments_table 1 +\. + + +-- +-- Name: migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.migrations_id_seq', 11, true); + + +-- +-- Data for Name: password_reset_tokens; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.password_reset_tokens (email, token, created_at) FROM stdin; +\. + + +-- +-- Data for Name: personal_access_tokens; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.personal_access_tokens (id, tokenable_type, tokenable_id, name, token, abilities, last_used_at, expires_at, created_at, updated_at) FROM stdin; +18 App\\Models\\User 3 MyApp 70bfb8ff448b9064dca80ee392b562f4318eb23da45ebb7b12af533e00c770ec ["*"] 2025-01-28 15:36:57 \N 2025-01-28 15:33:54 2025-01-28 15:36:57 +33 App\\Models\\User 1 MyApp 67b1a3eee5c65ffafc1022a4455b31669e22e12ca6dd90d295c358118a0582e5 ["*"] 2025-02-05 01:39:59 \N 2025-02-05 01:19:49 2025-02-05 01:39:59 +19 App\\Models\\User 1 MyApp 322067f9d6be6ef30335b54a197fc9eefdf85bffb66bd56b81357a0f1b9bbe83 ["*"] 2025-01-29 10:22:55 \N 2025-01-29 10:22:49 2025-01-29 10:22:55 +1 App\\Models\\User 1 MyApp 3a120670de44123d4fba512cb9c9b52184020fe89ecce897b0cb47d87090a28f ["*"] 2025-01-28 14:59:32 \N 2025-01-28 14:59:10 2025-01-28 14:59:32 +20 App\\Models\\User 1 MyApp b4b2f74ab381d064a660537cd304ca2326a3c35192918a4fa3870f7d6efe6757 ["*"] 2025-01-30 04:01:57 \N 2025-01-30 03:55:12 2025-01-30 04:01:57 +26 App\\Models\\User 3 MyApp 0ad9bedbb5ae185010ae74360ba990643570e2047d93b744dc35dd2bb22d7176 ["*"] 2025-02-03 10:43:46 \N 2025-02-03 10:42:44 2025-02-03 10:43:46 +8 App\\Models\\User 1 MyApp 567fd892500287a9d7ee1b8bd083fe532c5e9c71cd268e6cae9372cadffd6a48 ["*"] 2025-01-28 15:24:19 \N 2025-01-28 15:23:55 2025-01-28 15:24:19 +21 App\\Models\\User 5 MyApp 6ebb5695cd853e2b2a59051836c6da4721b8b525fbe4d79cddb53b8eb9da0ac0 ["*"] 2025-01-30 04:02:37 \N 2025-01-30 04:02:34 2025-01-30 04:02:37 +5 App\\Models\\User 1 MyApp 3116f56e5f5c277e96afdf24a5409fc2c7ec71e918fe49e2828174af85f0b70c ["*"] 2025-01-28 15:18:18 \N 2025-01-28 15:14:21 2025-01-28 15:18:18 +2 App\\Models\\User 1 MyApp 5dc131d60b153e9cff444d7a4d408f05538fecd518879db4133dbfe3ca12ec66 ["*"] 2025-01-28 15:08:06 \N 2025-01-28 15:07:05 2025-01-28 15:08:06 +6 App\\Models\\User 3 MyApp 9b1ac17ca29cade4f67bb9fcf2d67ebadfed52ab2e5defe63218d541c76f8e57 ["*"] 2025-01-28 15:18:29 \N 2025-01-28 15:18:28 2025-01-28 15:18:29 +28 App\\Models\\User 1 MyApp 5fdd51340776b0f47fe42b5554cb46eab520c9f6e37275429261feb2e4b3421f ["*"] 2025-02-05 01:14:17 \N 2025-02-05 00:36:39 2025-02-05 01:14:17 +9 App\\Models\\User 3 MyApp 02042899d869dce8261481de9f673cfd14f2dc7b477b6e177eeb90076d2f8454 ["*"] 2025-01-28 15:24:59 \N 2025-01-28 15:24:29 2025-01-28 15:24:59 +27 App\\Models\\User 1 MyApp ae71d4e7c7a6b0b4dba05befedb2804b2b36506b37903e770431257375b82f03 ["*"] 2025-02-05 00:38:38 \N 2025-02-05 00:34:07 2025-02-05 00:38:38 +15 App\\Models\\User 1 MyApp 32831947e83572270e897cc48ee0df74a0863fec25a0de74f9d4c4ed5c0ccfa9 ["*"] 2025-01-28 15:28:51 \N 2025-01-28 15:26:18 2025-01-28 15:28:51 +24 App\\Models\\User 1 MyApp d9364403409404fd8ebf079a963cad921ef02e5b408a367ae946ff3ba587f593 ["*"] 2025-02-03 10:30:15 \N 2025-02-03 10:29:45 2025-02-03 10:30:15 +10 App\\Models\\User 1 MyApp 343c2531a70880ceda00a9154191087179136264445ad5fe93033951d68199d4 ["*"] 2025-01-28 15:25:24 \N 2025-01-28 15:25:10 2025-01-28 15:25:24 +3 App\\Models\\User 2 MyApp 92133421d10756c5f36cb9c8c7af30eeaa36c1ccbd5b389415cea14bfa22abf7 ["*"] 2025-01-28 15:12:32 \N 2025-01-28 15:08:12 2025-01-28 15:12:32 +4 App\\Models\\User 3 MyApp a667a9ffa117054feaaa0c66ddfb40ad5abf2688d407c01bb145ed3ef1b2eb6e ["*"] \N \N 2025-01-28 15:13:59 2025-01-28 15:13:59 +17 App\\Models\\User 1 MyApp a56df4532eb0f09da70d5d6c632c282933cd701cd1fbad4e6b72ba212dba5d06 ["*"] 2025-01-28 15:33:33 \N 2025-01-28 15:32:52 2025-01-28 15:33:33 +16 App\\Models\\User 4 MyApp b8fe37497d511b19e84d48b5a698afee90acfae66b69cb325b9a8869d992a900 ["*"] 2025-01-28 15:32:33 \N 2025-01-28 15:29:01 2025-01-28 15:32:33 +11 App\\Models\\User 3 MyApp 8521f2436f38306435da541c1ddcfdc01aa83bc616fbd975907e2f24eee8f4e5 ["*"] 2025-01-28 15:25:42 \N 2025-01-28 15:25:34 2025-01-28 15:25:42 +7 App\\Models\\User 4 MyApp f21d753b228c3efdf720576c01046f63767364761e75febc890beab8055d9e58 ["*"] 2025-01-28 15:23:07 \N 2025-01-28 15:18:43 2025-01-28 15:23:07 +23 App\\Models\\User 1 MyApp 02ebcab1259e714f20ea36b8a417e558eac2e20cf167fb895747512ccdf80680 ["*"] 2025-01-30 04:05:41 \N 2025-01-30 04:05:27 2025-01-30 04:05:41 +22 App\\Models\\User 3 MyApp 8648d7532745f015de4280c2ce2991c8811dcf11d1713533717b7b8ec9c25039 ["*"] 2025-01-30 04:06:14 \N 2025-01-30 04:04:53 2025-01-30 04:06:14 +12 App\\Models\\User 1 MyApp 69267408e59d5887970d39230feffaa2d76f8a33eb49157088efbb9f5df18c87 ["*"] 2025-01-28 15:25:58 \N 2025-01-28 15:25:49 2025-01-28 15:25:58 +13 App\\Models\\User 4 MyApp 312c97016b6224f9cb7241a3746be6146d32d4b9f9a05f7ad2b37b956cdea3a5 ["*"] \N \N 2025-01-28 15:26:05 2025-01-28 15:26:05 +14 App\\Models\\User 4 MyApp be3b1391b512aa992d2852e13558f79316d3f46cfdf3a218a4994b8cbc838a8f ["*"] \N \N 2025-01-28 15:26:07 2025-01-28 15:26:07 +29 App\\Models\\User 3 MyApp 711f2b9c333fde3eef364227406a5622eb57fe8a472b3a6de4a01115dcff4483 ["*"] 2025-02-05 00:39:43 \N 2025-02-05 00:38:51 2025-02-05 00:39:43 +39 App\\Models\\User 1 MyApp 16380e3b19890f15e25e0d4e68d2dc43eaeff2ad95d3c2a6ca5e0b6290c1d963 ["*"] 2025-02-05 06:44:24 \N 2025-02-05 06:37:58 2025-02-05 06:44:24 +35 App\\Models\\User 1 MyApp 6ac48c9755f84c39d61048fa5db2420e7f383c68a1e2becd196c5728d06ec4d9 ["*"] 2025-02-05 06:36:52 \N 2025-02-05 06:26:12 2025-02-05 06:36:52 +36 App\\Models\\User 7 MyApp a645ba348a560055bac1ce3544b41000b2684d4afb12df90f34db41782d32d38 ["*"] \N \N 2025-02-05 06:37:32 2025-02-05 06:37:32 +30 App\\Models\\User 1 MyApp de01ed81a94dddfdba6465185f1d0f09e0fd3ec276a0a8cda9e923ffab19259f ["*"] 2025-02-05 00:48:37 \N 2025-02-05 00:40:25 2025-02-05 00:48:37 +25 App\\Models\\User 2 MyApp 381d509a20f51c56ad64ef4c12d436ddded2ff5324e2d27f9033c5c5372e5be1 ["*"] 2025-02-03 10:35:37 \N 2025-02-03 10:35:10 2025-02-03 10:35:37 +31 App\\Models\\User 1 MyApp f9167467e222f986f5228debb20022ef60d2ac6afaf9dd3718764361207fff21 ["*"] 2025-02-05 01:17:55 \N 2025-02-05 01:04:21 2025-02-05 01:17:55 +32 App\\Models\\User 6 MyApp ae7580f00cba6475921f04f7043d6f776ca42e37f20985ce718db1afb495ef5b ["*"] \N \N 2025-02-05 01:19:30 2025-02-05 01:19:30 +34 App\\Models\\User 7 MyApp 12160bd4ff9b0d01243f96f0b455df35815310fd89935b86ac49cac7999a7b36 ["*"] 2025-02-05 06:24:28 \N 2025-02-05 01:40:14 2025-02-05 06:24:28 +37 App\\Models\\User 7 MyApp 2b634157f28cc518664b8cd9020c9d76beba28124be034fe5c837ec687c0b675 ["*"] \N \N 2025-02-05 06:37:38 2025-02-05 06:37:38 +38 App\\Models\\User 7 MyApp 7ca977bfa4bf8d9105e6d81304d3e2c188b667d657295f824f035ff8e5b4a5ba ["*"] \N \N 2025-02-05 06:37:39 2025-02-05 06:37:39 +40 App\\Models\\User 6 MyApp 29e5ab99acb8a7261bd38ec0bd3fbe11580a6f129e1d53c64a2570d6514c9b19 ["*"] 2025-02-05 06:45:05 \N 2025-02-05 06:44:46 2025-02-05 06:45:05 +41 App\\Models\\User 7 MyApp 5a452e19cf8c8015c51a9dd65c04ec49d0cb6254c058b60950ad1e13515299d7 ["*"] \N \N 2025-02-05 06:45:22 2025-02-05 06:45:22 +44 App\\Models\\User 1 MyApp 5b2409cc8a61878db9b845309c32ebadaf7224bc2761d0da98a358453a0f4d26 ["*"] 2025-02-05 06:50:48 \N 2025-02-05 06:46:14 2025-02-05 06:50:48 +42 App\\Models\\User 7 MyApp e872d12b4d60ed19423833d4e256d15203aca6a038a293570090cb575a3a978c ["*"] \N \N 2025-02-05 06:45:38 2025-02-05 06:45:38 +43 App\\Models\\User 7 MyApp 429e3052e0f48f98c7a88c8c1749bbc640a40ee3800d4001133cf1c9ce2578cd ["*"] \N \N 2025-02-05 06:45:40 2025-02-05 06:45:40 +45 App\\Models\\User 7 MyApp 1ecd6ea432724648d8363d85371bba657cd84ce7db3ba989b02b01fd1c34f7ad ["*"] 2025-02-05 14:20:47 \N 2025-02-05 06:51:25 2025-02-05 14:20:47 +62 App\\Models\\User 1 MyApp 289def26a3884b0fb216bb0ac6cb5deada3a436dede7fcfb92ea8b7e19f3c28f ["*"] 2025-02-08 02:03:10 \N 2025-02-08 01:59:03 2025-02-08 02:03:10 +46 App\\Models\\User 1 MyApp dce8d3d1395475ec707596a8477d3621c3aa56cfe3e152c9353f528118f145d0 ["*"] 2025-02-05 22:01:11 \N 2025-02-05 22:01:09 2025-02-05 22:01:11 +53 App\\Models\\User 1 MyApp d286719b069c36eae63809e1251f56767890456c13fe6e428286043f7dcd7be0 ["*"] 2025-02-08 01:06:54 \N 2025-02-08 01:00:52 2025-02-08 01:06:54 +48 App\\Models\\User 3 MyApp 4594e24d6e110fe5cc408184ba03b161966eae5703bafb84d7a3f7f83546d3a4 ["*"] 2025-02-05 23:47:36 \N 2025-02-05 23:47:26 2025-02-05 23:47:36 +56 App\\Models\\User 7 MyApp ea80d497818e1934693a0448f62671fb1bd5687a4831f1b48e675104243b352b ["*"] 2025-02-08 01:43:19 \N 2025-02-08 01:13:14 2025-02-08 01:43:19 +60 App\\Models\\User 7 MyApp 99e2183ea226b7aec2c45b6f98e98f9a8d55aba598e949795e3b4bf839727e60 ["*"] \N \N 2025-02-08 01:44:29 2025-02-08 01:44:29 +69 App\\Models\\User 3 MyApp f5cb2438b622579c0f1f9048592105107b028d374b736d04bde25daf3ed245e2 ["*"] 2025-02-08 12:29:56 \N 2025-02-08 12:29:56 2025-02-08 12:29:56 +57 App\\Models\\User 7 MyApp 41ee0dce9e0eb0a16916963e523da6a37ae4cb9844a212937151e33a667e3579 ["*"] 2025-02-08 01:53:25 \N 2025-02-08 01:17:11 2025-02-08 01:53:25 +54 App\\Models\\User 7 MyApp ce7617ac92170323eeec952d6beee4c0ecebdc2d3f59d65dd123da0ed7243a3d ["*"] 2025-02-08 01:11:23 \N 2025-02-08 01:07:14 2025-02-08 01:11:23 +61 App\\Models\\User 3 MyApp 8e8324d9891a56a13a8ed6389b890f98fc5d0111f3ab1a53b7db9f30c4769194 ["*"] 2025-02-08 01:55:32 \N 2025-02-08 01:54:13 2025-02-08 01:55:32 +74 App\\Models\\User 1 MyApp f59c458fc6fc9d6333ff5634c386b9d99aeabb63bd4e0b366e02320351025e52 ["*"] 2025-03-03 04:44:14 \N 2025-03-03 04:43:17 2025-03-03 04:44:14 +70 App\\Models\\User 1 MyApp 6a5ef6997f4c19c05cde874bbc55aed1db6a27ca1e6dd7a862d8a37db6d30c9d ["*"] 2025-02-08 12:31:36 \N 2025-02-08 12:30:07 2025-02-08 12:31:36 +49 App\\Models\\User 1 MyApp eed9cb60f5ae32823a2394e23b96b78a0bab7d7b354cbf14a5c243fb7b6c72d0 ["*"] 2025-02-05 23:53:23 \N 2025-02-05 23:47:56 2025-02-05 23:53:23 +50 App\\Models\\User 7 MyApp 6e2e92a765248bf0126c6dab6d88b5eee2d5979e89b8665c5372afbde7507b0e ["*"] \N \N 2025-02-05 23:53:37 2025-02-05 23:53:37 +65 App\\Models\\User 7 MyApp cce0b44c2e0e6203a1a0bc0f4effe7a905757342697542b576baacc43e9415b3 ["*"] 2025-02-08 12:27:16 \N 2025-02-08 12:24:37 2025-02-08 12:27:16 +52 App\\Models\\User 7 MyApp 7faeb9b5e4d85c8cf6fef13a28e26af2bd14accb8e1fe4c70f7d55064187840c ["*"] 2025-02-06 00:15:13 \N 2025-02-05 23:54:36 2025-02-06 00:15:13 +71 App\\Models\\User 1 MyApp 530d458783eea502557d72e697121389972ef76ede4a4bb9c9a3b2c794f459c3 ["*"] 2025-02-11 04:19:50 \N 2025-02-11 04:19:46 2025-02-11 04:19:50 +55 App\\Models\\User 1 MyApp 8347db8710a502fcf80e890a3bd77563e9cd73de297827ee5d4573573fbe238b ["*"] 2025-02-08 01:12:46 \N 2025-02-08 01:11:41 2025-02-08 01:12:46 +51 App\\Models\\User 1 MyApp e2361f99ddbea05a83b46c301e54b6c005099c2a4d93b632d32f862253bd6359 ["*"] 2025-02-05 23:54:19 \N 2025-02-05 23:53:58 2025-02-05 23:54:19 +47 App\\Models\\User 7 MyApp 887528ce5d3afa64a2cb72cf01104ab6aa84d759f65a1e4658557855f68eeca9 ["*"] 2025-02-05 23:47:15 \N 2025-02-05 22:01:37 2025-02-05 23:47:15 +66 App\\Models\\User 1 MyApp ec43c309a296d06c2f48937a76f6ed9e792212c9666add163153564b66c5c1b5 ["*"] 2025-02-08 12:29:12 \N 2025-02-08 12:27:36 2025-02-08 12:29:12 +58 App\\Models\\User 7 MyApp b4e9dae1079b440b241ce24b89d9752f7b5014a2649fe25966461b98a099f27f ["*"] 2025-02-08 01:42:30 \N 2025-02-08 01:18:13 2025-02-08 01:42:30 +72 App\\Models\\User 8 MyApp 6507cf4d7b7c66dc1834d40d3a7bd5bd799b444c406a5f2a1a02e4b3ac69ed19 ["*"] \N \N 2025-02-20 07:14:19 2025-02-20 07:14:19 +67 App\\Models\\User 3 MyApp 76fb6cefe5416acb30659842eb38ef57bae55a86b9a3518eb974adbf520ab544 ["*"] 2025-02-08 12:29:23 \N 2025-02-08 12:29:21 2025-02-08 12:29:23 +63 App\\Models\\User 7 MyApp 217fb5518d7a9ba9b5750853b74d9fa2c6552ad1e0c3712f1df1b0e6e8f1b802 ["*"] 2025-02-08 02:32:46 \N 2025-02-08 02:03:22 2025-02-08 02:32:46 +59 App\\Models\\User 1 MyApp 30d01a110ca31cdc35d3e29ef332a8a2f244fb05f552b32b00d32c390f86a80e ["*"] 2025-02-08 01:43:09 \N 2025-02-08 01:43:02 2025-02-08 01:43:09 +73 App\\Models\\User 8 MyApp 5f2cf34f5f167ef5aaaa3aa3b80638fac9be15c878855d6e57db20aa84e02965 ["*"] \N \N 2025-02-20 07:14:26 2025-02-20 07:14:26 +64 App\\Models\\User 3 MyApp e6551bd11a5b726764015469578a2d0bb10a3fefc5829c95859f9e39eacf0a87 ["*"] 2025-02-08 12:23:59 \N 2025-02-08 12:23:47 2025-02-08 12:23:59 +68 App\\Models\\User 1 MyApp 2bab350d3713bc53a9d34f49d1116edae8981aeead55b53008e8fc76d835051b ["*"] 2025-02-08 12:29:45 \N 2025-02-08 12:29:33 2025-02-08 12:29:45 +75 App\\Models\\User 1 MyApp fe3bfcde0fa230fa458349ebf7ff9cad177916bf3e145fc97fe6f2c31640ba72 ["*"] 2025-07-09 15:04:39 \N 2025-07-09 15:04:15 2025-07-09 15:04:39 +\. + + +-- +-- Name: personal_access_tokens_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.personal_access_tokens_id_seq', 75, true); + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: humicpro_healthcare_user +-- + +COPY public.users (id, name, email, password, institution, gender, phone_number, tujuan_permohonan, role, approval_status, remember_token, created_at, updated_at, is_primary_admin) FROM stdin; +1 Admin User admin@gmail.com $2y$10$7o7vEhCQHSs5R5UqN0mpIORCTUpbgWwNF4AOeOXVNQ5rRdSMQPwhi \N prefer not to say \N \N admin approved \N 2025-01-28 14:53:43 2025-01-28 14:53:43 f +2 Tes Operator tesoperator@gmail.com $2y$10$w9AYtnQEuWa6CniCNKYwbOPd.NYoJswZfsEPzHIlV1yDhqI1T7A1q \N \N \N \N operator approved \N 2025-01-28 15:08:03 2025-01-28 15:08:03 f +3 Tes Peneliti tespeneliti@gmail.com $2y$10$xiuwG8FfigPeK4EjSYZVresg8J8WXcvMpid56G7JUy8dv7necEEvm Telkom University male 6288888888 Tes Peneliti peneliti approved \N 2025-01-28 15:13:43 2025-01-28 15:14:35 f +5 Operator Hipertensi operatorhipertensi@gmail.com $2y$10$xlVAviJLWcYJKU87nTprFe17mJzUd4T8fRj5z8dyJCvlr8l.hC6xy \N \N \N \N operator approved \N 2025-01-30 04:01:56 2025-01-30 04:01:56 f +7 Tes Operator Dua tesoperator2@gmail.com $2y$10$3RG0Pct0RM9kkzBzkutgU.wKJ1XfkCrIxUX1NYMMWrVdWTdOC0wbG \N \N \N \N operator approved \N 2025-02-05 01:27:12 2025-02-05 01:27:12 f +8 testing testing@gmail.com $2y$10$x7cfe6E/Tad9Up/BWVO8jOqEbhtnY6UUQgs8xYnlzTLmU55aZY04a Test male 628212345678 Test peneliti pending \N 2025-02-20 07:14:08 2025-02-20 07:14:08 f +\. + + +-- +-- Name: users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: humicpro_healthcare_user +-- + +SELECT pg_catalog.setval('public.users_id_seq', 8, true); + + +-- +-- Name: api_keys api_keys_key_unique; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.api_keys + ADD CONSTRAINT api_keys_key_unique UNIQUE (key); + + +-- +-- Name: api_keys api_keys_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.api_keys + ADD CONSTRAINT api_keys_pkey PRIMARY KEY (id); + + +-- +-- Name: comments comments_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT comments_pkey PRIMARY KEY (id); + + +-- +-- Name: disease_operator disease_operator_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_operator + ADD CONSTRAINT disease_operator_pkey PRIMARY KEY (id); + + +-- +-- Name: disease_records disease_records_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_records + ADD CONSTRAINT disease_records_pkey PRIMARY KEY (id); + + +-- +-- Name: diseases diseases_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.diseases + ADD CONSTRAINT diseases_pkey PRIMARY KEY (id); + + +-- +-- Name: failed_jobs failed_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.failed_jobs + ADD CONSTRAINT failed_jobs_pkey PRIMARY KEY (id); + + +-- +-- Name: failed_jobs failed_jobs_uuid_unique; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.failed_jobs + ADD CONSTRAINT failed_jobs_uuid_unique UNIQUE (uuid); + + +-- +-- Name: logs logs_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.logs + ADD CONSTRAINT logs_pkey PRIMARY KEY (id); + + +-- +-- Name: migrations migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.migrations + ADD CONSTRAINT migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: password_reset_tokens password_reset_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.password_reset_tokens + ADD CONSTRAINT password_reset_tokens_pkey PRIMARY KEY (email); + + +-- +-- Name: personal_access_tokens personal_access_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.personal_access_tokens + ADD CONSTRAINT personal_access_tokens_pkey PRIMARY KEY (id); + + +-- +-- Name: personal_access_tokens personal_access_tokens_token_unique; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.personal_access_tokens + ADD CONSTRAINT personal_access_tokens_token_unique UNIQUE (token); + + +-- +-- Name: users users_email_unique; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_unique UNIQUE (email); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: personal_access_tokens_tokenable_type_tokenable_id_index; Type: INDEX; Schema: public; Owner: humicpro_healthcare_user +-- + +CREATE INDEX personal_access_tokens_tokenable_type_tokenable_id_index ON public.personal_access_tokens USING btree (tokenable_type, tokenable_id); + + +-- +-- Name: comments comments_disease_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT comments_disease_id_foreign FOREIGN KEY (disease_id) REFERENCES public.diseases(id) ON DELETE CASCADE; + + +-- +-- Name: comments comments_parent_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT comments_parent_id_foreign FOREIGN KEY (parent_id) REFERENCES public.comments(id) ON DELETE SET NULL; + + +-- +-- Name: comments comments_user_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT comments_user_id_foreign FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + + +-- +-- Name: disease_operator disease_operator_disease_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_operator + ADD CONSTRAINT disease_operator_disease_id_foreign FOREIGN KEY (disease_id) REFERENCES public.diseases(id) ON DELETE CASCADE; + + +-- +-- Name: disease_operator disease_operator_user_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_operator + ADD CONSTRAINT disease_operator_user_id_foreign FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + + +-- +-- Name: disease_records disease_records_disease_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.disease_records + ADD CONSTRAINT disease_records_disease_id_foreign FOREIGN KEY (disease_id) REFERENCES public.diseases(id) ON DELETE CASCADE; + + +-- +-- Name: logs logs_user_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: humicpro_healthcare_user +-- + +ALTER TABLE ONLY public.logs + ADD CONSTRAINT logs_user_id_foreign FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + + +-- +-- Name: TABLE api_keys; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.api_keys TO humicpro_healthcare; + + +-- +-- Name: TABLE comments; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.comments TO humicpro_healthcare; + + +-- +-- Name: TABLE disease_operator; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.disease_operator TO humicpro_healthcare; + + +-- +-- Name: TABLE disease_records; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.disease_records TO humicpro_healthcare; + + +-- +-- Name: TABLE diseases; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.diseases TO humicpro_healthcare; + + +-- +-- Name: TABLE failed_jobs; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.failed_jobs TO humicpro_healthcare; + + +-- +-- Name: TABLE logs; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.logs TO humicpro_healthcare; + + +-- +-- Name: TABLE migrations; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.migrations TO humicpro_healthcare; + + +-- +-- Name: TABLE password_reset_tokens; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.password_reset_tokens TO humicpro_healthcare; + + +-- +-- Name: TABLE personal_access_tokens; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.personal_access_tokens TO humicpro_healthcare; + + +-- +-- Name: TABLE users; Type: ACL; Schema: public; Owner: humicpro_healthcare_user +-- + +GRANT ALL ON TABLE public.users TO humicpro_healthcare; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/docker/nginx.Dockerfile b/docker/nginx.Dockerfile new file mode 100644 index 0000000..7ecd5a1 --- /dev/null +++ b/docker/nginx.Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:alpine + +RUN rm /etc/nginx/conf.d/default.conf + +COPY docker/nginx.conf /etc/nginx/conf.d/default.conf diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 0000000..92ed273 --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,37 @@ +server { + listen 80; + listen [::]:80; + server_name _; + + # Nginx will look for files in this directory + root /var/www/html/public; + + # The default file to serve + index index.php index.html; + + charset utf-8; + + # Route all requests to index.php (Laravel's front controller) + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + # Serve static Vite assets directly (cache them for performance) + location ~* \.(jpg|jpeg|gif|png|css|js|ico|webp|svg|woff|woff2|ttf|eot)$ { + expires max; + access_log off; + } + + # Pass PHP scripts to the PHP-FPM container + location ~ \.php$ { + fastcgi_pass app:9000; # "app" is the name of the service in docker-compose.yml + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_hide_header X-Powered-By; + } + + # Block access to hidden files (like .env or .git) + location ~ /\.(?!well-known).* { + deny all; + } +} diff --git a/docker/opcache.ini b/docker/opcache.ini new file mode 100644 index 0000000..bb2a2a5 --- /dev/null +++ b/docker/opcache.ini @@ -0,0 +1,8 @@ +[opcache] +opcache.enable=1 +opcache.memory_consumption=256 +opcache.interned_strings_buffer=16 +opcache.max_accelerated_files=20000 +opcache.revalidate_freq=0 +opcache.validate_timestamps=0 +opcache.fast_shutdown=1 diff --git a/docker/postgres.Dockerfile b/docker/postgres.Dockerfile new file mode 100644 index 0000000..1f5266b --- /dev/null +++ b/docker/postgres.Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:15-alpine + +COPY docker/humicpro_healthcare.sql /docker-entrypoint-initdb.d/ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..3a76ed0 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.7.2", + "vite": "^4.0.0" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..eb13aff --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..20b359a --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,27 @@ +# Increase file upload limits +php_value upload_max_filesize 100M +php_value post_max_size 100M +php_value max_execution_time 300 +php_value max_input_time 300 + + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/coba.txt b/public/coba.txt new file mode 100644 index 0000000..7af6bef --- /dev/null +++ b/public/coba.txt @@ -0,0 +1 @@ +coba \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/test.jpg b/public/test.jpg new file mode 100644 index 0000000..2e0a507 Binary files /dev/null and b/public/test.jpg differ diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 0000000..846d350 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..0406510 --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,140 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..663d46c --- /dev/null +++ b/routes/api.php @@ -0,0 +1,131 @@ +group(function () { + + // Admin-only routes for user management + Route::middleware(['checkRole:admin'])->prefix('admin')->group(function () { + Route::get('/dashboard', [AuthController::class, 'adminDashboard'])->name('admin.dashboard'); + + Route::prefix('users')->group(function(){ + Route::get('/', [AdminUserController::class, 'getUsers'])->name('admin.users.index'); + Route::post('/', [AdminUserController::class, 'createUser'])->name('admin.users.create'); + Route::post('/approve/{userId}', [AdminUserController::class, 'approveUser'])->name('admin.users.approve'); + Route::post('/reject/{userId}', [AdminUserController::class, 'rejectUser'])->name('admin.users.reject'); + Route::put('/{userId}', [AdminUserController::class, 'editUser'])->name('admin.users.edit'); + Route::delete('/{userId}', [AdminUserController::class, 'deleteUser'])->name('admin.users.delete'); + Route::get('/{userId}', [AdminUserController::class, 'getUserDetails'])->name('admin.users.show'); + }); + + Route::get('/logs', [LogActionController::class, 'getLogActions'])->name('admin.logs.index'); + }); + + Route::get('users/profile', [AdminUserController::class, 'getUserProfile'])->name('admin.users.show'); + // Disease Route + Route::prefix('diseases')->middleware(['checkDiseaseAccess'])->group(function() { + Route::get('/', [DiseaseController::class, 'getDiseases']); + + // Admin-only routes + Route::middleware(['checkRole:admin'])->group(function() { + Route::get('/stats', [DiseaseController::class, 'getStatistics']); + Route::post('/', [DiseaseController::class, 'createDisease']); + Route::put('/{diseaseId}', [DiseaseController::class, 'editDisease']); + Route::delete('/{diseaseId}', [DiseaseController::class, 'deleteDisease']); + }); + + // Get Disease + Route::get('/{diseaseId}', [DiseaseController::class, 'getDiseaseDetails']); + + // Comment Routes + Route::prefix('{diseaseId}/comments')->group(function () { + Route::get('/', [CommentController::class, 'getComments']); + Route::post('/', [CommentController::class, 'createComment']); + Route::put('/{commentId}', [CommentController::class, 'editComment'])->middleware('checkCommentAuthorOrAdmin'); + Route::delete('/{commentId}', [CommentController::class, 'deleteComment'])->middleware('checkCommentAuthorOrAdmin'); + }); + + + // Disease records routes + Route::prefix('{diseaseId}/records')->group(function () { + Route::get('/', [DiseaseRecordController::class, 'getDiseaseRecords']); + Route::get('/{recordId}', [DiseaseRecordController::class, 'getDiseaseRecordDetails']); + + Route::middleware(['checkRole:admin,operator', 'ensureOperatorManagesDisease'])->group(function() { + Route::post('/', [DiseaseRecordController::class, 'createDiseaseRecord']); + Route::put('/{recordId}', [DiseaseRecordController::class, 'editDiseaseRecord']); + Route::delete('/{recordId}', [DiseaseRecordController::class, 'deleteDiseaseRecord']); + }); + }); + + }); + + // // Files Route + // Route::get('files/records/download/{path}', [FileController::class, 'downloadRecord']) + // ->where('path', 'diseases/records/[0-9]+/.*') + // ->middleware(['checkDiseaseAccess']) + // ->name('files.download.record'); + + // Route::get('files/records/preview/{path}', [FileController::class, 'previewFile']) + // ->where('path', 'diseases/records/[0-9]+/.*') + // ->middleware(['checkDiseaseAccess']) + // ->name('files.records.preview'); + + Route::middleware(['auth:sanctum', 'checkDiseaseAccess'])->group(function () { + // Export all records + Route::get('/diseases/{diseaseId}/export', [ + DiseaseRecordExportController::class, + 'exportToCsv' + ])->name('disease.records.export'); + + // Export single record + Route::get('/diseases/{diseaseId}/records/{recordId}/export', [ + DiseaseRecordExportController::class, + 'exportSingleRecord' + ])->name('disease.record.export'); + }); +}); + +// Authentication Routes +Route::prefix('auth')->group(function () { + Route::post('/register', [AuthController::class, 'register'])->name('auth.register'); + Route::post('/login', [AuthController::class, 'login'])->name('auth.login'); + Route::middleware('auth:sanctum')->post('/logout', [AuthController::class, 'logout'])->name('auth.logout'); +}); + +// Root route +Route::get('/', function () { + return response()->json([ + 'success' => true, + 'data' => [], + 'message' => 'Welcome Home' + ]); +})->name('home'); + +Route::fallback(static function () { + return response()->json([ + 'success' => false, + 'data' => [], + 'message' => 'Not found' + ], 404); +}); \ No newline at end of file diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..f688984 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,24 @@ +json([ + 'success' => false, + 'data' => [], + 'message' => 'Not found' + ], 404); +}); \ No newline at end of file diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +});