diff --git a/Modules/HospitalPortal/Http/Controllers/ApotekController.php b/Modules/HospitalPortal/Http/Controllers/ApotekController.php
index 822d178d..3322e795 100644
--- a/Modules/HospitalPortal/Http/Controllers/ApotekController.php
+++ b/Modules/HospitalPortal/Http/Controllers/ApotekController.php
@@ -52,9 +52,12 @@ class ApotekController extends Controller
});
})
->when($request->input('status'), function ($query, $status) {
- $query->where(function ($query) use ($status) {
- $query->where('tx_prescription_orders.sStatus', '=', $status);
- });
+ // Apply the filter if 'status' has a value
+ if ($status !== 'all') {
+ $query->where(function ($query) use ($status) {
+ $query->where('tx_prescription_orders.sStatus', '=', $status);
+ });
+ }
})
->select(
'tx_prescriptions.nID as id',
@@ -65,6 +68,15 @@ class ApotekController extends Controller
'tx_prescription_orders.nIDApotek',
'tx_prescription_orders.sStatus as status',
'tx_prescription_orders.sStatus',
+ DB::raw('
+ CASE
+ WHEN TIMESTAMPDIFF(HOUR, tx_prescriptions.dTanggalResep, NOW()) > 72 THEN ""
+ WHEN TIMESTAMPDIFF(HOUR, tx_prescriptions.dTanggalResep, NOW()) > 1 AND tx_prescription_orders.sStatus = "waiting_pharmacy" THEN "1"
+ WHEN TIMESTAMPDIFF(HOUR, tx_prescriptions.dTanggalResep, NOW()) > 2 AND tx_prescription_orders.sStatus = "order_prepared" THEN "2"
+ WHEN TIMESTAMPDIFF(HOUR, tx_prescriptions.dTanggalResep, NOW()) > 3 AND tx_prescription_orders.sStatus = "ready" THEN "3"
+ ELSE ""
+ END AS alert
+ '),
DB::raw('
CASE
WHEN tx_prescription_orders.sStatus = "waiting_pharmacy" THEN "Diterima"
@@ -234,6 +246,14 @@ class ApotekController extends Controller
$item->apotek = $organizations->get($item->nIDApotek, '-'); // Default to 'Unknown' if not found
return $item;
});
+ $apotek_phone = DB::connection('mysql')->table('organizations')
+ // ->leftJoin('addresses', 'addresses.id','=', 'organizations.main_address_id')
+ ->whereIn('organizations.id', $apotekIds)
+ ->pluck('organizations.phone', 'organizations.id');
+ $results->getCollection()->transform(function ($item) use ($apotek_phone) {
+ $item->phone_apotek = $apotek_phone->get($item->nIDApotek, '-'); // Default to 'Unknown' if not found
+ return $item;
+ });
// Transform results to include allergies
$results->getCollection()->transform(function ($item) use ($organizations) {
// Get the allergies for each user
@@ -378,26 +398,26 @@ class ApotekController extends Controller
'dUpdateOn' => date('Y-m-d H:i:s'),
]);
- // Insert the log
+ // Insert the log
$prescriptionOrder = DB::connection('oldlms')
->table('tx_prescription_orders')
->where('tx_prescription_orders.nID', '=', $id)
->join('tx_delivery_orders', 'tx_delivery_orders.nIDPrescriptionOrder', '=', 'tx_prescription_orders.nID')
->select('tx_prescription_orders.*', 'tx_delivery_orders.*', 'tx_delivery_orders.nID as nIDDelivery') // Add specific columns you want to select
->first();
-
+
if ($prescriptionOrder) {
$createdBy = $prescriptionOrder->sCreateBy;
$nIDPrescription = $prescriptionOrder->nIDPrescription;
$nIDDeliveryOrder = $prescriptionOrder->nIDDelivery;
-
+
// Insert data into the tx_delivery_log table
DB::connection('oldlms')->table('tx_delivery_log')->insert([
'sStatus' => $prescriptionOrder->sDeliveryStatus,
'sStatusPrescription' => $status,
'nIDDeliveryOrder' => $nIDDeliveryOrder,
'nIDPrescription' => $nIDPrescription,
- 'dCreatedOn' => now(),
+ 'dCreatedOn' => now(),
]);
}
@@ -697,5 +717,5 @@ class ApotekController extends Controller
$uuidV5 = Uuid::uuid5($namespace, $id_prescription_order);
return $uuidV5->toString();
}
-
+
}
diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogController.php b/Modules/Internal/Http/Controllers/Api/RequestLogController.php
index 2f4804bb..ae1eeb3a 100755
--- a/Modules/Internal/Http/Controllers/Api/RequestLogController.php
+++ b/Modules/Internal/Http/Controllers/Api/RequestLogController.php
@@ -307,6 +307,10 @@ class RequestLogController extends Controller
$requestLog->reason = $request->reason;
}
+ if (!empty($request->type_of_member)){
+ $requestLog->type_of_member = $request->type_of_member;
+ }
+
if ($request->status){
$requestLog->status = $request->status;
$requestLog->approved_by = auth()->user()->id;
diff --git a/Modules/Internal/Transformers/RequestLogShowResource.php b/Modules/Internal/Transformers/RequestLogShowResource.php
index dc46b978..8aa77dfb 100755
--- a/Modules/Internal/Transformers/RequestLogShowResource.php
+++ b/Modules/Internal/Transformers/RequestLogShowResource.php
@@ -126,6 +126,7 @@ class RequestLogShowResource extends JsonResource
'code' => $requestLog['code'],
'code_claim' => $claimCode,
'member_id' => $requestLog['member']['member_id'],
+ 'type_of_member' => $requestLog['type_of_member'],
'corporate_id' => $corporateId,
'policy_number' =>$policyNumber->code ? $policyNumber->code : '-',
'name' => $requestLog['member']['name'],
diff --git a/app/Models/RequestLog.php b/app/Models/RequestLog.php
index 5c2e47a8..08e45eb7 100755
--- a/app/Models/RequestLog.php
+++ b/app/Models/RequestLog.php
@@ -51,6 +51,7 @@ class RequestLog extends Model
'approved_final_log_at',
'created_final_at',
'created_final_by',
+ 'type_of_member'
];
protected $hidden = [
diff --git a/database/seeders/ApotekMandiriInhealtSeeder.php b/database/seeders/ApotekMandiriInhealtSeeder.php
index ca5158af..c49f249b 100644
--- a/database/seeders/ApotekMandiriInhealtSeeder.php
+++ b/database/seeders/ApotekMandiriInhealtSeeder.php
@@ -16,7 +16,7 @@ class ApotekMandiriInhealtSeeder extends Seeder
*/
public function run()
{
- $file_path = resource_path('files/data-apotik-layanan-pharmacy-delivery.xlsx');
+ $file_path = resource_path('files/data-apotik-layanan-pharmacy-delivery-update.xlsx');
$reader = ReaderEntityFactory::createReaderFromFile($file_path);
$reader->open($file_path);
diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogConfirmation.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogConfirmation.tsx
index 75134e54..92d27c39 100755
--- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogConfirmation.tsx
+++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogConfirmation.tsx
@@ -111,6 +111,10 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
Member ID
{requestLog?.member_id}
+
+ Member Of Type
+ {requestLog?.type_of_member}
+
Policy Number
{requestLog?.policy_number}
diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx
index cc97e63e..c0be7e85 100755
--- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx
+++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx
@@ -200,6 +200,10 @@ export default function Detail() {
Member ID
{requestLog?.member_id}
+
+ Type Of Member
+ {requestLog?.type_of_member}
+
Policy Number
{requestLog?.policy_number}
diff --git a/frontend/dashboard/src/pages/CustomerService/Request/Components/DialogConfirmation.tsx b/frontend/dashboard/src/pages/CustomerService/Request/Components/DialogConfirmation.tsx
index 2523e229..068c8be2 100755
--- a/frontend/dashboard/src/pages/CustomerService/Request/Components/DialogConfirmation.tsx
+++ b/frontend/dashboard/src/pages/CustomerService/Request/Components/DialogConfirmation.tsx
@@ -1,7 +1,7 @@
import MuiDialog from "@/components/MuiDialog";
import { Button, Card, Checkbox, DialogActions, Grid, TextField, TextareaAutosize, Typography } from "@mui/material";
import { Paper } from "@mui/material";
-import { Stack } from '@mui/material';
+import { Stack, Select, MenuItem } from '@mui/material';
import React, { useEffect, useState } from 'react';
import { DetailRequestLogType } from "../Model/Types";
import { fDateTimesecond, toTitleCase } from "@/utils/formatTime";
@@ -28,6 +28,7 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
keterangan: '',
hak_kamar_pasien: '',
penempatan_kamar: '',
+ type_of_member: ''
});
useEffect(() => {
@@ -90,6 +91,7 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
keterangan: '',
hak_kamar_pasien: '',
penempatan_kamar: '',
+ type_of_member: ''
});
};
@@ -123,6 +125,10 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
Member ID
{requestLog?.member_id}
+
+ Type of Member
+ {requestLog?.type_of_member}
+
Policy Number
{requestLog?.policy_number}
@@ -183,6 +189,22 @@ export default function DialogConfirmation({requestLog, setOpenDialog, openDialo
onChange={(e) => handleChange('hak_kamar_pasien', e.target.value)}
/>
+
+ Type Of Member
+
+
Penempatan Kamar
Member ID
{requestLog?.member_id}
+
+ Type Of Member
+ {requestLog?.type_of_member}
+
Policy Number
{requestLog?.policy_number}
diff --git a/frontend/hospital-portal/src/components/BaseTablePagination.tsx b/frontend/hospital-portal/src/components/BaseTablePagination.tsx
index 3af750e6..a0d67ca0 100755
--- a/frontend/hospital-portal/src/components/BaseTablePagination.tsx
+++ b/frontend/hospital-portal/src/components/BaseTablePagination.tsx
@@ -13,7 +13,7 @@ export default function BaseTablePagination({
+ {/* Check if any row has an alert and display a warning message */}
+ {rows.some(row => row.alert) && (
+
+
+ {localeData.txtAttention}
+ {localeData.txtAttentionInfo}
+
+
+
+ )}
{/* Field 1 */}
@@ -530,6 +541,7 @@ const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready',
{/* Table */}
+
{/* Table Header */}
{/* End Table Header */}
@@ -544,7 +556,10 @@ const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready',
) : rows && rows.length >= 1 ? (
rows.map((row, rowIndex) => (
<>
-
+
{!selected.useSelected ? (
''
): (selected.useSelected && row.check_status === 'approved' && !row.check_claim ? (
@@ -651,6 +666,11 @@ const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready',
+
+ setOpenRowId(null)}>
+
+
+
{/* Icon inside a Box for spacing and alignment */}
@@ -922,9 +942,9 @@ const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready',
{/* Close Button on the Left */}
- */}
{/* Accept Button on the Right */}
{/* {row.button_accept && formattedRoleName === 'admin-apotek' && allowedStatusesForApotek.includes(row.sStatus) ? (
setDialogIDRow(row.id === dialogIDRow ? null : row.id)}>
diff --git a/frontend/hospital-portal/src/lang/en-US.json b/frontend/hospital-portal/src/lang/en-US.json
index 1e0de623..88f5da3a 100755
--- a/frontend/hospital-portal/src/lang/en-US.json
+++ b/frontend/hospital-portal/src/lang/en-US.json
@@ -83,6 +83,7 @@
"txtPrescriptionDate" : "Date",
"txtPrescriptionPatient" : "Patient",
"txtPrescriptionPharmacy" : "Pharmacy",
+ "txtPrescriptionPharmacyPhone" : "Pharmacy Phone",
"txtPrescriptionDetail" : "Detail",
"txtPrescriptionDownload" : "Download Prescription",
"txtProviderDoctorInformation" : "Provider & Doctor Information",
@@ -135,6 +136,9 @@
"txtFindingDriver": "Finding a driver...",
"txtDriverFound": "The driver’s been grabbed with the ID",
"txtButtonClose": "Close",
- "txtLabelFailed": "Failed"
+ "txtLabelFailed": "Failed",
+ "txtAttention": "Attention",
+ "txtAttentionInfo": "There are pending orders that require approval."
+
}
diff --git a/frontend/hospital-portal/src/lang/id-ID.json b/frontend/hospital-portal/src/lang/id-ID.json
index 7db6d659..ac3e7f70 100755
--- a/frontend/hospital-portal/src/lang/id-ID.json
+++ b/frontend/hospital-portal/src/lang/id-ID.json
@@ -83,6 +83,7 @@
"txtPrescriptionDate" : "Tanggal",
"txtPrescriptionPatient" : "Pasien",
"txtPrescriptionPharmacy" : "Apotek",
+ "txtPrescriptionPharmacyPhone" : "No. HP Apotek",
"txtPrescriptionDetail" : "Detail",
"txtPrescriptionDownload" : "Download Resep",
"txtProviderDoctorInformation" : "Informasi Provider & Dokter",
@@ -135,5 +136,7 @@
"txtFindingDriver" : "Sedang mencari driver...",
"txtDriverFound" : "Driver sudah didapat dengan ID",
"txtButtonClose": "Tutup",
- "txtLabelFailed": "Gagal Pengiriman"
+ "txtLabelFailed": "Gagal Pengiriman",
+ "txtAttention": "Perhatian",
+ "txtAttentionInfo": "Terdapat pesanan pending mohon untuk segera di approve."
}
diff --git a/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx b/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx
index 78fca2cf..1a13577a 100644
--- a/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx
+++ b/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx
@@ -289,6 +289,13 @@ export default function TableList() {
label: localeData.txtPrescriptionPharmacy,
isSort: true,
},
+ // Conditionally include button_accept if the role is 'admin-apotek'
+ ...(formattedRoleName === 'cs-lms' ? [{
+ id: 'phone_apotek',
+ align: 'center',
+ label: localeData.txtPrescriptionPharmacyPhone,
+ isSort: false,
+ }] : []),
{
id: 'status',
align: 'center',
@@ -329,7 +336,8 @@ export default function TableList() {
: Object.fromEntries([...searchParams.entries(), ['order', order], ['orderBy', orderBy]]);
const response = await axios.get(`/get-prescription-orders`, {
- params: { ...parameters, type: 'prescription-orders' },
+ params: { ...parameters, search:searchText, order: order,
+ orderBy: orderBy, status:statusValue, type: 'prescription-orders' },
});
setDataTableData(response.data);
setData(
@@ -402,7 +410,7 @@ export default function TableList() {
action:
-