Harden ABHA cleanup against non-standard patient and OPD key columns
This commit is contained in:
parent
1429ffc567
commit
7d5622d958
|
|
@ -92,13 +92,19 @@ class BridgeSyncService
|
|||
$opdId = (int) ($payload['bundle_json']['opd_id'] ?? 0);
|
||||
}
|
||||
if ($opdId > 0 && $this->db->tableExists('opd_master')) {
|
||||
$opdPk = $this->resolveTableIdColumn('opd_master', ['id', 'opd_id']);
|
||||
$opdPatientFk = $this->resolveTableIdColumn('opd_master', ['p_id', 'patient_id', 'pid']);
|
||||
if ($opdPk === null || $opdPatientFk === null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$row = $this->db->table('opd_master')
|
||||
->select('p_id')
|
||||
->where('id', $opdId)
|
||||
->select($opdPatientFk)
|
||||
->where($opdPk, $opdId)
|
||||
->get(1)
|
||||
->getRowArray();
|
||||
|
||||
return (int) ($row['p_id'] ?? 0);
|
||||
return (int) ($row[$opdPatientFk] ?? 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -111,6 +117,11 @@ class BridgeSyncService
|
|||
return false;
|
||||
}
|
||||
|
||||
$patientPk = $this->resolveTableIdColumn('patient_master', ['id', 'p_id', 'patient_id', 'pid']);
|
||||
if ($patientPk === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$allFields = $this->db->getFieldNames('patient_master') ?? [];
|
||||
$selectFields = [];
|
||||
foreach (['abha_verified_status', 'abha_kyc_verified', 'abha_mobile_verified', 'abha_id', 'abha_no', 'abha', 'abha_address'] as $field) {
|
||||
|
|
@ -125,7 +136,7 @@ class BridgeSyncService
|
|||
|
||||
$row = $this->db->table('patient_master')
|
||||
->select(implode(',', $selectFields))
|
||||
->where('id', $patientId)
|
||||
->where($patientPk, $patientId)
|
||||
->get(1)
|
||||
->getRowArray();
|
||||
|
||||
|
|
@ -439,6 +450,25 @@ class BridgeSyncService
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<string> $candidates
|
||||
*/
|
||||
private function resolveTableIdColumn(string $table, array $candidates): ?string
|
||||
{
|
||||
if (! $this->db->tableExists($table)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$fields = $this->db->getFieldNames($table) ?? [];
|
||||
foreach ($candidates as $candidate) {
|
||||
if (in_array($candidate, $fields, true)) {
|
||||
return $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $requestPayload
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user