penyesuaian kode claim

This commit is contained in:
2024-02-20 09:00:36 +07:00
parent 9cfbfec8c0
commit 8895311a8f

View File

@@ -7,6 +7,9 @@ use App\Helpers\Helper;
use App\Models\ClaimRequest; use App\Models\ClaimRequest;
use App\Models\File; use App\Models\File;
use App\Models\Member; use App\Models\Member;
use App\Models\RequestLog;
use App\Models\Organization;
use App\Services\ClaimRequestService; use App\Services\ClaimRequestService;
use App\Services\ClaimService; use App\Services\ClaimService;
use Exception; use Exception;
@@ -26,7 +29,7 @@ class ClaimRequestController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* @return Renderable * @return Renderable
*/ */
private static $code_prefix = 'CRQ-H'; private static $code_prefix = 'CLAIM';
public function index(request $request) public function index(request $request)
{ {
$claimRequests = ClaimRequest::query() $claimRequests = ClaimRequest::query()
@@ -85,21 +88,26 @@ class ClaimRequestController extends Controller
else else
{ {
$check_claim_requests = DB::table('claim_requests') $check_claim_requests = DB::table('claim_requests')
->where('claim_requests.request_log_id', '=', $request->request_logs_id) ->where('claim_requests.request_log_id', '=', $request->request_logs_id)
->first(); ->first();
if(!$check_claim_requests) if(!$check_claim_requests)
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$code = $this->getNextCode(); $code = $this->getNextCode($request->request_logs_id);
$member = Member::find($request->member_id); $member = Member::find($request->member_id);
$requestLogData = RequestLog::where('id',$request->request_logs_id)->first();
$organization = Organization::where(['id' => $requestLogData->organization_id, 'type' => 'hospital'])->first('code');
$provideCode = $organization ? $organization->code : '';
$newClaimRequest = ClaimRequestService::storeClaimRequest( $newClaimRequest = ClaimRequestService::storeClaimRequest(
row: [], row: [],
code: $code, code: $code,
member: $member, member: $member,
paymentType: 'reimbursement', paymentType: 'cashless',
serviceCode: $request->service_code, serviceCode: $request->service_code,
requestLogID: $request->request_logs_id, requestLogID: $request->request_logs_id,
organization_code: $provideCode,
); );
// Log History // Log History
$newClaimRequest->histories()->create([ $newClaimRequest->histories()->create([
@@ -228,21 +236,36 @@ class ClaimRequestController extends Controller
return $claimRequest; return $claimRequest;
} }
public static function getNextCode() public static function getNextCode($request_log_id = 0)
{ {
$last_number = ClaimRequest::withTrashed()->max('code'); $last_numeric_code = ClaimRequest::select(DB::raw('MAX(CAST(SUBSTRING_INDEX(code, ".", -1) AS SIGNED)) as max_numeric_code'))
$last_number_parts = explode('-', $last_number); ->whereRaw('SUBSTRING_INDEX(code, ".", -1) REGEXP "^[0-9]+$"')
$next_number = count($last_number_parts) < 3 ? 1 : ((int) $last_number_parts[2] + 1); ->value('max_numeric_code');
return self::makeCode($next_number); // $next_number = 1;
if ($last_numeric_code) {
// // Jika ada kode sebelumnya, pecah kode dan tambahkan 1 ke angka terakhir
// $parts = explode('-', $last_code);
// $last_number = (int) end($parts);
$next_number = $last_numeric_code + 1;
} else {
$next_number = 1;
}
return self::makeCode($next_number, $request_log_id);
} }
public static function makeCode($next_number) public static function makeCode($next_number, $request_log_id)
{ {
// Pastikan $next_number adalah integer positif // Pastikan $next_number adalah integer positif
$next_number = max(1, (int) $next_number); $next_number = max(1, (int) $next_number);
$requestLogData = RequestLog::where('id', $request_log_id)->first();
$organization = Organization::where(['id' => $requestLogData->organization_id, 'type' => 'hospital'])->first('code');
$provideCode = $organization ? $organization->code : '';
$member = Member::with('currentCorporate')->where(['id' => $requestLogData->member_id])->first();
$sparator = '.';
$date = date('ymd');
// Menghasilkan kode dengan format yang diinginkan // Menghasilkan kode dengan format yang diinginkan
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT); return self::$code_prefix . $sparator. 'H' . $sparator. $provideCode . $sparator. $date. $sparator . $member->currentPolicy->code . $sparator. $member->member_id . $sparator. str_pad($next_number, 5, '0', STR_PAD_LEFT);
return self::$code_prefix . '.' . str_pad($next_number, 6, '0', STR_PAD_LEFT);
} }
public function get_claim_requests(Request $request) public function get_claim_requests(Request $request)