diff --git a/app/Controllers/AbdmGateway.php b/app/Controllers/AbdmGateway.php index c9dd607..b141c16 100644 --- a/app/Controllers/AbdmGateway.php +++ b/app/Controllers/AbdmGateway.php @@ -10385,7 +10385,20 @@ class AbdmGateway extends BaseController ->get(1) ->getRowArray(); if (! empty($pat['abha_id'])) { - $body['abha_number'] = trim((string) $pat['abha_id']); + $candidateNum = trim((string) $pat['abha_id']); + if (strpos($candidateNum, '@') === false && strlen(preg_replace('/\D/', '', $candidateNum)) === 14) { + $body['abha_number'] = preg_replace('/\D/', '', $candidateNum); + } + } + } + + // Sanitize abha_number: only keep if valid 14-digit numeric ABHA number. Never pass email/abha_address! + if (! empty($body['abha_number'])) { + $cleanedAbhaNum = preg_replace('/\D/', '', (string) $body['abha_number']); + if (strlen($cleanedAbhaNum) === 14 && strpos((string) $body['abha_number'], '@') === false) { + $body['abha_number'] = $cleanedAbhaNum; + } else { + unset($body['abha_number']); } } @@ -10434,7 +10447,20 @@ class AbdmGateway extends BaseController ->get(1) ->getRowArray(); if (! empty($pat['abha_id'])) { - $body['abha_number'] = trim((string) $pat['abha_id']); + $candidateNum = trim((string) $pat['abha_id']); + if (strpos($candidateNum, '@') === false && strlen(preg_replace('/\D/', '', $candidateNum)) === 14) { + $body['abha_number'] = preg_replace('/\D/', '', $candidateNum); + } + } + } + + // Sanitize abha_number: only keep if valid 14-digit numeric ABHA number. Never pass email/abha_address! + if (! empty($body['abha_number'])) { + $cleanedAbhaNum = preg_replace('/\D/', '', (string) $body['abha_number']); + if (strlen($cleanedAbhaNum) === 14 && strpos((string) $body['abha_number'], '@') === false) { + $body['abha_number'] = $cleanedAbhaNum; + } else { + unset($body['abha_number']); } } @@ -10656,7 +10682,7 @@ class AbdmGateway extends BaseController 'year_of_birth' => $yob, 'dob' => $dob, 'abha_address' => $effAbhaAddress, - 'abha_number' => trim((string) ($patient['abha_id'] ?? '')), + 'abha_number' => (strpos((string) ($patient['abha_id'] ?? ''), '@') === false && strlen(preg_replace('/\D/', '', (string) ($patient['abha_id'] ?? ''))) === 14) ? preg_replace('/\D/', '', (string) $patient['abha_id']) : '', 'phone' => $cleanPhone, ], 'care_contexts' => $contextsList, diff --git a/app/Libraries/Abdm/EAtriaBridgeConnector.php b/app/Libraries/Abdm/EAtriaBridgeConnector.php index c8d7e2d..25daba6 100644 --- a/app/Libraries/Abdm/EAtriaBridgeConnector.php +++ b/app/Libraries/Abdm/EAtriaBridgeConnector.php @@ -1728,6 +1728,15 @@ class EAtriaBridgeConnector implements AbdmConnectorInterface } } + if (! empty($payload['abha_number'])) { + $cleaned = preg_replace('/\D/', '', (string) $payload['abha_number']); + if (strlen($cleaned) === 14 && strpos((string) $payload['abha_number'], '@') === false) { + $payload['abha_number'] = $cleaned; + } else { + unset($payload['abha_number']); + } + } + if ($this->hfrId !== '' && empty($payload['hfr_id'])) { $payload['hfr_id'] = $this->hfrId; } @@ -1736,6 +1745,15 @@ class EAtriaBridgeConnector implements AbdmConnectorInterface public function hipLinkCareContext(array $payload): array { + if (! empty($payload['abha_number'])) { + $cleaned = preg_replace('/\D/', '', (string) $payload['abha_number']); + if (strlen($cleaned) === 14 && strpos((string) $payload['abha_number'], '@') === false) { + $payload['abha_number'] = $cleaned; + } else { + unset($payload['abha_number']); + } + } + if ($this->hfrId !== '' && empty($payload['hfr_id'])) { $payload['hfr_id'] = $this->hfrId; } diff --git a/app/Views/billing/Patient_Profile_Opd_V.php b/app/Views/billing/Patient_Profile_Opd_V.php index 239a44e..6c28fda 100644 --- a/app/Views/billing/Patient_Profile_Opd_V.php +++ b/app/Views/billing/Patient_Profile_Opd_V.php @@ -69,8 +69,11 @@ if ($patientPhotoPath === '') {