diff --git a/Modules/Client/Http/Controllers/Api/ClaimController.php b/Modules/Client/Http/Controllers/Api/ClaimController.php index a9833309..d5cbc7b1 100644 --- a/Modules/Client/Http/Controllers/Api/ClaimController.php +++ b/Modules/Client/Http/Controllers/Api/ClaimController.php @@ -336,7 +336,7 @@ class ClaimController extends Controller $dataRumahSakit = DB::table('organizations') ->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id') ->where('organizations.id', '=', $item->organization_id) - // ->where('addresses.addressable_type', '=', 'App\Models\Organization') + ->where('addresses.addressable_type', '=', 'App\Models\Organization') ->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit') ->first(); //Data Member diff --git a/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php b/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php index 5709ec4a..a5a2a6e8 100644 --- a/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/HospitalPortal/Http/Controllers/Api/RequestLogController.php @@ -27,25 +27,30 @@ class RequestLogController extends Controller 'service_code' => $request->service_code, 'organization_id' => $request->organization_id, 'organization_name' => $request->organization_name, - 'address_provider' => $request->address_provider + 'address_provider' => $request->address_provider, + 'submission_date' => $request->submission_date, ]; $validator = Validator::make($request->all(), [ 'member_id' => 'required', - 'service_code' => 'required' + 'service_code' => 'required', + 'submission_date' => 'required' ], [ 'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']), 'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']), + 'submission_date.required' => trans('Validation.required',['attribute' => 'Submission Date']), ]); if($request->organization_id) { $validator = Validator::make($request->all(), [ 'organization_id' => 'required', 'member_id' => 'required', - 'service_code' => 'required' + 'service_code' => 'required', + 'submission_date' => 'required' ], [ 'organization_id.required' => trans('Validation.required',['attribute' => 'Provider ID']), 'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']), 'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']), + 'submission_date.required' => trans('Validation.required',['attribute' => 'Submission Date']), ]); } if ($validator->fails()) @@ -312,12 +317,15 @@ class RequestLogController extends Controller public function requestFinalLog(Request $request) { $data = [ - 'request_logs_id' => $request->request_logs_id + 'request_logs_id' => $request->request_logs_id, + 'discharge_date' => $request->discharge_date, ]; $validator = Validator::make($request->all(), [ - 'request_logs_id' => 'required' + 'request_logs_id' => 'required', + 'discharge_date' => 'required' ], [ - 'request_logs_id.required' => trans('Validation.required',['attribute' => 'Request Logs ID']) + 'request_logs_id.required' => trans('Validation.required',['attribute' => 'Request Logs ID']), + 'discharge_date.required' => trans('Validation.required',['attribute' => 'Discharge Date']) ]); if ($validator->fails()) { @@ -331,7 +339,8 @@ class RequestLogController extends Controller ->where('request_logs.id', '=', $request->request_logs_id) ->update([ 'status_final_log' => 'requested', - 'final_log' => 1 + 'final_log' => 1, + 'discharge_date' => $request->discharge_date, ]); if ($request->hasFile('result_files')) { foreach ($request->result_files as $file) { @@ -502,7 +511,7 @@ class RequestLogController extends Controller $dataRumahSakit = DB::table('organizations') ->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id') ->where('organizations.id', '=', $dataRequestLog->organization_id) - // ->where('addresses.addressable_type', '=', 'App\Models\Organization') + ->where('addresses.addressable_type', '=', 'App\Models\Organization') ->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit') ->first(); @@ -681,7 +690,7 @@ class RequestLogController extends Controller $dataRumahSakit = DB::table('organizations') ->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id') ->where('organizations.id', '=', $dataRequestLog->organization_id) - // ->where('addresses.addressable_type', '=', 'App\Models\Organization') + ->where('addresses.addressable_type', '=', 'App\Models\Organization') ->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit') ->first(); diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogController.php b/Modules/Internal/Http/Controllers/Api/RequestLogController.php index 9f13e3e6..28d1c5d7 100644 --- a/Modules/Internal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/Internal/Http/Controllers/Api/RequestLogController.php @@ -122,7 +122,7 @@ class RequestLogController extends Controller member: $member, paymentType: 'cashless', serviceCode: $request->service_code, - submissionDate: null, + submissionDate: $request->submission_date, // status: 'approved', status: 'requested', // di nonaktifkan dulu auto approved organization_id: $request->organization_id, @@ -145,7 +145,7 @@ class RequestLogController extends Controller member: $member, paymentType: 'cashless', serviceCode: $request->service_code, - submissionDate: null, + submissionDate: $request->submission_date, status: 'requested', organization_id: $request->organization_id, source: $request->source diff --git a/app/Services/RequestLogService.php b/app/Services/RequestLogService.php index 5a5a5c64..415a7ed2 100644 --- a/app/Services/RequestLogService.php +++ b/app/Services/RequestLogService.php @@ -26,7 +26,7 @@ class RequestLogService{ $member, $paymentType, $serviceCode, - $submissionDate = null, + $submissionDate, $status, $organization_id = null, $source ) @@ -48,7 +48,7 @@ class RequestLogService{ $requestLogData = [ 'code' => $code, 'member_id' => $member->id, - 'submission_date' => $submissionDate ?? now(), + 'submission_date' => $submissionDate ? $submissionDate : now(), 'status' => $status, 'payment_type' => $paymentType, 'service_code' => $serviceCode, diff --git a/database/seeders/UpdateTarifLMSSeeder.php b/database/seeders/UpdateTarifLMSSeeder.php new file mode 100644 index 00000000..91a83271 --- /dev/null +++ b/database/seeders/UpdateTarifLMSSeeder.php @@ -0,0 +1,206 @@ + "A", + // "sHealthCare" => "Rumah Sakit Awal Bros Sudirman Pekanbaru", + // ], + // [ + // "sKodeRS" => "B", + // "sHealthCare" => "Rumah Sakit Awal Bros Batam", + // ], + // [ + // "sKodeRS" => "BW", + // "sHealthCare" => "Primaya Hospital Bhakti Wara", + // ], + // [ + // "sKodeRS" => "C", + // "sHealthCare" => "Primaya Hospital Tangerang", + // ], + // [ + // "sKodeRS" => "D", + // "sHealthCare" => "Primaya Hospital Bekasi Barat", + // ], + // [ + // "sKodeRS" => "E", + // "sHealthCare" => "Primaya Evasari Hospital", + // ], + // [ + // "sKodeRS" => "F", + // "sHealthCare" => "Primaya Hospital Makassar", + // ], + // [ + // "sKodeRS" => "G", + // "sHealthCare" => "Rumah Sakit Awal Bros Ujung Batu", + // ], + // [ + // "sKodeRS" => "I", + // "sHealthCare" => "Rumah Sakit Awal Bros Panam", + // ], + // [ + // "sKodeRS" => "K", + // "sHealthCare" => "Rumah Sakit Awal Bros Ahmad Yani", + // ], + // [ + // "sKodeRS" => "M", + // "sHealthCare" => "Primaya Hospital Bekasi Timur", + // ], + // [ + // "sKodeRS" => "N", + // "sHealthCare" => "Primaya Hospital Betang Pambelum", + // ], + // [ + // "sKodeRS" => "O", + // "sHealthCare" => "Primaya Hospital Inco Sorowako", + // ], + // [ + // "sKodeRS" => "P", + // "sHealthCare" => "Primaya Hospital Bekasi Utara", + // ], + // [ + // "sKodeRS" => "PK", + // "sHealthCare" => "Primaya Hospital Pasar Kemis", + // ], + // [ + // "sKodeRS" => "Q", + // "sHealthCare" => "Primaya Hospital Karawang", + // ], + // [ + // "sKodeRS" => "SK", + // "sHealthCare" => "Primaya Hospital Sukabumi", + // ], + // ] + + $dataTarifs = [ + // [ + // 'adm_rajal' => 0, + + // 'appt_umum' => null, + // 'walkin_umum' => null, + // 'telekonsul_umum' => null, + + // 'appt_spesialis' => 250000, + // 'walkin_spesialis' => 250000, + // 'telekonsul_spesialis' => 213000, + + // 'appt_subspesialis' => 345000, + // 'walkin_subspesialis' => 345000, + // 'telekonsul_subspesialis' => 293000, + + // 'applied_to' => ['A', 'KODERSLMS'] + // ], + [ + 'adm_rajal' => 55000, + + 'appt_umum' => 120000, + 'walkin_umum' => 120000, + 'telekonsul_umum' => 102000, + + 'appt_spesialis' => 250000, + 'walkin_spesialis' => 250000, + 'telekonsul_spesialis' => 213000, + + 'appt_subspesialis' => 345000, + 'walkin_subspesialis' => 345000, + 'telekonsul_subspesialis' => 293000, + + 'applied_to' => ['P'] + ] + ]; + + $spesialisUmum = Speciality::where('sSlug', 'general-practitioner')->first(); + + foreach ($dataTarifs as $tarif) { + $healthcareAppliedIds = Healthcare::whereIn('sKodeRS', $tarif['applied_to'])->pluck('nID'); + + // [MARK] : UMUM + // Update Tarif Dokter Umum + $updateUmum = []; + if ($tarif['walkin_umum'] != null) { + $updateUmum['nBiaya'] = $tarif['walkin_umum'] + $tarif['adm_rajal']; + } + if ($tarif['telekonsul_umum'] != null) { + $updateUmum['nBiayaTC'] = $tarif['telekonsul_umum'] + $tarif['adm_rajal']; + $updateUmum['nBiayaATC'] = $tarif['telekonsul_umum'] + $tarif['adm_rajal']; + } + if (count($updateUmum)) { + // $updateUmum['dUpdateOn'] = now(); + // Updating + $dokUmum = JadwalDokter::query() + ->where('nIDSpesialis', $spesialisUmum->nID) + ->whereIn('nIDHealthCare', $healthcareAppliedIds) + ->withTrashed() + ->update($updateUmum); + $this->command->info('Updating : Dokter Umum'); + } + + // [MARK] : SPESIALIS + // Update Tarif Dokter Spesialis + $updateSpesialis = []; + if ($tarif['walkin_spesialis'] != null) { + $updateSpesialis['nBiaya'] = $tarif['walkin_spesialis'] + $tarif['adm_rajal']; + } + if ($tarif['telekonsul_spesialis'] != null) { + $updateSpesialis['nBiayaTC'] = $tarif['telekonsul_spesialis'] + $tarif['adm_rajal']; + $updateSpesialis['nBiayaATC'] = $tarif['telekonsul_spesialis'] + $tarif['adm_rajal']; + } + if (count($updateSpesialis)) { + // $updateSpesialis['dUpdateOn'] = now(); + // Updating + $dokSpesialis = JadwalDokter::query() + ->whereNot(function ($q) use ($spesialisUmum) { + $q->where('nIDSpesialis', $spesialisUmum->nID); + }) + ->where('sIsSubSpesialis', 0) + ->whereIn('nIDHealthCare', $healthcareAppliedIds) + ->withTrashed() + ->update($updateSpesialis); + $this->command->info('Updating : Dokter Spesialis'); + } + + + // [MARK] : SUBSPESIALIS + // Update Tarif Dokter Sub Spesialis + $updateSubSpesialis = []; + if ($tarif['walkin_subspesialis'] != null) { + $updateSubSpesialis['nBiaya'] = $tarif['walkin_subspesialis'] + $tarif['adm_rajal']; + } + if ($tarif['telekonsul_subspesialis'] != null) { + $updateSubSpesialis['nBiayaTC'] = $tarif['telekonsul_subspesialis'] + $tarif['adm_rajal']; + $updateSubSpesialis['nBiayaATC'] = $tarif['telekonsul_subspesialis'] + $tarif['adm_rajal']; + } + if (count($updateSubSpesialis)) { + // $updateSubSpesialis['dUpdateOn'] = now(); + + // Updating + $dokSubSpesialis = JadwalDokter::query() + ->whereNot(function ($q) use ($spesialisUmum) { + $q->where('nIDSpesialis', $spesialisUmum->nID); + }) + ->where('sIsSubSpesialis', 1) + ->whereIn('nIDHealthCare', $healthcareAppliedIds) + ->withTrashed() + ->update($updateSubSpesialis); + $this->command->info('Updating : Dokter Sub Spesialis'); + } + } + } +} diff --git a/frontend/hospital-portal/public/lang/en-US.json b/frontend/hospital-portal/public/lang/en-US.json index e68015ca..c2240c3e 100644 --- a/frontend/hospital-portal/public/lang/en-US.json +++ b/frontend/hospital-portal/public/lang/en-US.json @@ -14,6 +14,9 @@ "txtDialogMember3" : "Detail", "txtDialogMember4" : "Please select services", "txtDialogMember5" : "Submission Date", + "txtDialogMember6" : "Please select submission date", + "txtWarningDischargeDate" : "Please select discharge date", + "txtCreateAt" : "Create at", "txtDateBirth" : "Date of Birth", "txtGender" : "Gender", "txtMaritalStatus" : "Marital Status", @@ -45,5 +48,6 @@ "txtYouHave" : "You have", "txtUnm" : "unread messages", "txtNew" : "New", - "txtBeforeThat" : "Before that" + "txtBeforeThat" : "Before that", + "txtDischargeDate" : "Discharge Date" } diff --git a/frontend/hospital-portal/public/lang/id-ID.json b/frontend/hospital-portal/public/lang/id-ID.json index 7b95ede9..4d9cca02 100644 --- a/frontend/hospital-portal/public/lang/id-ID.json +++ b/frontend/hospital-portal/public/lang/id-ID.json @@ -14,6 +14,9 @@ "txtDialogMember3" : "Detail", "txtDialogMember4" : "Mohon pilih layanan", "txtDialogMember5" : "Tanggal Pengajuan", + "txtDialogMember6" : "Mohon pilih tanggal pengajuan", + "txtWarningDischargeDate" : "Mohon pilih tanggal keluar", + "txtCreateAt" : "Tanggal Buat", "txtDateBirth" : "Tanggal Lahir", "txtGender" : "Jenis Kelamin", "txtMaritalStatus" : "Status Perkawinan", @@ -45,5 +48,6 @@ "txtYouHave" : "Anda memiliki", "txtUnm" : "pesan yang belum dibaca", "txtNew" : "Baru", - "txtBeforeThat" : "Sebelum" + "txtBeforeThat" : "Sebelum", + "txtDischargeDate" : "Tanggal Keluar" } diff --git a/frontend/hospital-portal/src/sections/dashboard/DialogFinalLog.tsx b/frontend/hospital-portal/src/sections/dashboard/DialogFinalLog.tsx index 26a74e8b..7bebba3f 100644 --- a/frontend/hospital-portal/src/sections/dashboard/DialogFinalLog.tsx +++ b/frontend/hospital-portal/src/sections/dashboard/DialogFinalLog.tsx @@ -12,9 +12,14 @@ import { useRef, useState, useContext } from 'react'; import { makeFormData } from '@/utils/jsonToFormData'; import { format } from 'date-fns'; import { LanguageContext } from '@/contexts/LanguageContext'; +import { DatePicker, LocalizationProvider, MobileDatePicker } from '@mui/x-date-pickers'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; +import TextField from '@mui/material/TextField'; export default function DialogFinalLog({ member, getData, onClose, handleSubmitSuccess }: any) { const { localeData }: any = useContext(LanguageContext); + //Submission date + const [dischargeDate, setDischargeDate] = useState(format(new Date(), "yyyy MMM d HH:mm:ss")); // ---------------------------------------------------------------------- // Files Diagnosa @@ -84,12 +89,18 @@ export default function DialogFinalLog({ member, getData, onClose, handleSubmitS const [submitLoading, setSubmitLoading] = useState(false); function submitRequestFinalLog() { + if(dischargeDate == '') + { + enqueueSnackbar(localeData.txtWarningDischargeDate, { variant: 'warning' }); + return false; + } setSubmitLoading(true); const formData = makeFormData({ request_logs_id: member.id, result_files: fileHasilPenunjangs, diagnosa_files: fileDiagnosas, - kondisi_files: fileKondisis + kondisi_files: fileKondisis, + discharge_date: fPostFormat(dischargeDate, 'yyyy-MM-dd HH:mm:ss'), }); axios .post('/request-final-log', formData) @@ -313,6 +324,23 @@ export default function DialogFinalLog({ member, getData, onClose, handleSubmitS + + + {localeData.txtDischargeDate} * + + { + setDischargeDate( (newValue)); + }} + inputFormat="dd-MM-yyyy" + renderInput={(params) => } + /> + + + + (''); const [idProvider, setIdProvider] = useState(0); + //Submission date + const [submissionDate, setSubmissionDate] = useState(format(new Date(), "yyyy MMM d HH:mm:ss")); const [submitLoading, setSubmitLoading] = useState(false); function submitRequest() { @@ -46,13 +51,19 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' }); return false; } + if(submissionDate == '') + { + enqueueSnackbar(localeData.txtDialogMember6, { variant: 'warning' }); + return false; + } setSubmitLoading(true); const formData = { member_id: member.members.id, service_code: serviceCode, organization_id: idProvider, organization_name : name, - address_provider: alamat + address_provider: alamat, + submission_date: fPostFormat(submissionDate, 'yyyy-MM-dd HH:mm:ss') }; axios .post('/request-log', formData) @@ -103,7 +114,7 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe - {localeData.txtDialogMember5} + {localeData.txtCreateAt} {format(new Date(), "d MMM yyyy")} @@ -177,6 +188,23 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe + + + {localeData.txtDialogMember5} * + + { + setSubmissionDate( (newValue)); + }} + inputFormat="dd-MM-yyyy" + renderInput={(params) => } + /> + + + + { console.log(response); // GL Akhir-010124-OP-00001234 Ratih-LinkSehat - const namaFile = 'GL Akhir-'+getFormattedToday()+'-'+service_code+'-'+no_polis+'-'+full_name+'-LinkSehat.pdf'; + const namaFile = 'GL Akhir-'+provider+'-'+getFormattedToday()+'-'+service_code+'-'+no_polis+'-'+full_name+'-LinkSehat.pdf'; const url = URL.createObjectURL(response.data); const link = document.createElement('a'); link.href = url; @@ -369,7 +369,7 @@ export default function TableListFinalLog() { View {obj.status === 'approved' ? ( - handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name)}> + handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name, obj.provider)}> Download Final LOG diff --git a/frontend/hospital-portal/src/sections/dashboard/TableListReqLog.tsx b/frontend/hospital-portal/src/sections/dashboard/TableListReqLog.tsx index 4f1ddd11..f3d949cf 100644 --- a/frontend/hospital-portal/src/sections/dashboard/TableListReqLog.tsx +++ b/frontend/hospital-portal/src/sections/dashboard/TableListReqLog.tsx @@ -42,15 +42,14 @@ export default function TableList() { const [data, setData] = useState([]); // Download LOG - async function handleDownloadLog(request_log_id: any, service_code:any, no_polis:any, full_name:any) { + async function handleDownloadLog(request_log_id: any, service_code:any, no_polis:any, full_name:any, provider:any) { return axios .get(`download-log/${request_log_id}`, { responseType: 'blob', }) .then((response) => { - console.log(response); // GL Awal-010124-OP-00001234 Ratih-LinkSehat - const namaFile = 'GL Awal-'+getFormattedToday()+'-'+service_code+'-'+no_polis+'-'+full_name+'-LinkSehat.pdf'; + const namaFile = 'GL Awal-'+provider+'-'+getFormattedToday()+'-'+service_code+'-'+no_polis+'-'+full_name+'-LinkSehat.pdf'; const url = URL.createObjectURL(response.data); const link = document.createElement('a'); link.href = url; @@ -368,7 +367,7 @@ export default function TableList() { View {obj.status === 'approved' ? ( - handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name)}> + handleDownloadLog(obj.id, obj.service_code, obj.no_polis, obj.full_name, obj.provider)}> Download LOG diff --git a/resources/views/pdf/final_log_page_1.blade.php b/resources/views/pdf/final_log_page_1.blade.php index 42b1b176..47320b3c 100644 --- a/resources/views/pdf/final_log_page_1.blade.php +++ b/resources/views/pdf/final_log_page_1.blade.php @@ -242,7 +242,7 @@ {{ wordwrap($request_logs->code,15,"
\n")}} Tanggal : - {{ \Carbon\Carbon::parse($request_logs->submission_date)->format('d M Y') }} + {{ \Carbon\Carbon::parse($request_logs->created_at)->format('d M Y') }} Kepada @@ -354,7 +354,7 @@ Periode Jaminan : - {{ \Carbon\Carbon::parse($request_logs->submission_date)->format('d M Y') }} + {{ \Carbon\Carbon::parse($request_logs->submission_date)->format('d M Y') . ($request_logs->discharge_date ? ' - ' . \Carbon\Carbon::parse($request_logs->discharge_date)->format('d M Y') : '') }} Mata Uang diff --git a/resources/views/pdf/req_log_page_1.blade.php b/resources/views/pdf/req_log_page_1.blade.php index 57013dff..f8ee97d5 100644 --- a/resources/views/pdf/req_log_page_1.blade.php +++ b/resources/views/pdf/req_log_page_1.blade.php @@ -250,7 +250,7 @@ {{ wordwrap($request_logs->code, 15, "
\n") }} Tanggal : - {{ \Carbon\Carbon::parse($request_logs->submission_date)->format('d M Y') }} + {{ \Carbon\Carbon::parse($request_logs->created_at)->format('d M Y') }}