Merge remote-tracking branch 'origin/staging' into origin/production
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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')
|
||||
]);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user