FIX
This commit is contained in:
parent
7bd8f2277b
commit
6ba22397a4
@ -7,6 +7,7 @@
|
|||||||
use App\Models\StudyDetails;
|
use App\Models\StudyDetails;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
final class StudyImporter
|
final class StudyImporter
|
||||||
{
|
{
|
||||||
@ -100,7 +101,7 @@ private function prepareData(mixed $orthanc_src): array
|
|||||||
'institution_name' => $inst_name,
|
'institution_name' => $inst_name,
|
||||||
'institute_id' => $inst_id,
|
'institute_id' => $inst_id,
|
||||||
|
|
||||||
'patient_uid' => $orthanc_src['ParentPatient'],
|
'patient_uuid' => strtolower($orthanc_src['ParentPatient']),
|
||||||
'patient_id' => data_get($orthanc_src, 'PatientMainDicomTags.PatientID'),
|
'patient_id' => data_get($orthanc_src, 'PatientMainDicomTags.PatientID'),
|
||||||
'patient_name' => data_get($orthanc_src, 'PatientMainDicomTags.PatientName'),
|
'patient_name' => data_get($orthanc_src, 'PatientMainDicomTags.PatientName'),
|
||||||
'patient_sex' => data_get($orthanc_src, 'PatientMainDicomTags.PatientSex'),
|
'patient_sex' => data_get($orthanc_src, 'PatientMainDicomTags.PatientSex'),
|
||||||
@ -120,7 +121,7 @@ private function prepareData(mixed $orthanc_src): array
|
|||||||
'disk_size' => data_get($orthanc_src, 'Statistics.DiskSize'),
|
'disk_size' => data_get($orthanc_src, 'Statistics.DiskSize'),
|
||||||
];
|
];
|
||||||
|
|
||||||
if ((bool) $orthanc_src['IsStable']) {
|
if ((bool) data_get($orthanc_src, 'IsStable', false)) {
|
||||||
$study['study_status'] = StudyLevelStatus::StudyArrived->value;
|
$study['study_status'] = StudyLevelStatus::StudyArrived->value;
|
||||||
} else {
|
} else {
|
||||||
$study['study_status'] = StudyLevelStatus::Pending->value;
|
$study['study_status'] = StudyLevelStatus::Pending->value;
|
||||||
@ -128,23 +129,46 @@ private function prepareData(mixed $orthanc_src): array
|
|||||||
|
|
||||||
$dob = data_get($orthanc_src, 'PatientMainDicomTags.PatientBirthDate');
|
$dob = data_get($orthanc_src, 'PatientMainDicomTags.PatientBirthDate');
|
||||||
if (filled($dob)) {
|
if (filled($dob)) {
|
||||||
$study['patient_birthdate'] = Carbon::parse($dob);
|
try {
|
||||||
|
$study['patient_birthdate'] = Carbon::parse($dob);
|
||||||
|
} catch (\Exception) {
|
||||||
|
Log::error('Failed to parse PatientMainDicomTags.PatientBirthDate: {dob}', ['dob' => $dob]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$descr = data_get($orthanc_src, 'MainDicomTags.StudyDescription');
|
$descr = data_get($orthanc_src, 'MainDicomTags.StudyDescription');
|
||||||
if (blank($descr)) {
|
if (blank($descr)) {
|
||||||
$descr = data_get($orthanc_src, 'RequestedTags.AcquisitionDeviceProcessingDescription');
|
$descr = data_get($orthanc_src, 'RequestedTags.AcquisitionDeviceProcessingDescription');
|
||||||
}
|
}
|
||||||
|
if (blank($descr)) {
|
||||||
|
$descr = data_get($orthanc_src, 'MainDicomTags.AcquisitionDeviceProcessingDescription');
|
||||||
|
}
|
||||||
$this->setValue($study, 'study_description', trim($descr));
|
$this->setValue($study, 'study_description', trim($descr));
|
||||||
|
|
||||||
$properties = [
|
$properties = [
|
||||||
'software_versions' => data_get($study, 'RequestedTags.SoftwareVersions'),
|
'other_patient_names' => data_get($orthanc_src, 'RequestedTags.OtherPatientNames'),
|
||||||
'station_name' => data_get($study, 'RequestedTags.StationName'),
|
'other_patient_ids' => data_get($orthanc_src, 'RequestedTags.OtherPatientIDs'),
|
||||||
'operators_name' => data_get($study, 'RequestedTags.OperatorsName'),
|
'software_versions' => data_get($orthanc_src, 'RequestedTags.SoftwareVersions'),
|
||||||
'manufacturer' => data_get($study, 'RequestedTags.Manufacturer'),
|
'station_name' => data_get($orthanc_src, 'RequestedTags.StationName'),
|
||||||
'manufacturer_model_name' => data_get($study, 'RequestedTags.ManufacturerModelName'),
|
'operators_name' => data_get($orthanc_src, 'RequestedTags.OperatorsName'),
|
||||||
|
'manufacturer' => data_get($orthanc_src, 'RequestedTags.Manufacturer'),
|
||||||
|
'manufacturer_model_name' => data_get($orthanc_src, 'RequestedTags.ManufacturerModelName'),
|
||||||
|
'acquisition_date' => DicomUtils::dateTimeToCarbon(data_get($orthanc_src, 'RequestedTags.AcquisitionDate'), data_get($orthanc_src, 'RequestedTags.AcquisitionTime')),
|
||||||
];
|
];
|
||||||
$properties = array_purge($properties);
|
$properties = array_purge($properties);
|
||||||
|
if (empty($properties)) {
|
||||||
|
$properties = [
|
||||||
|
'other_patient_names' => data_get($orthanc_src, 'MainDicomTags.OtherPatientNames'),
|
||||||
|
'other_patient_ids' => data_get($orthanc_src, 'MainDicomTags.OtherPatientIDs'),
|
||||||
|
'software_versions' => data_get($orthanc_src, 'MainDicomTags.SoftwareVersions'),
|
||||||
|
'station_name' => data_get($orthanc_src, 'MainDicomTags.StationName'),
|
||||||
|
'operators_name' => data_get($orthanc_src, 'MainDicomTags.OperatorsName'),
|
||||||
|
'manufacturer' => data_get($orthanc_src, 'MainDicomTags.Manufacturer'),
|
||||||
|
'manufacturer_model_name' => data_get($orthanc_src, 'MainDicomTags.ManufacturerModelName'),
|
||||||
|
'acquisition_date' => DicomUtils::dateTimeToCarbon(data_get($orthanc_src, 'MainDicomTags.AcquisitionDate'), data_get($orthanc_src, 'MainDicomTags.AcquisitionTime')),
|
||||||
|
];
|
||||||
|
$properties = array_purge($properties);
|
||||||
|
}
|
||||||
|
|
||||||
$series = [];
|
$series = [];
|
||||||
foreach (data_get($orthanc_src, 'Series', []) as $ser) {
|
foreach (data_get($orthanc_src, 'Series', []) as $ser) {
|
||||||
@ -153,6 +177,7 @@ private function prepareData(mixed $orthanc_src): array
|
|||||||
'series_instance_uid' => data_get($ser, 'MainDicomTags.SeriesInstanceUID'),
|
'series_instance_uid' => data_get($ser, 'MainDicomTags.SeriesInstanceUID'),
|
||||||
'series_date' => DicomUtils::dateTimeToCarbon($ser['MainDicomTags']['SeriesDate'], $ser['MainDicomTags']['SeriesTime']),
|
'series_date' => DicomUtils::dateTimeToCarbon($ser['MainDicomTags']['SeriesDate'], $ser['MainDicomTags']['SeriesTime']),
|
||||||
'series_number' => data_get($ser, 'MainDicomTags.SeriesNumber'),
|
'series_number' => data_get($ser, 'MainDicomTags.SeriesNumber'),
|
||||||
|
'series_description' => data_get($ser, 'MainDicomTags.SeriesDescription'),
|
||||||
'protocol_name' => data_get($ser, 'MainDicomTags.ProtocolName'),
|
'protocol_name' => data_get($ser, 'MainDicomTags.ProtocolName'),
|
||||||
'modality' => data_get($ser, 'MainDicomTags.Modality'),
|
'modality' => data_get($ser, 'MainDicomTags.Modality'),
|
||||||
'body_part_examined' => data_get($ser, 'MainDicomTags.BodyPartExamined'),
|
'body_part_examined' => data_get($ser, 'MainDicomTags.BodyPartExamined'),
|
||||||
|
Loading…
Reference in New Issue
Block a user