Merge remote-tracking branch 'origin/staging' into origin/production

This commit is contained in:
Linksehat Staging Server
2024-05-20 08:49:14 +07:00
107 changed files with 9366 additions and 105 deletions

View File

@@ -34,6 +34,9 @@ use Modules\Internal\Transformers\RequestLogResource;
use App\Models\RequestLog;
use ZipArchive;
use File;
use PDF;
class ClaimController extends Controller
@@ -91,13 +94,13 @@ class ClaimController extends Controller
// (SELECT plans.code FROM plans WHERE plans.id = member_plans.plan_id LIMIT 1) AS plan_code
// '),
DB::raw('
(SELECT plans.code
FROM plans
(SELECT plans.code
FROM plans
WHERE plans.id IN (
SELECT member_plans.plan_id
FROM member_plans
SELECT member_plans.plan_id
FROM member_plans
WHERE member_plans.member_id = claim_requests.member_id
)
)
AND plans.service_code = claim_requests.service_code) AS plan_code
'),
DB::raw('
@@ -116,13 +119,103 @@ class ClaimController extends Controller
'claim_requests.status_claim_management as status',
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function downloadTemplate()
public function filesProvider(Request $request)
{
$limit = $request->has('per_page') ? $request->input('per_page') : 50;
$results = DB::table('request_logs')
->leftJoin('members', 'request_logs.member_id', '=', 'members.id')
->join('files', 'request_logs.id', '=', 'files.fileable_id')
// ->leftJoin('member_plans', 'member_plans.member_id', '=', 'members.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('members.name', 'like', "%" . $search . "%");
$query->orWhere('request_logs.code', 'like', "%" . $search . "%");
$query->orWhere('members.member_id', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction);
})
->when($request->input('start_date') , function ($query, $start_date) {
$query->where(function ($query) use ($start_date) {
$query->where('request_logs.created_at', '>=', $start_date. ' 00:00:00');
});
})
->when($request->input('end_date') , function ($query, $end_date) {
$query->where(function ($query) use ($end_date) {
$query->where('request_logs.created_at', '<=', $end_date. ' 23:59:59');
});
})
->when($request->input('provider') , function ($query, $provider) {
$query->where(function ($query) use ($provider) {
$query->where('request_logs.organization_id', '=', $provider);
});
})
->where('files.fileable_type', '=', 'App\Models\RequestLog')
->where('request_logs.final_log', '=', '1')
->where('request_logs.status_final_log', '=', 'approved')
->select(
'files.original_name as files',
'files.id',
'files.id AS id_log',
'request_logs.code as code',
'members.name',
'request_logs.created_at',
DB::raw('
(SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider
'),
'request_logs.status_final_log as status',
DB::raw("CONCAT('" . env('APP_URL') . "/storage/', path) as path")
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function downloadZip(Request $request)
{
$selectedRows = $request->selectedRows; // asumsi $selectedRows berisi array ID file yang dipilih
$files = [];
// Ambil path file dari database atau sumber lain sesuai dengan $selectedRows
$data = DB::table('files')
->whereIn('id', $selectedRows)
->select('path')
->get();
foreach ($data as $value) {
$files[] = storage_path('app/public/' . $value->path);
}
$zipFileName = 'downloaded_files.zip';
$zip = new ZipArchive();
if ($zip->open(storage_path('app/public/' . $zipFileName), ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
foreach ($files as $file) {
$zip->addFile($file, basename($file));
}
$zip->close();
// Mengembalikan response berupa URL file zip
return response()->json(['file_url' => env('APP_URL').Storage::url($zipFileName)], 200);
} else {
return response()->json(['message' => 'Gagal membuat file ZIP.'], 500);
}
}
public function downloadTemplate()
{
return Helper::responseJson([
'file_name' => "Template - Claim - Management.xlsx",
@@ -155,7 +248,7 @@ class ClaimController extends Controller
'approval_by_claim_management' => auth()->user()->id,
'approval_date_claim_management' => date('Y-m-d H:i:s'),
]);
if ($affectedRows === 0) {
$check_status = DB::table('claim_requests')
->where('code','=', $row['code'])
@@ -183,16 +276,16 @@ class ClaimController extends Controller
$row['error'] = $e->getMessage();
if(!$row['code'])
{
$row['error'] = 'Kolom Code wajib isi';
$row['error'] = 'Kolom Code wajib isi';
}
if(!$row['qc'])
{
$row['error'] = 'Kolom QC wajib isi';
$row['error'] = 'Kolom QC wajib isi';
}
$result_rows[] = $row;
$failedRows[] = $row;
}
}
}
$response = [
'message' => 'File uploaded and data saved to database',
@@ -217,7 +310,7 @@ class ClaimController extends Controller
$row[] = $data[0][$i];
$header[] = $data[0][0];
}
$filed = [];
foreach ($header[0] as $value)
{
@@ -228,18 +321,18 @@ class ClaimController extends Controller
$filed[] = $modelColumn;
}
}
$result = [];
foreach ($row as $subarray) {
$trimmedSubarray = [];
for ($i = 0; $i < count($filed); $i++) {
$trimmedSubarray[$filed[$i]] = $subarray[$i] ? $subarray[$i] : null;
}
$result[] = $trimmedSubarray;
}
return $result;
}
}
public function exportClaimManagement(Request $request)
{
@@ -314,13 +407,13 @@ class ClaimController extends Controller
'),
'claim_requests.created_at',
DB::raw('
(SELECT plans.code
FROM plans
(SELECT plans.code
FROM plans
WHERE plans.id IN (
SELECT member_plans.plan_id
FROM member_plans
SELECT member_plans.plan_id
FROM member_plans
WHERE member_plans.member_id = claim_requests.member_id
)
)
AND plans.service_code = claim_requests.service_code) AS plan_code
'),
// DB::raw('
@@ -391,7 +484,7 @@ class ClaimController extends Controller
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);
@@ -426,10 +519,10 @@ class ClaimController extends Controller
$headerRow = WriterEntityFactory::createRowFromArray($header, $style);
$writer->addRow($headerRow);
// ============================
foreach($request->params as $item)
{
$rowData = [
$item['code'],
$item['qc'],
@@ -461,7 +554,7 @@ class ClaimController extends Controller
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);

View File

@@ -3,6 +3,7 @@
namespace Modules\Internal\Http\Controllers\Api;
use App\Models\Drug;
use App\Models\Unit;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
@@ -25,6 +26,37 @@ class DrugController extends Controller
return $drugs;
}
public function drugList(Request $request){
$drugs = Drug::query()
->where([
'atc_code' => 'lms', // ini untuk menggunakan list obat yang baru
])
->get();
$manipulatedDrugs = $drugs->map(function ($drug) {
// Contoh manipulasi, tambahkan atau ubah properti sesuai kebutuhan
return [
'value' => $drug->id, // Ganti dengan properti yang sesuai dari model Icd
'label' => $drug->name, // Ganti dengan properti yang sesuai dari model Icd
];
});
return Helper::responseJson(data: $manipulatedDrugs);
}
public function unitList(Request $request){
$units = Unit::query()
->get();
$manipulatedUnits = $units->map(function ($unit) {
// Contoh manipulasi, tambahkan atau ubah properti sesuai kebutuhan
return [
'value' => $unit->id, // Ganti dengan properti yang sesuai dari model Icd
'label' => $unit->name, // Ganti dengan properti yang sesuai dari model Icd
];
});
return Helper::responseJson(data: $manipulatedUnits);
}
/**
* Show the form for creating a new resource.
* @return Renderable
@@ -123,20 +155,22 @@ class DrugController extends Controller
foreach ($processedData as $row) {
try {
Drug::create(
[
'name' => $row['name'],
'code' => $row['code'],
'generic_name' => $row['generic_name'],
'description' => $row['description'],
'mims_class' => $row['mims_class'],
'indications' => $row['indications'],
'atc_code' => $row['atc_code'],
'segmentation' => $row['segmentation'],
'type' => $row['type'],
'dosage' => $row['dosage'],
'remark' => $row['remark'],
]
Drug::updateOrCreate([
'code' => $row['code'],
],
[
'name' => $row['name'],
'code' => $row['code'],
'generic_name' => $row['generic_name'],
'description' => $row['description'],
'mims_class' => $row['mims_class'],
'indications' => $row['indications'],
'atc_code' => $row['atc_code'],
'segmentation' => $row['segmentation'],
'type' => $row['type'],
'dosage' => $row['dosage'],
'remark' => $row['remark'],
]
);
$importedRows++;
} catch (\Exception $e) {

View File

@@ -24,20 +24,44 @@ use Modules\Internal\Services\IcdService;
class FormulariumTemplateController extends Controller
{
public function index(Request $request)
{
if ($request->search){
return FormulariumTemplate::when($request->search ?? null, function($icd, $search) {
$icd->where('name', 'LIKE', '%'.$search.'%')
->orWhere('description', 'LIKE', '%'.$search.'%');
})->paginate(15);
} else {
$diagnosisTemplate = FormulariumTemplate::query()
// ->filter($request->toArray())
->orderBy('name', 'ASC')
->paginate(15);
return $diagnosisTemplate;
{ if($request->corporate_id)
{
if ($request->search){
return FormulariumTemplate::when($request->search ?? null, function($icd, $search) {
$icd->where('name', 'LIKE', '%'.$search.'%')
->orWhere('description', 'LIKE', '%'.$search.'%');
})
->join('corporate_formulariums', 'formularium_templates.id', '=', 'corporate_formulariums.formularium_template_id')
->where('corporate_formulariums.corporate_id', '=', $request->corporate_id)
->select('formularium_templates.*', 'corporate_formulariums.corporate_id')
->orderBy('formularium_templates.id', 'ASC')
->paginate(15);
} else {
$diagnosisTemplate = FormulariumTemplate::query()
// ->filter($request->toArray())
->join('corporate_formulariums', 'formularium_templates.id', '=', 'corporate_formulariums.formularium_template_id')
->where('corporate_formulariums.corporate_id', '=', $request->corporate_id)
->select('formularium_templates.*', 'corporate_formulariums.corporate_id')
->orderBy('formularium_templates.id', 'ASC')
->paginate(15);
return $diagnosisTemplate;
}
}
else
{
if ($request->search){
return FormulariumTemplate::when($request->search ?? null, function($icd, $search) {
$icd->where('name', 'LIKE', '%'.$search.'%')
->orWhere('description', 'LIKE', '%'.$search.'%');
})->paginate(15);
} else {
$diagnosisTemplate = FormulariumTemplate::query()
// ->filter($request->toArray())
->orderBy('name', 'ASC')
->paginate(15);
return $diagnosisTemplate;
}
}
}
/**
@@ -127,7 +151,7 @@ class FormulariumTemplateController extends Controller
})->limit(10)->get();
}
public function import(Request $request)
public function import(Request $request)
{
$request->validate([
'file' => 'required|file|mimes:xls,xlsx,csv,txt',
@@ -171,7 +195,7 @@ class FormulariumTemplateController extends Controller
6 => 'version',
7 => 'active',
];
foreach ($row->getCells() as $header_index => $cell) {
if (isset($row_map[$header_index])) {
$value = $cell->getValue();
@@ -246,7 +270,7 @@ class FormulariumTemplateController extends Controller
public function activation(Request $request, $id)
{
$request->validate([
'active' => 'required'
]);
@@ -268,20 +292,20 @@ class FormulariumTemplateController extends Controller
// Membuat penulis entitas Spout
$writer = WriterEntityFactory::createXLSXWriter();
// Membuka penulis untuk menulis ke file
$writer->openToFile(public_path('files/CorporateMembershipList.xlsx'));
/** Create a style with the StyleBuilder */
$style = (new StyleBuilder())
->setFontBold()
->build();
// Menulis header kolom
$headers_map_to_table_fields = $this->icdService->listing_doc_headers;
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields, $style);
$writer->addRow($headerRow);
// Menulis data
if (!empty($data)) {
foreach ($data as $item) {
@@ -295,22 +319,22 @@ class FormulariumTemplateController extends Controller
$item['active'] == 1 ? 'Active' : 'Inactive', // Status
$item['type'], // Type
];
$row = WriterEntityFactory::createRowFromArray($rowData);
$writer->addRow($row);
}
}
// Menutup penulis
$writer->close();
// Mengembalikan response untuk mengunduh file
$filePath = public_path('files/CorporateMembershipList.xlsx');
return Helper::responseJson([
'file_name' => "Diagnosis ICD List " . date('Y-m-d h:i:s'),
"file_url" => url('files/CorporateMembershipList.xlsx')
]);
}
}

View File

@@ -2,11 +2,36 @@
namespace Modules\Internal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\OLDLMS\Livechat;
use App\Models\OLDLMS\LivechatSummary;
use App\Models\OLDLMS\Appointment;
use App\Models\OLDLMS\Dokter;
use App\Models\OLDLMS\User;
use App\Models\OLDLMS\UserDetail;
use App\Models\OLDLMS\Prescription;
use App\Models\OLDLMS\PrescriptionItem;
use App\Models\Prescription as PrescriptionAso;
use App\Models\PrescriptionItem as PrescriptionItemAso;
use App\Models\Icd;
use App\Models\Organization;
use App\Models\Drug;
use App\Models\Unit;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage;
use Modules\Internal\Transformers\LivechatResource;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Validator;
use Dompdf\Dompdf;
use Dompdf\Options;
use DB;
class PrescriptionController extends Controller
{
@@ -15,21 +40,31 @@ class PrescriptionController extends Controller
* @param int|null $id
* @return \Illuminate\Http\JsonResponse
*/
public function index($id = null)
public function index(Request $request)
{
$query = Prescription::query();
if ($id !== null) {
$query->where('nID', $id);
$startDate = $request->startDate;
$endDate = $request->endDate;
$livechat = Livechat::with('doctor.user', 'doctor.speciality', 'appointment.appointmentDetail', 'healthCare', 'summary')
->where('nTebusObat', '=', 1);
// ->where('nIDAppointment', '!=', null)
// ->where('nIDAppointment', '!=', '');
if ($startDate) {
$livechat = $livechat->where('dCreateOn', '>=', $startDate);
}
$prescriptions = $query->select('nID','nIDLiveChat', 'nIDLiveChatSummary', 'nIDDokter', 'sDokterName', 'dTanggalResep', 'sSource', 'nIDUser', 'sKodeResep', 'sDiagnose', 'sStatus')
->get();
// $prescriptions->toArray();
// dd($prescriptions);
if ($endDate) {
$endDate = date('Y-m-d', strtotime($endDate . ' +1 day'));
$livechat = $livechat->where('dCreateOn', '<', $endDate);
}
return response()->json($prescriptions);
// return response()->json(Helper::paginateResources(LivechatResource::collection($livechat)));
$livechat = $livechat->whereHas('summary', function ($query) {
$query->whereNotNull('nIDLiveChat');
});
$livechat = $livechat->latest()->paginate(15);
return response()->json(Helper::paginateResources(LivechatResource::collection($livechat)));
}
@@ -51,6 +86,128 @@ class PrescriptionController extends Controller
*/
public function store(Request $request)
{
// Insert atau Update ke table prescription di ASO
$data = [
'livechat_id' => $request->id,
'organization_id' => $request->hospital,
'icd_code' => $request->diagnosis,
];
$prescriptionAso = PrescriptionAso::updateOrCreate([
'livechat_id' => $request->id
], $data);
// Insert ke table tx_prescription di Linksehat
$livechat = Livechat::where('nID', $request->id)->first();
$livechatSummary = LivechatSummary::where('nIDLivechat', $request->id)->first();
$dokterData = Dokter::where('nIDUser', $livechat->nIDDokter)->first();
$nIDDokter = $dokterData ? $dokterData->nID : $livechat->nIDDokter;
$userDokter = User::where('nID', $livechat->nIDDokter)->first();
$userDetailDokter = UserDetail::where('nIDUser', $userDokter->nID)->first();
$dokter = $userDetailDokter->sTitlePrefix . ' ' . $userDokter->sFirstName . ' ' . $userDokter->sLastName . ' ' . $userDetailDokter->sTitleSuffix;
$kodeResep = 'LMS' . date('ymd') . rand(1,100);
$diagnosis = explode(",",$request->diagnosis);
if(isset($request->diagnosis) && is_array($diagnosis) && count($diagnosis) > 0) {
foreach($diagnosis as $data){
$icd = Icd::where('code', $data)->first();
array_push($diagnosis, $icd->name);
};
}
$sDiagnosis = implode(", ",$diagnosis);
$hospitalData = Organization::where('id', $request->hospital)->first();
$hospital = '';
if ($hospitalData) {
$hospital = $hospitalData->code;
}
$data = [
'nIDLivechat' => $request->id,
'nIDLivechatSummary' => $livechatSummary->nID,
'nIDDokter' => $nIDDokter,
'sDokterName' => $dokter,
'dTanggalResep' => date('Y-m-d H:i:s'),
'sSource' => 'lms',
'nIDUser' => $livechat->nIDUser,
'sRegID' => '',
'sKodeResep' => $kodeResep,
'sDiagnose' => $sDiagnosis,
'sKodeRS' => $hospital,
];
$prescription = Prescription::updateOrCreate([
'nIDLivechat' => $request->id
],$data);
$medicine = $request->medicine;
$customMessages = [
'required' => 'Kolom :attribute wajib diisi.',
'numeric' => 'Kolom :attribute harus berupa angka.',
];
$validator = Validator::make($request->all(), [
'medicine' => 'required|array',
'medicine.*' => 'required',
], $customMessages);
if ($validator->fails()) {
return Helper::responseJson([$request->all()],'error', 400, $validator->errors());
} else {
// BeginTransaction
// delete item
DB::beginTransaction();
PrescriptionItemAso::where('prescription_id', $prescriptionAso->id)->delete();
PrescriptionItem::where('nIDPrescription', $prescription->nID)->delete();
foreach($medicine as $key => $value){
$drugData = Drug::where('id', $value['drug_id'])->first();
$drug = '';
$drugCode = '';
if ($drugData){
$drug = $drugData->name;
$drugCode = $drugData->code;
}
$unitData = Unit::where('id', $value['unit_id'])->first();
$unit = '';
if ($unitData) {
$unit = $unitData->name;
}
// Insert Data
$dataAso = [
'prescription_id' => $prescriptionAso->id,
'drug_id' => $value['drug_id'],
'qty' => $value['qty'],
'unit_id' => $value['unit_id'],
'signa' => $value['signa'],
'note' => $value['note']
];
$data = [
'nIDPrescription' => $prescription->nID,
'sItemName' => $drug,
'sItemCode' => $drug,
'sOriginCode' => $drugCode,
'nQty' => $value['qty'],
'sSatuan' => $unit,
'sSigna' => $value['signa'],
'sNote' => $value['note'],
];
try {
// Insert to ASO
PrescriptionItemAso::create($dataAso);
// Insert to Linksehat
PrescriptionItem::create($data);
} catch (\Throwable $th) {
DB::rollBack();
return Helper::responseJson(status: 'failed', statusCode: 500, message: $th->getMessage());
}
}
DB::commit();
return Helper::responseJson(status: 'success', statusCode: 201, message: 'success', data: $request->toArray());
}
return Helper::responseJson(status: 'success', statusCode: 200, message: 'Resep Online berhasil ajukan!', data: $prescription);
}
/**
@@ -93,4 +250,58 @@ class PrescriptionController extends Controller
{
//
}
public function downloadPrescription($id){
$pdf = new Dompdf();
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isPhpEnabled', true);
$options->set(['isRemoteEnabled' => true]);
$pdf->setOptions($options);
$pdf->setPaper('A4', 'portrait');
$livechat = Livechat::with('doctor.user', 'doctor.speciality', 'appointment.appointmentDetail', 'healthCare')
->where('nIDAppointment', '!=', null)->where('nIDAppointment', '!=', '')
->where('nID', $id)
->first();
$prescription = Prescription::where('nIDLivechat', $id)->first();
$valid_date = date('d-m-Y', strtotime($prescription->dTanggalResep . ' +3 days'));
$prescriptionItem = PrescriptionItem::where('nIDPrescription', $prescription->nID)->get();
$user = User::where('nID', $livechat->nIDUser)->first();
$doctor = Dokter::where('nIDUser', $livechat->nIDDokter)->first();
$patient = [
'name' => $user->sFirstName. ' '. $user->sMiddleName. ' '. $user->sLastName,
'tgl_lahir' => date('d-m-Y', strtotime($user->dTanggalLahir)),
'kelamin' => $user->nIDJenisKelamin == 1 ? 'M' : 'F',
'umur' => Helper::calculateAge($user->dTanggalLahir)
];
// Memuat view pdf_view.php ke dalam variabel
$data = [
'doctor' => $doctor,
'items' => $prescriptionItem,
'tanggal_resep' => date('d-m-Y', strtotime($prescription->dTanggalResep)),
'pasien' => $patient,
'valid_date' => $valid_date,
];
// Halaman 1
$html1 = view('pdf.prescription', $data);
$htmlCombined = $html1 ;
$pdf->loadHtml($htmlCombined);
$pdf->render();
$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="file.pdf"',
];
return response($pdf->output(), 200, $headers);
}
}

View File

@@ -215,6 +215,24 @@ class RequestLogController extends Controller
return Helper::responseJson(data: $manipulatedIcds);
}
public function hospitals(){
$organizations = Organization::query()
->where([
'type' => 'hospital',
'status' => 'active',
])
->get();
$manipulatedOrganizations = $organizations->map(function ($organization) {
// Contoh manipulasi, tambahkan atau ubah properti sesuai kebutuhan
return [
'value' => $organization->id, // Ganti dengan properti yang sesuai dari model Icd
'label' => $organization->name, // Ganti dengan properti yang sesuai dari model Icd
];
});
return Helper::responseJson(data: $manipulatedOrganizations);
}
/**
* Show the form for editing the specified resource.
* @param int $id
@@ -255,6 +273,14 @@ class RequestLogController extends Controller
$requestLog->catatan = $request->catatan;
}
if (!empty($request->billing_no)) {
$requestLog->billing_no = $request->billing_no;
}
if (!empty($request->invoice_no)) {
$requestLog->invoice_no = $request->invoice_no;
}
if (!empty($request->reason)) {
$requestLog->reason = $request->reason;
}
@@ -301,10 +327,12 @@ class RequestLogController extends Controller
$requestLog = RequestLog::findOrFail($id);
$requestLog->status_final_log = null;
$requestLog->final_log = 0;
$requestLog->reason_final = 'Reason Delete ' .$request->reason;
$requestLog->reason_final = 'Reason Delete Final LOG' .$request->reason;
$requestLog->save();
// Hapus semua manfaat log permintaan terkait
RequestLogBenefit::where('request_log_id', $id)->delete();
return response()->json([
'error' => false,
'message' => 'Delete Final LOG',
@@ -406,7 +434,13 @@ class RequestLogController extends Controller
// Update Request LOG untuk lanjut ke Final LOG
// if (!empty($request->catatan)) {
$requestLog->catatan = $request->catatan;
// }
}
if (!empty($request->billing_no)) {
$requestLog->billing_no = $request->billing_no;
}
if (!empty($request->invoice_no)) {
$requestLog->invoice_no = $request->invoice_no;
}
if ($request->discharge_date) {
$requestLog->discharge_date = $request->discharge_date;
}