Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev

This commit is contained in:
VENKATESHWARAN 2026-02-07 12:39:43 +05:30
commit 8f166c4aa3
6 changed files with 91 additions and 25 deletions

View File

@ -19,6 +19,7 @@ use App\Filters\Cors;
use App\Filters\SecurityInputFilter; use App\Filters\SecurityInputFilter;
use App\Filters\GlobalPostFileUploadGuard; use App\Filters\GlobalPostFileUploadGuard;
use App\Filters\AclFilter; use App\Filters\AclFilter;
use App\Filters\RateLimitFilter;
use App\Filters\AuthJWT; use App\Filters\AuthJWT;
@ -49,6 +50,8 @@ class Filters extends BaseConfig
'SecurityInputFilter' => SecurityInputFilter::class, 'SecurityInputFilter' => SecurityInputFilter::class,
'GlobalPostFileUploadGuard' => GlobalPostFileUploadGuard::class, 'GlobalPostFileUploadGuard' => GlobalPostFileUploadGuard::class,
'AclFilter' => AclFilter::class, 'AclFilter' => AclFilter::class,
'ratelimit' => RateLimitFilter::class,
]; ];
/** /**

View File

@ -549,7 +549,7 @@ $routes->get('get_ticket_data',"EmployeeRestController::get_ticket_data");
//api //api
$routes->group("/api", ["filter" => "authJWT"], function ($routes) { $routes->group("/api", ["filter" => [ 'ratelimit' , 'authJWT']], function ($routes) {
$routes->get('get_ticket_type',"EmployeeRestController::get_ticket_type"); $routes->get('get_ticket_type',"EmployeeRestController::get_ticket_type");
$routes->post("logined", "RestAuthenticationController::logined"); $routes->post("logined", "RestAuthenticationController::logined");
$routes->post("getId", "RestAuthenticationController::getUserIdFromToken"); $routes->post("getId", "RestAuthenticationController::getUserIdFromToken");
@ -564,7 +564,7 @@ $routes->get("downloadFileTableFile/(:any)", "EmployeeController::downloadFileLi
$routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($routes) { $routes->group("employeeRest", ['filter' => ['ratelimit' , 'appSignature'] ], function ($routes) {
//Employee login api's //Employee login api's
$routes->post("verifyEmployeeNumber", "RestAuthenticationController::verifyEmployeeWithMobileNumber"); $routes->post("verifyEmployeeNumber", "RestAuthenticationController::verifyEmployeeWithMobileNumber");
@ -607,7 +607,7 @@ $routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($route
}); });
$routes->group("employeeRest", ["filter" => ['GlobalPostFileUploadGuard', 'appSignature', 'authJWT']], function ($routes) { $routes->group("employeeRest", ["filter" => ['GlobalPostFileUploadGuard', 'ratelimit' , 'appSignature', 'authJWT']], function ($routes) {
$routes->post('logout', 'RestAuthenticationController::logout'); $routes->post('logout', 'RestAuthenticationController::logout');
@ -671,7 +671,7 @@ $routes->group("employeeRest", ["filter" => ['GlobalPostFileUploadGuard', 'appSi
$routes->match(['get','post','put'], 'ticketType', 'ThzController::ticketType'); $routes->match(['get','post','put'], 'ticketType', 'ThzController::ticketType');
//this route for nhance website contact form (sales/service) //this route for nhance website contact form (sales/service)
$routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($routes) { $routes->group("employeeRest", ['filter' => ['ratelimit' , 'appSignature'] ], function ($routes) {
$routes->post("ticketSave", "ThzController::ticketSave"); $routes->post("ticketSave", "ThzController::ticketSave");
}); });
@ -788,7 +788,7 @@ $routes->get('EcardRequest','FhplApiController::EcardRequest');
$routes->get('HospitalNetwork','MediAssistApiController::HospitalNetwork'); $routes->get('HospitalNetwork','MediAssistApiController::HospitalNetwork');
$routes->get('VidalGetBenefDetails','VidalApiController::VidalGetBenefDetails'); $routes->get('VidalGetBenefDetails','VidalApiController::VidalGetBenefDetails');
$routes->get('ClaimDetail','FhplApiController::ClaimDetail'); $routes->get('ClaimDetail','FhplApiController::ClaimDetail');
$routes->get('SubmitClaim','VidalApiController::SubmitClaim'); $routes->get('SubmitClaim','HealthIndiaApiController::SubmitClaim');
$routes->get('IntimateClaim','MediAssistApiController::IntimateClaim'); $routes->get('IntimateClaim','MediAssistApiController::IntimateClaim');
$routes->get('IRSubmission','MediAssistApiController::IRSubmission'); $routes->get('IRSubmission','MediAssistApiController::IRSubmission');
$routes->get('ClaimStatusUpdate','MediAssistApiController::ClaimStatusUpdate'); $routes->get('ClaimStatusUpdate','MediAssistApiController::ClaimStatusUpdate');

View File

@ -28,6 +28,7 @@ class ApiServiceController extends BaseController
protected $vidal_primary_key; protected $vidal_primary_key;
protected $icici_primary_key; protected $icici_primary_key;
protected $fhpl_primary_key; protected $fhpl_primary_key;
protected $health_india_primary_key;
public function __construct() public function __construct()
{ {
@ -37,6 +38,7 @@ class ApiServiceController extends BaseController
$this->vidal_primary_key = getenv('VIDAL_PRIMARY_KEY_CONSTANT'); $this->vidal_primary_key = getenv('VIDAL_PRIMARY_KEY_CONSTANT');
$this->icici_primary_key = getenv('ICICI_PRIMARY_KEY_CONSTANT'); $this->icici_primary_key = getenv('ICICI_PRIMARY_KEY_CONSTANT');
$this->fhpl_primary_key = getenv('FHPL_PRIMARY_KEY_CONSTANT'); $this->fhpl_primary_key = getenv('FHPL_PRIMARY_KEY_CONSTANT');
$this->health_india_primary_key = getenv('HEALTH_INDIA_PRIMARY_KEY_CONSTANT');
} }
// Push Claims // Push Claims

View File

@ -35,14 +35,18 @@ class HealthIndiaApiController extends BaseController
$ch = curl_init(); $ch = curl_init();
curl_setopt_array($ch, [ curl_setopt_array($ch, [
CURLOPT_URL => $url, CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POST => true,
CURLOPT_USERPWD => $username . ':' . $password,
CURLOPT_POSTFIELDS => '{}',
CURLOPT_HTTPHEADER => [ CURLOPT_HTTPHEADER => [
'Authorization: Basic ' . base64_encode($username . ':' . $password),
'Content-Type: application/json', 'Content-Type: application/json',
'Accept: application/json',
], ],
CURLOPT_TIMEOUT => 30, CURLOPT_TIMEOUT => 30,
]); ]);
@ -75,7 +79,7 @@ class HealthIndiaApiController extends BaseController
]); ]);
} }
public function SubmitClaim($claimId = null) public function SubmitClaim($claimId = 515)
{ {
helper('api'); helper('api');
@ -88,16 +92,19 @@ class HealthIndiaApiController extends BaseController
tm.emp_mail as emailId, tm.emp_mail as emailId,
tm.doa as admissionDate, tm.doa as admissionDate,
tm.dod as dischargeDate, tm.dod as dischargeDate,
tm.hospital_pin_code as hospitalCode,
tm.hospital_name as hospitalName, tm.hospital_name as hospitalName,
tm.hospital_address as hospitalAddress,
tm.hospital_phone_no as hospitalNumber,
tm.claim_amount as claimedAmount, tm.claim_amount as claimedAmount,
tm.tpa_no as memberId, tm.tpa_no as memberId,
tm.ailment as ailmentDescription, tm.claim_description as ailmentDescription,
cp.policy_no as policyNumber, cp.policy_no as policyNumber,
e.emp_code as employeeCode, e.emp_code as employeeCode,
tn.note as disease, tn.note as disease,
cf.url as filePath, cf.url as filePath,
tm.claim_type as claimType, tm.claim_type as claimType,
tm.claim_category as benefitType tm.claim_type as benefitType
') ')
->join('employees e', 'e.id = tm.emp_id', 'left') ->join('employees e', 'e.id = tm.emp_id', 'left')
->join('client_policy cp', 'tm.client_policy_id = cp.id', 'left') ->join('client_policy cp', 'tm.client_policy_id = cp.id', 'left')
@ -107,6 +114,8 @@ class HealthIndiaApiController extends BaseController
->get() ->get()
->getRowArray(); ->getRowArray();
// dd($data);
if (!$data) { if (!$data) {
log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - Claim not found"); log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - Claim not found");
return; return;
@ -161,13 +170,30 @@ class HealthIndiaApiController extends BaseController
"claimeD_AMOUNT" => (string) $data['claimedAmount'], "claimeD_AMOUNT" => (string) $data['claimedAmount'],
"datE_OF_ADMISSION" => date('Y-m-d', strtotime($data['admissionDate'])), "datE_OF_ADMISSION" => date('Y-m-d', strtotime($data['admissionDate'])),
"ailmenT_DESCRIPTION" => $data['ailmentDescription'] ?? 'NA', "ailmenT_DESCRIPTION" => $data['ailmentDescription'] ?? 'NA',
"hospitaL_CODE" => "", // Not available in your data "hospitaL_CODE" => $data['hospitalCode'] ?? '',
"hospitaL_NAME" => $data['hospitalName'] ?? '', "hospitaL_NAME" => $data['hospitalName'] ?? '',
"hospitaL_ADDRESS" => "", // Not available "hospitaL_ADDRESS" => $data['hospitalAddress'] ?? '',
"hospitaL_NUMBER" => "", // Not available "hospitaL_NUMBER" => $data['hospitalNumber'] ?? '',
"pdF_BYTES" => [$fileContent] "pdF_BYTES" => [$fileContent]
]; ];
// $body = [
// 'policY_NUMBER' => '141600_POLICY_AWAITED',
// 'employeE_CODE' => 'DECP000',
// 'membeR_ID' => '10662420SE',
// 'claiM_TYPE' => 'Reimbursement',
// 'benefiT_TYPE' => 'IPD',
// 'claimeD_AMOUNT' => '102',
// 'datE_OF_ADMISSION' => '2026-01-19',
// 'ailmenT_DESCRIPTION' => 'Fever',
// 'hospitaL_CODE' => '100900',
// 'hospitaL_NAME' => 'Test',
// 'hospitaL_ADDRESS' => 'YEst',
// 'hospitaL_NUMBER' => '2233445566',
// "pdF_BYTES" => [$fileContent]
// ];
$url = getenv('HEALTH_INDIA_BASE_URL') . "/Intimation/GetClaimIntimation"; $url = getenv('HEALTH_INDIA_BASE_URL') . "/Intimation/GetClaimIntimation";
$headers = [ $headers = [
@ -175,10 +201,12 @@ class HealthIndiaApiController extends BaseController
"Content-Type: application/json" "Content-Type: application/json"
]; ];
log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA | claimId: ' . $claimId . ' | URL: ' . $url . ' | payload: ' . json_encode($body)); log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA | claimId: ' . $claimId . ' | URL: ' . $url );
$response = call_third_party_api($url, 'POST', $headers, $body); $response = call_third_party_api($url, 'POST', $headers, $body);
dd($response);
log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA RESPONSE | claimId: ' . $claimId . ' | response: ' . json_encode($response)); log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA RESPONSE | claimId: ' . $claimId . ' | response: ' . json_encode($response));
if ($response['status'] != true) { if ($response['status'] != true) {

View File

@ -89,29 +89,28 @@ class ICICILombardController extends AdminController
$body = [ $body = [
"PolicyNumber" => "4016/PPN/A/O/53167743/00/000", "PolicyNumber" => "4016/PPN/A/O/53167743/00/000",
"CDBGAccountNumber" => "CD-MUM-0026", "CDBGAccountNumber" => "CD-MUM-0026",
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440012", "CorrelationId" => "550e8400-e29b-41d4-a716-446655440014",
"MemberDetails" => [ "MemberDetails" => [
[ [
"MemberEmpId" => "EMPID3625559", "MemberEmpId" => "EMPID3625560",
"DOJ" => "21-MAR-2019", "DOJ" => "21-MAR-2019",
"InsuredName" => "Gowtham", "InsuredName" => "Gowtham",
"DOB" => "7-JUL-1993", "DOB" => "7-JUL-1993",
"Relationship" => "SELF", "Relationship" => "SELF",
"Gender" => "MALE", "Gender" => "MALE",
"DOC" => '2025-10-27', "DOC" => '2025-10-27',
"SumInsured" => "400000", "SumInsured" => "500000",
"EmailId" => "Gowtham@GMAIL.COM", "EmailId" => "Gowtham@GMAIL.COM",
"FlagStatus" => "A" "FlagStatus" => "A"
], ],
[ [
"MemberEmpId" => "EMPID3625559", "MemberEmpId" => "EMPID3625560",
"DOJ" => "21-MAR-2019", "DOJ" => "21-MAR-2019",
"InsuredName" => "Lavanya", "InsuredName" => "Lavanya",
"DOB" => "8-AUG-1970", "DOB" => "8-AUG-1970",
"Relationship" => "MOTHER", "Relationship" => "MOTHER",
"Gender" => "FEMALE", "Gender" => "FEMALE",
"DOC" => '2025-10-27', "DOC" => '2025-10-27',
"SumInsured" => "400000",
"EmailId" => "Lavanya@GMAIL.COM", "EmailId" => "Lavanya@GMAIL.COM",
"FlagStatus" => "A" "FlagStatus" => "A"
], ],
@ -149,8 +148,8 @@ class ICICILombardController extends AdminController
$body = [ $body = [
"PolicyNumber" => "4016/PPN/A/O/53167743/00/000", "PolicyNumber" => "4016/PPN/A/O/53167743/00/000",
"BatchId" => "3672146", "BatchId" => "3723144",
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440012" "CorrelationId" => "550e8400-e29b-41d4-a716-446655440014"
]; ];
$response = call_third_party_api($url, 'POST', $headers, $body, true); $response = call_third_party_api($url, 'POST', $headers, $body, true);
@ -181,10 +180,10 @@ class ICICILombardController extends AdminController
'Content-Type: application/json' 'Content-Type: application/json'
]; ];
$body = [ $body = [
"PolicyNumber" => "4016/PPN/A/O/53167743/00/000", "PolicyNumber" => "4016/PPN/A/O/53167743/00/000",
"IMID" => "3672145", "IMID" => "201580517901",
"CorrelationId" => "550e8400-e29b-41d4-a716-446655440011" "CorrelationId" => "550e8400-e29b-41d4-a716-446655440014"
]; ];
$response = call_third_party_api($url, 'POST', $headers, $body, true); $response = call_third_party_api($url, 'POST', $headers, $body, true);

View File

@ -0,0 +1,34 @@
<?php
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class RateLimitFilter implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
$throttler = service('throttler');
// sanitize IP for cache
$key = preg_replace('/[^a-zA-Z0-9_]/', '_', $request->getIPAddress());
if ($throttler->check($key, 25, MINUTE) === false) {
return service('response')
->setStatusCode(429)
->setJSON([
'status' => 'error',
'message' => 'Too many requests. Try again later.'
]);
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
// nothing
}
}