# write_new.py """Simple example of writing a DICOM file from scratch using pydicom. This example does not produce a DICOM standards compliant file as written, you will have to change UIDs to valid values and add all required DICOM data elements """ # Copyright (c) 2010-2012 Darcy Mason # This file is part of pydicom, released under a modified MIT license. # See the file license.txt included with this distribution, also # available at http://pydicom.googlecode.com from __future__ import print_function import sys import os.path import dicom from dicom.dataset import Dataset, FileDataset import dicom.UID if __name__ == "__main__": print("---------------------------- ") print("write_new.py example program") print("----------------------------") print("Demonstration of writing a DICOM file using pydicom") print("NOTE: this is only a demo. Writing a DICOM standards compliant file") print("would require official UIDs, and checking the DICOM standard to ensure") print("that all required data elements were present.") print() if sys.platform.lower().startswith("win"): filename = r"c:\temp\test.dcm" filename2 = r"c:\temp\test-explBig.dcm" else: homedir = os.path.expanduser("~") filename = os.path.join(homedir, "test.dcm") filename2 = os.path.join(homedir, "test-explBig.dcm") print("Setting file meta information...") # Populate required values for file meta information file_meta = Dataset() file_meta.MediaStorageSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' # CT Image Storage file_meta.MediaStorageSOPInstanceUID = "1.2.3" # !! Need valid UID here for real work file_meta.ImplementationClassUID = "1.2.3.4" # !!! Need valid UIDs here print("Setting dataset values...") # Create the FileDataset instance (initially no data elements, but file_meta supplied) ds = FileDataset(filename, {}, file_meta=file_meta, preamble="\0" * 128) # Add the data elements -- not trying to set all required here. Check DICOM standard ds.PatientName = "Test^Firstname" ds.PatientID = "123456" # Set the transfer syntax ds.is_little_endian = True ds.is_implicit_VR = True print("Writing test file", filename) ds.save_as(filename) print("File saved.") # Write as a different transfer syntax ds.file_meta.TransferSyntaxUID = dicom.UID.ExplicitVRBigEndian # XXX shouldn't need this but pydicom 0.9.5 bug not recognizing transfer syntax ds.is_little_endian = False ds.is_implicit_VR = False print("Writing test file as Big Endian Explicit VR", filename2) ds.save_as(filename2)