fix(abdm): support multi-careContext patient array in m2LinkInit

This commit is contained in:
DevSoftTech Server 2026-10-23 01:37:58 +05:30
parent c0196b7e9f
commit e93ebf7bf6

View File

@ -6754,31 +6754,66 @@ class AbdmGateway extends BaseController
$requestId = trim((string) ($payload['requestId'] ?? $payload['request_id'] ?? $this->request->getHeaderLine('X-Request-Id'))); $requestId = trim((string) ($payload['requestId'] ?? $payload['request_id'] ?? $this->request->getHeaderLine('X-Request-Id')));
$transactionId = trim((string) ($payload['transactionId'] ?? $payload['transaction_id'] ?? ('tx-' . bin2hex(random_bytes(8))))); $transactionId = trim((string) ($payload['transactionId'] ?? $payload['transaction_id'] ?? ('tx-' . bin2hex(random_bytes(8)))));
$patientRef = trim((string) ( $rawPatient = $payload['patient'] ?? [];
$payload['patient']['referenceNumber'] $patientRef = '';
?? $payload['patientRef'] $abhaAddress = '';
?? $payload['patient_ref'] $careContexts = [];
?? $payload['referenceNumber']
?? $payload['patient_id']
?? $payload['patient']['patient_id']
?? ''
));
$abhaAddress = trim((string) ( if (is_array($rawPatient)) {
$payload['patient']['id'] if (isset($rawPatient[0]) && is_array($rawPatient[0])) {
?? $payload['patient']['abhaAddress'] foreach ($rawPatient as $pItem) {
?? $payload['patient']['abha_address'] if (is_array($pItem)) {
?? $payload['abhaAddress'] if ($patientRef === '' && ! empty($pItem['referenceNumber'])) {
?? $payload['abha_address'] $patientRef = trim((string) $pItem['referenceNumber']);
?? '' }
)); if ($abhaAddress === '' && ! empty($pItem['id'])) {
$abhaAddress = trim((string) $pItem['id']);
}
if (! empty($pItem['careContexts']) && is_array($pItem['careContexts'])) {
foreach ($pItem['careContexts'] as $cc) {
if (is_array($cc) && ! empty($cc['referenceNumber'])) {
$careContexts[] = $cc;
}
}
}
}
}
} else {
$patientRef = trim((string) ($rawPatient['referenceNumber'] ?? $rawPatient['id'] ?? ''));
$abhaAddress = trim((string) ($rawPatient['id'] ?? $rawPatient['abhaAddress'] ?? $rawPatient['abha_address'] ?? ''));
if (! empty($rawPatient['careContexts']) && is_array($rawPatient['careContexts'])) {
$careContexts = $rawPatient['careContexts'];
}
}
}
$careContexts = $payload['patient']['careContexts'] if ($patientRef === '') {
?? $payload['careContexts'] $patientRef = trim((string) (
?? $payload['care_contexts'] $payload['patientRef']
?? []; ?? $payload['patient_ref']
if (! is_array($careContexts)) { ?? $payload['referenceNumber']
$careContexts = []; ?? $payload['patient_id']
?? ''
));
}
if ($abhaAddress === '') {
$abhaAddress = trim((string) (
$payload['abhaAddress']
?? $payload['abha_address']
?? $payload['abhaId']
?? $payload['abha_id']
?? ''
));
}
if (empty($careContexts)) {
$careContexts = $payload['careContexts']
?? $payload['care_contexts']
?? [];
if (! is_array($careContexts)) {
$careContexts = [];
}
} }
if ($patientRef === '') { if ($patientRef === '') {