Fix invalid ABDM HIType codes (HealthDocument->HealthDocumentRecord, Wellness->WellnessRecord) causing consent_request 400; fix extractErrorText for array-shaped bridge error responses

This commit is contained in:
DevSoftTech Server 2026-07-28 22:16:22 +05:30
parent 2525916c08
commit 1439ce0fcc
5 changed files with 27 additions and 19 deletions

View File

@ -1285,7 +1285,7 @@ class Patient extends BaseController
$payload = [ $payload = [
'patient_id' => $pno, 'patient_id' => $pno,
'abha_address' => $abhaContext['abha_address'], 'abha_address' => $abhaContext['abha_address'],
'hiTypes' => ['OPConsultation', 'Prescription', 'DiagnosticReport', 'HealthDocument'], 'hiTypes' => ['OPConsultation', 'Prescription', 'DiagnosticReport', 'HealthDocumentRecord'],
]; ];
try { try {
@ -1584,7 +1584,7 @@ class Patient extends BaseController
$consentPayload = [ $consentPayload = [
'patient_id' => $pno, 'patient_id' => $pno,
'abha_address' => $abhaContext['abha_address'], 'abha_address' => $abhaContext['abha_address'],
'hiTypes' => ['OPConsultation', 'Prescription', 'DiagnosticReport', 'HealthDocument'], 'hiTypes' => ['OPConsultation', 'Prescription', 'DiagnosticReport', 'HealthDocumentRecord'],
]; ];
try { try {

View File

@ -516,14 +516,22 @@ class M3HiuGatewayClient
return 'HTTP ' . $httpCode . ' non-JSON response'; return 'HTTP ' . $httpCode . ' non-JSON response';
} }
$code = trim((string) ( // Some bridge error responses wrap the error object in a list, e.g.
$decoded['data']['error']['code'] // {"data": [{"error": {"code": "...", "message": "..."}}]}, instead of
?? $decoded['error']['code'] // a single {"data": {"error": {...}}} object. Normalize both shapes.
?? '' $errorNode = $decoded['data']['error'] ?? $decoded['error'] ?? null;
)); if (! is_array($errorNode) && isset($decoded['data']) && is_array($decoded['data'])) {
foreach ($decoded['data'] as $item) {
if (is_array($item) && isset($item['error']) && is_array($item['error'])) {
$errorNode = $item['error'];
break;
}
}
}
$code = trim((string) ($errorNode['code'] ?? ''));
$message = trim((string) ( $message = trim((string) (
$decoded['data']['error']['message'] $errorNode['message']
?? $decoded['error']['message']
?? $decoded['message'] ?? $decoded['message']
?? $decoded['error_text'] ?? $decoded['error_text']
?? (is_string($decoded['error'] ?? null) ? $decoded['error'] : '') ?? (is_string($decoded['error'] ?? null) ? $decoded['error'] : '')

View File

@ -1042,12 +1042,12 @@ class M3HiuWorkflowService
'prescription' => 'Prescription', 'prescription' => 'Prescription',
'dischargesummaryrecord' => 'DischargeSummary', 'dischargesummaryrecord' => 'DischargeSummary',
'dischargesummary' => 'DischargeSummary', 'dischargesummary' => 'DischargeSummary',
'healthdocumentrecord' => 'HealthDocument', 'healthdocumentrecord' => 'HealthDocumentRecord',
'healthdocument' => 'HealthDocument', 'healthdocument' => 'HealthDocumentRecord',
'immunization' => 'ImmunizationRecord', 'immunization' => 'ImmunizationRecord',
'immunizationrecord' => 'ImmunizationRecord', 'immunizationrecord' => 'ImmunizationRecord',
'wellness' => 'Wellness', 'wellness' => 'WellnessRecord',
'wellnessrecord' => 'Wellness', 'wellnessrecord' => 'WellnessRecord',
'invoice' => 'Invoice', 'invoice' => 'Invoice',
'invoicerecord' => 'Invoice', 'invoicerecord' => 'Invoice',
]; ];

View File

@ -1199,12 +1199,12 @@
dischargesummary: 'DischargeSummary', dischargesummary: 'DischargeSummary',
invoice: 'Invoice', invoice: 'Invoice',
invoicerecord: 'Invoice', invoicerecord: 'Invoice',
healthdocumentrecord: 'HealthDocument', healthdocumentrecord: 'HealthDocumentRecord',
healthdocument: 'HealthDocument', healthdocument: 'HealthDocumentRecord',
immunization: 'ImmunizationRecord', immunization: 'ImmunizationRecord',
immunizationrecord: 'ImmunizationRecord', immunizationrecord: 'ImmunizationRecord',
wellness: 'Wellness', wellness: 'WellnessRecord',
wellnessrecord: 'Wellness' wellnessrecord: 'WellnessRecord'
}; };
var out = []; var out = [];

View File

@ -480,7 +480,7 @@ if ($patientPhotoPath === '') {
</div> </div>
<div class="col"> <div class="col">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" value="HealthDocument" id="hiHealthDocument"> <input class="form-check-input" type="checkbox" value="HealthDocumentRecord" id="hiHealthDocument">
<label class="form-check-label" for="hiHealthDocument">Health Document</label> <label class="form-check-label" for="hiHealthDocument">Health Document</label>
</div> </div>
</div> </div>
@ -492,7 +492,7 @@ if ($patientPhotoPath === '') {
</div> </div>
<div class="col"> <div class="col">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" value="Wellness" id="hiWellness"> <input class="form-check-input" type="checkbox" value="WellnessRecord" id="hiWellness">
<label class="form-check-label" for="hiWellness">Wellness</label> <label class="form-check-label" for="hiWellness">Wellness</label>
</div> </div>
</div> </div>