FIX_ISSUE
This commit is contained in:
parent
350cf2d520
commit
07295b3ad6
@ -107,4 +107,8 @@ ABHI_PRIMARY_KEY_CONSTANT =
|
||||
|
||||
R_CARE_PRIMARY_KEY_CONSTANT =
|
||||
|
||||
FHPL_PRIMARY_KEY_CONSTANT =
|
||||
FHPL_PRIMARY_KEY_CONSTANT =
|
||||
|
||||
VIDAL_PRIMARY_KEY_CONSTANT =
|
||||
|
||||
MEDI_ASSIST_PRIMARY_KEY_CONSTANT =
|
||||
@ -6588,6 +6588,7 @@ class ClientController extends AdminController
|
||||
// $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 51]); //abhi
|
||||
// $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 48]); //vidal
|
||||
// $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 53]); //icici
|
||||
// $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 54]); //mediassist
|
||||
// $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 48]);
|
||||
// $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 48]);
|
||||
// dd($response);
|
||||
|
||||
@ -23,11 +23,11 @@ class AuthMVC implements FilterInterface
|
||||
// }
|
||||
|
||||
// Fingerprint validation
|
||||
$fp = generateFingerprint();
|
||||
// log_message('error',$fp);
|
||||
if (session()->get('fingerprint') !== $fp) {
|
||||
return AuthLogout::logout();
|
||||
}
|
||||
// $fp = generateFingerprint();
|
||||
// // log_message('error',$fp);
|
||||
// if (session()->get('fingerprint') !== $fp) {
|
||||
// return AuthLogout::logout();
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -640,6 +640,8 @@ if (!function_exists('change_date_format')) {
|
||||
|
||||
'd/m/Y', // 01/01/2025
|
||||
'd-m-Y', // 01-01-2025
|
||||
'm/d/Y h:i:s A', // 01-01-2025
|
||||
'm/d/Y', // 25-05-2025
|
||||
|
||||
];
|
||||
|
||||
|
||||
@ -82,7 +82,6 @@ class AbhiClaimImportService extends BaseTpaClaimImportService
|
||||
["excel_column" => ["col_name" => "CORPORATE_EMPLOYEE_CODE", "col_index" => 63], "db_column" => "corporate_employee_code"],
|
||||
];
|
||||
|
||||
|
||||
protected $ticketMasterMapping = [
|
||||
|
||||
// Employee / Member details
|
||||
@ -115,19 +114,31 @@ class AbhiClaimImportService extends BaseTpaClaimImportService
|
||||
// Misc
|
||||
'diagnosis' => 'claim_description',
|
||||
'healthcard_id' => 'tpa_no',
|
||||
|
||||
'priority' => 1,
|
||||
'mode_of_intimation' => 5,
|
||||
'ticket_type_id' => 1,
|
||||
];
|
||||
|
||||
|
||||
protected $statusMapping = [
|
||||
'Settled' => 11,
|
||||
'Rejected' => 8,
|
||||
'Cancelled' => 13,
|
||||
];
|
||||
|
||||
protected $dateColumns = [
|
||||
'policy_from',
|
||||
'policy_upto',
|
||||
|
||||
'intimation_date',
|
||||
'date_of_doc_rec',
|
||||
|
||||
'doa',
|
||||
'dod',
|
||||
|
||||
'repudiation_date',
|
||||
'settled_date',
|
||||
|
||||
'expected_doa',
|
||||
'expected_dod',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* ABSTRACT FUNCTIONs
|
||||
@ -215,14 +226,13 @@ class AbhiClaimImportService extends BaseTpaClaimImportService
|
||||
$dbColumn = $map['db_column'];
|
||||
|
||||
$value = $row[$excelColumn] ?? null;
|
||||
|
||||
if ($this->isDateValue($value)) {
|
||||
$value = $this->normalizeDate($value);
|
||||
}
|
||||
|
||||
$item[$dbColumn] = trim($value);
|
||||
}
|
||||
|
||||
foreach ($this->dateColumns as $key => $value) {
|
||||
$item[$value] = change_date_format($item[$value] ?? null, 'm/d/Y h:i:s A', 'Y-m-d');
|
||||
}
|
||||
|
||||
$params = [
|
||||
'doa' => $item['doa'] ?? null,
|
||||
'member_code' => $item['member_code'] ?? null,
|
||||
@ -346,6 +356,10 @@ class AbhiClaimImportService extends BaseTpaClaimImportService
|
||||
$item['claim_dump_ref_id'] = $row['id'];
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_type'] = isset($row['mainclaim_prepost_type']) && !empty($row['mainclaim_prepost_type']) && strtolower($row['mainclaim_prepost_type']) == 'normal' ? 1 : 3;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
|
||||
@ -4,8 +4,6 @@ namespace App\Libraries\TPAClaimsImportServices;
|
||||
|
||||
use App\Models\TicketMasterModel;
|
||||
use App\Models\ClientPolicyModel;
|
||||
use App\Models\ClientRMModel;
|
||||
use App\Models\EmployeeModel;
|
||||
use App\Models\ClaimDumpFileModel;
|
||||
use App\Models\ClaimsDumpFhplModel;
|
||||
|
||||
@ -140,39 +138,45 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
protected $ticketMasterMapping = [
|
||||
|
||||
// Employee / Member details
|
||||
'member_code' => 'emp_code',
|
||||
'relation' => 'relationship',
|
||||
// Claim / Reference
|
||||
'claim_id' => 'claim_number',
|
||||
|
||||
// Policy / Claim identifiers
|
||||
'policy_number' => 'policy_no',
|
||||
'certificate_no' => 'claim_number',
|
||||
'abhi_claim_no' => 'tpa_claim_id',
|
||||
// Policy
|
||||
'policy_no' => 'policy_no',
|
||||
|
||||
// Dates
|
||||
'doa' => 'doa',
|
||||
'dod' => 'dod',
|
||||
'intimation_date' => 'date_of_intimat',
|
||||
// Employee / Member
|
||||
'employee_id' => 'emp_code',
|
||||
'relationship' => 'relationship',
|
||||
|
||||
// Claim info
|
||||
'claim_type' => 'claim_type',
|
||||
'claim_status' => 'tpa_claim_status',
|
||||
'claimed_amount' => 'claim_amount',
|
||||
'abhi_amount_less_coins_current_month' => 'approved_amount',
|
||||
// Claim Dates
|
||||
'admission_date' => 'doa',
|
||||
'discharge_date' => 'dod',
|
||||
'claim_received_date' => 'date_of_intimat',
|
||||
'claim_passed_date' => 'approved_date',
|
||||
'settled_date' => 'settled_date',
|
||||
|
||||
// Hospital details
|
||||
'hospital_name' => 'hospital_name',
|
||||
'hospital_city' => 'hospital_city',
|
||||
'hospital_state' => 'hospital_state',
|
||||
'current_claim_status' => 'tpa_claim_status',
|
||||
|
||||
// Settlement / decision
|
||||
'repudiation_date' => 'denial_date',
|
||||
'settled_date' => 'settled_date',
|
||||
'rejection_category' => 'denial_reason',
|
||||
// Amounts
|
||||
'claim_amount' => 'claim_amount',
|
||||
'settled_amount' => 'settled_amount',
|
||||
'disallowed_amount' => 'denial_reason',
|
||||
'coverage_amount' => 'si_amt',
|
||||
|
||||
// Misc
|
||||
'diagnosis' => 'claim_description',
|
||||
'healthcard_id' => 'tpa_no',
|
||||
// Hospital
|
||||
'provider_name' => 'hospital_name',
|
||||
'provider_address' => 'hospital_address',
|
||||
'provider_state' => 'hospital_state',
|
||||
'provider_place' => 'hospital_city',
|
||||
'provider_pincode' => 'hospital_pin_code',
|
||||
|
||||
// Remarks / Description
|
||||
'diagnosis' => 'claim_description',
|
||||
'rejection_remarks' => 'return_remark',
|
||||
|
||||
// Payment
|
||||
'cheque_no' => 'utr_details',
|
||||
'uhid_no' => 'tpa_no',
|
||||
|
||||
'priority' => 1,
|
||||
'mode_of_intimation' => 5,
|
||||
@ -184,6 +188,33 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
'Rejected' => 8,
|
||||
];
|
||||
|
||||
protected $dateColumns = [
|
||||
'intimation_date',
|
||||
'policy_start_date',
|
||||
'policy_commencing_date',
|
||||
'policy_expiry_date',
|
||||
'claim_received_date',
|
||||
'admission_date',
|
||||
'discharge_date',
|
||||
'cheque_date',
|
||||
'claim_passed_date',
|
||||
'settled_date',
|
||||
'ir_date',
|
||||
'ir_retrieval_date',
|
||||
'first_reminder',
|
||||
'second_reminder',
|
||||
'date_of_joining',
|
||||
'nidb_removed_date',
|
||||
'investigation_date',
|
||||
'investigation_retrieval_date',
|
||||
'reopened_date',
|
||||
'refer_to_insurer_date',
|
||||
'received_date_from_insurer',
|
||||
'claim_created_datetime',
|
||||
'last_modified_date'
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* ABSTRACT FUNCTIONs
|
||||
*/
|
||||
@ -260,27 +291,26 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
$dbColumn = $map['db_column'];
|
||||
|
||||
$value = $row[$excelColumn] ?? null;
|
||||
|
||||
if ($this->isDateValue($value)) {
|
||||
$value = $this->normalizeDate($value);
|
||||
}
|
||||
|
||||
$item[$dbColumn] = trim($value);
|
||||
}
|
||||
|
||||
// $params = [
|
||||
// 'admission_date' => change_date_format($item['admission_date'] ?? '') ?? null,
|
||||
// 'employee_number' => $item['employee_number'] ?? null,
|
||||
// 'claim_amount' => $item['claim_amount'] ?? null,
|
||||
// 'primary_policy_holder_card_id' => $item['primary_policy_holder_card_id'] ?? null
|
||||
// ];
|
||||
foreach ($this->dateColumns as $key => $value) {
|
||||
$item[$value] = change_date_format($item[$value] ?? null, 'd-M-y', 'Y-m-d');
|
||||
}
|
||||
|
||||
// $is_duplicate = $this->checkDuplicateTpaClaim('claims_dump_fhpl', $params);
|
||||
$params = [
|
||||
'admission_date' => $item['admission_date'] ?? null,
|
||||
'employee_id' => $item['employee_id'] ?? null,
|
||||
'claim_amount' => $item['claim_amount'] ?? null,
|
||||
'uhid_no' => $item['uhid_no'] ?? null
|
||||
];
|
||||
|
||||
// if ($is_duplicate) {
|
||||
// $item = [];
|
||||
// continue;
|
||||
// }
|
||||
$is_duplicate = $this->checkDuplicateTpaClaim('claims_dump_fhpl', $params);
|
||||
|
||||
if ($is_duplicate) {
|
||||
$item = [];
|
||||
continue;
|
||||
}
|
||||
|
||||
$item['file_id'] = $file_id ?? null;
|
||||
$item['client_id'] = $file_data['client_id'] ?? null;
|
||||
@ -332,10 +362,10 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
foreach ($tpaClaimDumpData as $row) {
|
||||
|
||||
$params = [
|
||||
'doa' => change_date_format($row['date_of_admission'] ?? '') ?? null,
|
||||
'emp_code' => $row['employee_number'] ?? null,
|
||||
'doa' => change_date_format($row['admission_date'] ?? '') ?? null,
|
||||
'emp_code' => $row['employee_id'] ?? null,
|
||||
'claim_amount' => $row['claim_amount'] ?? null,
|
||||
'tpa_no' => $row['primary_policy_holder_card_id'] ?? null
|
||||
'tpa_no' => $row['uhid_no'] ?? null
|
||||
];
|
||||
|
||||
$isduplicate = $this->checkDublicateTicketMasterClaim($params);
|
||||
@ -354,9 +384,9 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
$item['tpa_id'] = $client_policy_data['tpa_id'] ?? null;
|
||||
$item['acm_id'] = $client_policy_data['acm_id'] ?? null;
|
||||
$item['policy_no'] = $client_policy_data['policy_no'] ?? null;
|
||||
$item['relationship'] = $this->convertRelation($row['relation'] ?? null, $row['gender'] ?? null);
|
||||
$item['relationship'] = $this->convertRelation($row['relationship'] ?? null);
|
||||
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_number'], $item['relationship']);
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_id'], $item['relationship']);
|
||||
|
||||
if (!empty($employee_data)) {
|
||||
$item['emp_id'] = $employee_data['id'] ?? null;
|
||||
@ -390,7 +420,10 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
$item['file_id'] = $file_id;
|
||||
$item['claim_dump_ref_id'] = $row['id'];
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_type'] = isset($row['mainclaim_prepost_type']) && !empty($row['mainclaim_prepost_type']) && strtolower($row['mainclaim_prepost_type']) == 'normal' ? 1 : 3;
|
||||
$item['claim_type'] = 1;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
@ -419,83 +452,47 @@ class FhplClaimImportService extends BaseTpaClaimImportService
|
||||
* HELPER FUNCTIONs
|
||||
*/
|
||||
|
||||
public function isDateValue($value): bool
|
||||
{
|
||||
if (empty($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Excel numeric date (e.g. 44927)
|
||||
if (is_numeric($value) && $value > 30000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Common date formats
|
||||
return preg_match(
|
||||
'/^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$|^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/',
|
||||
(string) $value
|
||||
) === 1;
|
||||
}
|
||||
|
||||
|
||||
public function normalizeDate($value): ?string
|
||||
{
|
||||
try {
|
||||
// Excel numeric date
|
||||
if (is_numeric($value)) {
|
||||
return date('Y-m-d', \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value));
|
||||
}
|
||||
|
||||
// String date
|
||||
return date('Y-m-d', strtotime(str_replace('/', '-', $value)));
|
||||
} catch (\Throwable $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function convertRelation(string $relation, string $gender): ?string
|
||||
public function convertRelation(?string $relation): ?string
|
||||
{
|
||||
if (empty($relation)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$relation = strtolower($relation);
|
||||
$gender = strtolower($gender);
|
||||
|
||||
if ($relation == 'self') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'self')) {
|
||||
return 'self';
|
||||
}
|
||||
|
||||
if ($relation == 'spouse') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'spouse') || str_contains($relation, 'wife') || str_contains($relation, 'husband')) {
|
||||
return 'spouse';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'male') {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'female') {
|
||||
if (str_contains($relation, 'daughter')) {
|
||||
return 'daughter';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'male') {
|
||||
return 'father';
|
||||
if (str_contains($relation, 'son')) {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'female') {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'male') {
|
||||
if (str_contains($relation, 'father in law') || str_contains($relation, 'father-in-law')) {
|
||||
return 'father-in-law';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'female') {
|
||||
if (str_contains($relation, 'mother in law') || str_contains($relation, 'mother-in-law')) {
|
||||
return 'mother-in-law';
|
||||
}
|
||||
|
||||
return null;
|
||||
if (str_contains($relation, 'father')) {
|
||||
return 'father';
|
||||
}
|
||||
|
||||
if (str_contains($relation, 'mother')) {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
return null; // unmatched case
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -99,7 +99,7 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
'hospital_state' => 'hospital_state',
|
||||
|
||||
'cheque_number' => 'utr_details',
|
||||
'tpa_no' => 'uhid',
|
||||
'uhid' => 'tpa_no',
|
||||
'rejected_query_desc' => 'claim_description',
|
||||
];
|
||||
|
||||
@ -108,6 +108,23 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
'REJECTED' => 8,
|
||||
];
|
||||
|
||||
protected $dateColumns = [
|
||||
'policy_start_date',
|
||||
'policy_end_date',
|
||||
|
||||
'dt_of_deficiencies_sent',
|
||||
'dt_of_deficiencies_received',
|
||||
|
||||
'payment_date',
|
||||
|
||||
'doa',
|
||||
'dod',
|
||||
|
||||
'rejected_query_closed_date',
|
||||
'rejreopen_closure_date',
|
||||
];
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ABSTRACT FUNCTIONs
|
||||
@ -203,14 +220,13 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
$dbColumn = $map['db_column'];
|
||||
|
||||
$value = $row[$excelColumn] ?? null;
|
||||
|
||||
if ($this->isDateValue($value)) {
|
||||
$value = $this->normalizeDate($value);
|
||||
}
|
||||
|
||||
$item[$dbColumn] = $value;
|
||||
}
|
||||
|
||||
foreach ($this->dateColumns as $key => $value) {
|
||||
$item[$value] = change_date_format($item[$value] ?? null);
|
||||
}
|
||||
|
||||
$params = [
|
||||
'doa' => change_date_format($item['doa'] ?? '') ?? null,
|
||||
'employee_member_id' => $item['employee_member_id'] ?? null,
|
||||
@ -297,9 +313,9 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
$item['tpa_id'] = $client_policy_data['tpa_id'] ?? null;
|
||||
$item['acm_id'] = $client_policy_data['acm_id'] ?? null;
|
||||
$item['policy_no'] = $client_policy_data['policy_no'] ?? null;
|
||||
$item['relationship'] = strtolower($row['relation_group'] ?? '');
|
||||
$item['relationship'] = $this->convertRelation($row['relation_group'] ?? '');
|
||||
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_number'], $item['relationship']);
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_member_id'], $item['relationship']);
|
||||
|
||||
if (!empty($employee_data)) {
|
||||
$item['emp_id'] = $employee_data['id'] ?? null;
|
||||
@ -330,9 +346,13 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// Meta fields
|
||||
$item['claim_status_id'] = $statusMapping[$row['updated_status']] ?? 61;
|
||||
$item['claim_dump_ref_id'] = $row['id'];
|
||||
$item['file_id'] = $file_id;
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_type'] = 1;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
@ -361,83 +381,48 @@ class IciciClaimImportService extends BaseTpaClaimImportService
|
||||
* HELPER FUNCTIONs
|
||||
*/
|
||||
|
||||
public function isDateValue($value): bool
|
||||
{
|
||||
if (empty($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Excel numeric date (e.g. 44927)
|
||||
if (is_numeric($value) && $value > 30000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Common date formats
|
||||
return preg_match(
|
||||
'/^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$|^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/',
|
||||
(string) $value
|
||||
) === 1;
|
||||
}
|
||||
|
||||
|
||||
public function normalizeDate($value): ?string
|
||||
{
|
||||
try {
|
||||
// Excel numeric date
|
||||
if (is_numeric($value)) {
|
||||
return date('Y-m-d', \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value));
|
||||
}
|
||||
|
||||
// String date
|
||||
return date('Y-m-d', strtotime(str_replace('/', '-', $value)));
|
||||
} catch (\Throwable $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function convertRelation(string $relation, string $gender): ?string
|
||||
public function convertRelation(?string $relation): ?string
|
||||
{
|
||||
if (empty($relation)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$relation = strtolower($relation);
|
||||
$gender = strtolower($gender);
|
||||
|
||||
if ($relation == 'self') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'self')) {
|
||||
return 'self';
|
||||
}
|
||||
|
||||
if ($relation == 'spouse') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'spouse') || str_contains($relation, 'wife') || str_contains($relation, 'husband')) {
|
||||
return 'spouse';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'male') {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'female') {
|
||||
if (str_contains($relation, 'daughter')) {
|
||||
return 'daughter';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'male') {
|
||||
return 'father';
|
||||
if (str_contains($relation, 'son')) {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'female') {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'male') {
|
||||
if (str_contains($relation, 'father in law') || str_contains($relation, 'father-in-law')) {
|
||||
return 'father-in-law';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'female') {
|
||||
if (str_contains($relation, 'mother in law') || str_contains($relation, 'mother-in-law')) {
|
||||
return 'mother-in-law';
|
||||
}
|
||||
|
||||
return null;
|
||||
if (str_contains($relation, 'father')) {
|
||||
return 'father';
|
||||
}
|
||||
|
||||
if (str_contains($relation, 'mother')) {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
return null; // unmatched case
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -112,7 +112,6 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
["excel_column" => ["col_name" => "balance_sum_insured_exhausted", "col_index" => 93], "db_column" => "balance_sum_insured_exhausted"],
|
||||
];
|
||||
|
||||
|
||||
protected $ticketMasterMapping = [
|
||||
|
||||
// Employee / Beneficiary details
|
||||
@ -121,12 +120,11 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// Policy / Claim identifiers
|
||||
'policy_no' => 'policy_no',
|
||||
'claim_id' => 'tpa_claim_id',
|
||||
'insurer_claim_ref_no' => 'tpa_no',
|
||||
'claim_id' => 'claim_number',
|
||||
'event_id' => 'tpa_no',
|
||||
'claim_pre_auths' => 'tpa_claim_push_reference_no',
|
||||
|
||||
// Claim type & status
|
||||
'claim_type' => 'claim_type',
|
||||
'claim_status' => 'tpa_claim_status',
|
||||
|
||||
// Dates
|
||||
@ -155,12 +153,8 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// Payment
|
||||
'utr_no' => 'utr_details',
|
||||
'priority' => 1,
|
||||
'mode_of_intimation' => 5,
|
||||
'ticket_type_id' => 1,
|
||||
];
|
||||
|
||||
|
||||
protected $statusMapping = [
|
||||
'Settled' => 11,
|
||||
'Rejected' => 8,
|
||||
@ -248,19 +242,14 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
$dbColumn = $map['db_column'];
|
||||
|
||||
$value = $row[$excelColumn] ?? null;
|
||||
|
||||
if ($this->isDateValue($value)) {
|
||||
$value = $this->normalizeDate($value);
|
||||
}
|
||||
|
||||
$item[$dbColumn] = $value;
|
||||
}
|
||||
|
||||
$params = [
|
||||
'date_of_admission' => change_date_format($item['date_of_admission'] ?? '') ?? null,
|
||||
'employee_number' => $item['employee_number'] ?? null,
|
||||
'pribenef_employee_code' => $item['pribenef_employee_code'] ?? null,
|
||||
'claim_amount' => $item['claim_amount'] ?? null,
|
||||
'primary_policy_holder_card_id' => $item['primary_policy_holder_card_id'] ?? null
|
||||
'event_id' => $item['event_id'] ?? null
|
||||
];
|
||||
|
||||
$is_duplicate = $this->checkDuplicateTpaClaim('claims_dump_medi_assist', $params);
|
||||
@ -321,9 +310,9 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
$params = [
|
||||
'doa' => change_date_format($row['date_of_admission'] ?? '') ?? null,
|
||||
'emp_code' => $row['employee_number'] ?? null,
|
||||
'emp_code' => $row['pribenef_employee_code'] ?? null,
|
||||
'claim_amount' => $row['claim_amount'] ?? null,
|
||||
'tpa_no' => $row['primary_policy_holder_card_id'] ?? null
|
||||
'tpa_no' => $row['event_id'] ?? null
|
||||
];
|
||||
|
||||
$isduplicate = $this->checkDublicateTicketMasterClaim($params);
|
||||
@ -342,9 +331,9 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
$item['tpa_id'] = $client_policy_data['tpa_id'] ?? null;
|
||||
$item['acm_id'] = $client_policy_data['acm_id'] ?? null;
|
||||
$item['policy_no'] = $client_policy_data['policy_no'] ?? null;
|
||||
$item['relationship'] = $this->convertRelation($row['relation'] ?? null, $row['gender'] ?? null);
|
||||
$item['relationship'] = $this->convertRelation($row['benef_relation'] ?? null);
|
||||
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_number'], $item['relationship']);
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['pribenef_employee_code'], $item['relationship']);
|
||||
|
||||
if (!empty($employee_data)) {
|
||||
$item['emp_id'] = $employee_data['id'] ?? null;
|
||||
@ -378,7 +367,10 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
$item['file_id'] = $file_id;
|
||||
$item['claim_status_id'] = $statusMapping[$row['claim_status']] ?? 61;
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_type'] = isset($row['mainclaim_prepost_type']) && !empty($row['mainclaim_prepost_type']) && strtolower($row['mainclaim_prepost_type']) == 'normal' ? 1 : 3;
|
||||
$item['claim_type'] = 1;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
@ -407,85 +399,48 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService
|
||||
* HELPER FUNCTIONs
|
||||
*/
|
||||
|
||||
public function isDateValue($value): bool
|
||||
{
|
||||
if (empty($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Excel numeric date (e.g. 44927)
|
||||
if (is_numeric($value) && $value > 30000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Common date formats
|
||||
return preg_match(
|
||||
'/^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$|^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/',
|
||||
(string) $value
|
||||
) === 1;
|
||||
}
|
||||
|
||||
|
||||
public function normalizeDate($value): ?string
|
||||
{
|
||||
try {
|
||||
// Excel numeric date
|
||||
if (is_numeric($value)) {
|
||||
return date('Y-m-d', \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value));
|
||||
}
|
||||
|
||||
// String date
|
||||
return date('Y-m-d', strtotime(str_replace('/', '-', $value)));
|
||||
} catch (\Throwable $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function convertRelation(string $relation, string $gender): ?string
|
||||
public function convertRelation(?string $relation): ?string
|
||||
{
|
||||
if (empty($relation)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$relation = strtolower($relation);
|
||||
$gender = strtolower($gender);
|
||||
|
||||
if ($relation == 'self') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'self')) {
|
||||
return 'self';
|
||||
}
|
||||
|
||||
if ($relation == 'spouse') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'spouse') || str_contains($relation, 'wife') || str_contains($relation, 'husband')) {
|
||||
return 'spouse';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'male') {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'female') {
|
||||
if (str_contains($relation, 'daughter')) {
|
||||
return 'daughter';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'male') {
|
||||
return 'father';
|
||||
if (str_contains($relation, 'son')) {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'female') {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'male') {
|
||||
if (str_contains($relation, 'father in law') || str_contains($relation, 'father-in-law')) {
|
||||
return 'father-in-law';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'female') {
|
||||
if (str_contains($relation, 'mother in law') || str_contains($relation, 'mother-in-law')) {
|
||||
return 'mother-in-law';
|
||||
}
|
||||
|
||||
return null;
|
||||
if (str_contains($relation, 'father')) {
|
||||
return 'father';
|
||||
}
|
||||
|
||||
if (str_contains($relation, 'mother')) {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
return null; // unmatched case
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -60,8 +60,6 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// Employee / Member
|
||||
'employee_member_id' => 'emp_code',
|
||||
'insured_name' => 'insured_name',
|
||||
'patient_name' => 'emp_name',
|
||||
'relation' => 'relationship',
|
||||
|
||||
// Policy
|
||||
@ -95,10 +93,6 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// References
|
||||
'cl_inward_no' => 'claim_number',
|
||||
|
||||
'priority' => 1,
|
||||
'mode_of_intimation' => 5,
|
||||
'ticket_type_id' => 1,
|
||||
];
|
||||
|
||||
protected $statusMapping = [
|
||||
@ -112,6 +106,17 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
'Cashless Document Awaited' => 3,
|
||||
];
|
||||
|
||||
protected $dateColumns = [
|
||||
'inward_date',
|
||||
'policy_start_date',
|
||||
'policy_end_date',
|
||||
'doa_opd_treatment_from',
|
||||
'dod_opd_treatment_to',
|
||||
'approved_date',
|
||||
'cheque_neft_date'
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* ABSTRACT FUNCTIONs
|
||||
*/
|
||||
@ -205,14 +210,13 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
$dbColumn = $map['db_column'];
|
||||
|
||||
$value = $row[$excelColumn] ?? null;
|
||||
|
||||
if ($this->isDateValue($value)) {
|
||||
$value = $this->normalizeDate($value);
|
||||
}
|
||||
|
||||
$item[$dbColumn] = $value;
|
||||
}
|
||||
|
||||
foreach ($this->dateColumns as $key => $value) {
|
||||
$item[$value] = change_date_format($item[$value] ?? null, 'd-M-y', 'Y-m-d');
|
||||
}
|
||||
|
||||
$params = [
|
||||
'doa_opd_treatment_from' => $item['doa_opd_treatment_from'] ?? null,
|
||||
'employee_member_id' => $item['employee_member_id'] ?? null,
|
||||
@ -299,7 +303,7 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
$item['tpa_id'] = $client_policy_data['tpa_id'] ?? null;
|
||||
$item['acm_id'] = $client_policy_data['acm_id'] ?? null;
|
||||
$item['policy_no'] = $client_policy_data['policy_no'] ?? null;
|
||||
$item['relationship'] = $this->convertRelation($row['relation'] ?? null, $row['gender'] ?? null);
|
||||
$item['relationship'] = $this->convertRelation($row['relation'] ?? null);
|
||||
|
||||
$employee_data = $this->getEmployeeDetails($file_data['client_id'], $file_data['client_policy_id'], $row['employee_member_id'], $item['relationship']);
|
||||
|
||||
@ -334,7 +338,12 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
$item['claim_status_id'] = $statusMapping[$row['final_status']] ?? 61;
|
||||
$item['file_id'] = $file_id;
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_dump_ref_id'] = $row['id'];
|
||||
$item['claim_type'] = 1;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
@ -363,83 +372,47 @@ class RcareClaimImportService extends BaseTpaClaimImportService
|
||||
* HELPER FUNCTIONs
|
||||
*/
|
||||
|
||||
public function isDateValue($value): bool
|
||||
{
|
||||
if (empty($value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Excel numeric date (e.g. 44927)
|
||||
if (is_numeric($value) && $value > 30000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Common date formats
|
||||
return preg_match(
|
||||
'/^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}$|^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/',
|
||||
(string) $value
|
||||
) === 1;
|
||||
}
|
||||
|
||||
|
||||
public function normalizeDate($value): ?string
|
||||
{
|
||||
try {
|
||||
// Excel numeric date
|
||||
if (is_numeric($value)) {
|
||||
return date('Y-m-d', \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value));
|
||||
}
|
||||
|
||||
// String date
|
||||
return date('Y-m-d', strtotime(str_replace('/', '-', $value)));
|
||||
} catch (\Throwable $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function convertRelation(string $relation, string $gender): ?string
|
||||
public function convertRelation(?string $relation): ?string
|
||||
{
|
||||
if (empty($relation)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$relation = strtolower($relation);
|
||||
$gender = strtolower($gender);
|
||||
|
||||
if ($relation == 'self') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'self')) {
|
||||
return 'self';
|
||||
}
|
||||
|
||||
if ($relation == 'spouse') {
|
||||
return $relation;
|
||||
if (str_contains($relation, 'spouse') || str_contains($relation, 'wife') || str_contains($relation, 'husband')) {
|
||||
return 'spouse';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'male') {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'child' && $gender == 'female') {
|
||||
if (str_contains($relation, 'daughter')) {
|
||||
return 'daughter';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'male') {
|
||||
return 'father';
|
||||
if (str_contains($relation, 'son')) {
|
||||
return 'son';
|
||||
}
|
||||
|
||||
if ($relation == 'parents' && $gender == 'female') {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'male') {
|
||||
if (str_contains($relation, 'father in law') || str_contains($relation, 'father-in-law')) {
|
||||
return 'father-in-law';
|
||||
}
|
||||
|
||||
if ($relation == 'parents-in-law' && $gender == 'female') {
|
||||
if (str_contains($relation, 'mother in law') || str_contains($relation, 'mother-in-law')) {
|
||||
return 'mother-in-law';
|
||||
}
|
||||
|
||||
return null;
|
||||
if (str_contains($relation, 'father')) {
|
||||
return 'father';
|
||||
}
|
||||
|
||||
if (str_contains($relation, 'mother')) {
|
||||
return 'mother';
|
||||
}
|
||||
|
||||
return null; // unmatched case
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -346,9 +346,6 @@ class VidalClaimImportService extends BaseTpaClaimImportService
|
||||
|
||||
// Meta
|
||||
'file_id' => 'file_id',
|
||||
'priority' => 1,
|
||||
'mode_of_intimation' => 5,
|
||||
'ticket_type_id' => 1,
|
||||
];
|
||||
|
||||
|
||||
@ -566,6 +563,9 @@ class VidalClaimImportService extends BaseTpaClaimImportService
|
||||
$item['claim_dump_ref_id'] = $row['id'];
|
||||
$item['created_by'] = $file_data['created_by'] ?? null;
|
||||
$item['claim_type'] = isset($row['mainclaim_prepost_type']) && !empty($row['mainclaim_prepost_type']) && strtolower($row['mainclaim_prepost_type']) == 'normal' ? 1 : 3;
|
||||
$item['priority'] = 1;
|
||||
$item['mode_of_intimation'] = 5;
|
||||
$item['ticket_type_id'] = 1;
|
||||
|
||||
$mapped[] = $item;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user