From 57e16bbc43c85e5ed8aacc17800ececce3761a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alja=C5=BE=20Gere=C4=8Dnik?= Date: Thu, 6 Mar 2025 22:29:45 +0100 Subject: [PATCH] Added dicom preamble to dicom pdf. --- dicom_sr_to_pdf.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dicom_sr_to_pdf.py b/dicom_sr_to_pdf.py index 2540cf8..9ad1254 100644 --- a/dicom_sr_to_pdf.py +++ b/dicom_sr_to_pdf.py @@ -1,6 +1,6 @@ import pydicom -from pydicom.dataset import Dataset -from pydicom.dataset import FileMetaDataset +from pydicom.dataset import Dataset, FileMetaDataset +from pydicom.sequence import Sequence from pydicom.uid import MediaStorageDirectoryStorage, EncapsulatedPDFStorage, generate_uid import matplotlib matplotlib.use("Agg") # Use non-GUI backend to avoid Tkinter issues @@ -138,24 +138,30 @@ def create_dcm_pdf(sr, pdf_path, instance_uid): ds.AcquisitionDateTime = "" ds.InstanceNumber = 1 ds.BurnedInAnnotation = "YES" - ds.DocumentTitle = "" + ds.ConceptNameCodeSequence = Sequence([]) + ds.DocumentTitle = "Mammography Report" ds.EncapsulatedDocument = pdf_data ds.MIMETypeOfEncapsulatedDocument = "application/pdf" # Create a FileMetaDataset for DICOM file meta information file_meta = FileMetaDataset() + file_meta.FileMetaInformationVersion = b'\x00\x01' file_meta.MediaStorageSOPClassUID = EncapsulatedPDFStorage file_meta.MediaStorageSOPInstanceUID = ds.SOPInstanceUID file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian + file_meta.ImplementationClassUID = pydicom.uid.PYDICOM_IMPLEMENTATION_UID + file_meta.ImplementationVersionName = "pydicom-2.4.4" file_meta.FileMetaInformationGroupLength = 0 # Assign the file meta information to the dataset ds.file_meta = file_meta - - # Ensure preamble and "DICM" prefix is included + ds.is_implicit_VR = True # Set to explicit VR ds.is_little_endian = True # Set to little endian + # Ensure preamble and "DICM" prefix is included + ds.preamble = b'\x00' * 128 # 128 bytes of zero padding + return ds