From 1b8eeee04b657f9b9f786ef5689f04e6af46a9ba Mon Sep 17 00:00:00 2001 From: mario Date: Fri, 11 Jul 2025 13:35:26 +0700 Subject: [PATCH] add: safe_get_attr untuk force None / null ke ' ' --- main.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index e66aee5..0619075 100644 --- a/main.py +++ b/main.py @@ -397,6 +397,7 @@ def process_single_study(study_uid, accession_number=None, log_dir=None): # STEP 1: Retrieve the study retrieve_result = retriever.retrieve_study(study_uid, accession_number=accession_number) + if not retrieve_result['success']: logger.error(f"Failed to retrieve study {study_uid}: {retrieve_result['status']}") return {'success': False, 'error': f"Failed to retrieve study: {retrieve_result['status']}"} @@ -405,6 +406,7 @@ def process_single_study(study_uid, accession_number=None, log_dir=None): # STEP 2: Send the study to destination PACS send_result = sender.send_study(os.path.join(settings.DICOM_STORE_DIR, study_uid)) + if not send_result['success']: logger.error(f"Failed to send study {study_uid}: {send_result.get('error', 'Unknown error')}") @@ -444,15 +446,21 @@ def process_single_study(study_uid, accession_number=None, log_dir=None): # Get first instance for the series instance = finder.find_first_instance_for_series(study_uid, series_uid) - + + # Kalau null atau None, forced ke '' + def safe_get_attr(obj, attr_name, default=''): + """Get attribute value, ensuring None is converted to default.""" + value = getattr(obj, attr_name, default) + return default if value is None else str(value) + series_info = { - 'Series_IUID': getattr(series, 'SeriesInstanceUID', ''), - 'SeriesNumber': getattr(series, 'SeriesNumber', ''), - 'SeriesDescription': getattr(series, 'SeriesDescription', ''), - 'NumberOfInstances': getattr(series, 'NumberOfSeriesRelatedInstances', ''), - 'SOP_IUID': getattr(instance, 'SOPInstanceUID', '') if instance else '' + 'Series_IUID': safe_get_attr(series, 'SeriesInstanceUID'), + 'SeriesNumber': safe_get_attr(series, 'SeriesNumber'), + 'SeriesDescription': safe_get_attr(series, 'SeriesDescription'), + 'NumberOfInstances': safe_get_attr(series, 'NumberOfSeriesRelatedInstances'), + 'SOP_IUID': safe_get_attr(instance, 'SOPInstanceUID') if instance else '' } - + study_log['Series'].append(series_info) # STEP 4: Send study_log to HIS API