fix(fhir): ensure strict canonical display values for SNOMED/LOINC/HL7 codings to prevent PHR validation errors
This commit is contained in:
parent
6525422af4
commit
a6bb1f7cda
|
|
@ -273,6 +273,7 @@ class DischargeFhirGenerator extends \App\Libraries\Abdm\Fhir\Generators\Abstrac
|
|||
// ABDM PHR: use exam category for admission/discharge condition observations;
|
||||
// vital-signs category only for true vital measurements.
|
||||
$obsCategoryCode = ($isAdm || $isDis) ? 'exam' : 'vital-signs';
|
||||
$obsCategoryCanonicalDisplay = ($isAdm || $isDis) ? 'Exam' : 'Vital Signs';
|
||||
$obsCategorySystem = 'http://terminology.hl7.org/CodeSystem/observation-category';
|
||||
|
||||
$coding = [];
|
||||
|
|
@ -314,7 +315,7 @@ class DischargeFhirGenerator extends \App\Libraries\Abdm\Fhir\Generators\Abstrac
|
|||
'coding' => [[
|
||||
'system' => $obsCategorySystem,
|
||||
'code' => $obsCategoryCode,
|
||||
'display' => $obsCategoryDisplay,
|
||||
'display' => $obsCategoryCanonicalDisplay,
|
||||
]],
|
||||
]],
|
||||
'code' => [
|
||||
|
|
@ -595,12 +596,17 @@ class DischargeFhirGenerator extends \App\Libraries\Abdm\Fhir\Generators\Abstrac
|
|||
|
||||
$docTitle = trim((string) ($document['title'] ?? 'Clinical document'));
|
||||
$snomedCode = trim((string) ($document['snomed_code'] ?? ''));
|
||||
$snomedDisplay = trim((string) ($document['snomed_display'] ?? ''));
|
||||
if ($snomedCode === '') {
|
||||
if (stripos($docTitle, 'Bill') !== false || stripos($docTitle, 'Invoice') !== false) {
|
||||
$snomedCode = '823651000000106'; // Billing record
|
||||
$snomedDisplay = 'Billing record';
|
||||
} else {
|
||||
$snomedCode = '373942005'; // Discharge summary
|
||||
$snomedDisplay = 'Discharge summary';
|
||||
}
|
||||
} elseif ($snomedDisplay === '') {
|
||||
$snomedDisplay = $docTitle;
|
||||
}
|
||||
|
||||
$rawBytes = base64_decode($data);
|
||||
|
|
@ -620,7 +626,7 @@ class DischargeFhirGenerator extends \App\Libraries\Abdm\Fhir\Generators\Abstrac
|
|||
'type' => ['coding' => [[
|
||||
'system' => 'http://snomed.info/sct',
|
||||
'code' => $snomedCode,
|
||||
'display' => $docTitle,
|
||||
'display' => $snomedDisplay,
|
||||
]], 'text' => $docTitle],
|
||||
'subject' => [
|
||||
'reference' => $patientRef,
|
||||
|
|
@ -812,7 +818,7 @@ class DischargeFhirGenerator extends \App\Libraries\Abdm\Fhir\Generators\Abstrac
|
|||
return ['code' => '8462-4', 'display' => 'Diastolic blood pressure'];
|
||||
}
|
||||
if (str_contains($upper, 'SPO2') || str_contains($upper, 'OXYGEN')) {
|
||||
return ['code' => '2708-6', 'display' => 'Oxygen saturation in Arterial blood by Pulse oximetry'];
|
||||
return ['code' => '59408-5', 'display' => 'Oxygen saturation in Arterial blood by Pulse oximetry'];
|
||||
}
|
||||
if (str_contains($upper, 'RBS') || str_contains($upper, 'RANDOM BLOOD SUGAR') || str_contains($upper, 'GLUCOSE')) {
|
||||
return ['code' => '2345-7', 'display' => 'Glucose [Mass/volume] in Serum or Plasma'];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user