Added dicom preamble to dicom pdf.

This commit is contained in:
Aljaž Gerečnik 2025-03-06 22:29:45 +01:00
parent 6addcaa168
commit 57e16bbc43

View File

@ -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