DICOM is a specification for the creation, transmission, and storage of digital medical image and report data. It defines a data dictionary, data structures, file formats, client and server services, workflow, and compression, among other things.
DICOM files contain a file header portion, File Meta Information portion, and a single SOP instance. The header is made up of a 128 byte preamble, followed by the characters
DICM, all uppercase. The preamble must contain all zeroes if it is not used (sometimes applications will use it for proprietary data).
Following the header is the File Meta Information. This portion follows a tagged file format, and contains information about the file, the series and study it belongs to, and the patient that it belongs to. This information is frequently parsed and used as indexing data by PACS and archive systems.
Click on the image for a larger view.
In the DICOM model, a patient can have 1..n studies (sometimes referred to as exams or procedures). Each study consists of 1..n series. A series generally equates to a specific type (modality) of data, or the position of a patient on the acquisition device. Each series contains 1..n DICOM object instances (most commonly images, but also reports, waveform objects, etc.). All of this information is contained in each DICOM object of a study. Therefore, if a study is performed on a patient, containing 2 series, each with 10 instances, all of the instanceswill contain the patient and study information in it's header. The instances will also contain information regarding the series it is in, as well as its instance information.
As mentioned, within the header are multiple data elements, contained within tags. Some of these elements are single values, of different data types. These elements may also be nested, containing their own data elements. This is called a sequence. In addition, it is possible to create your own tags, containing data elements that you define. This is called a private tag, and will generally not be recognized by another application reading your DICOM file. Private tags are useful when you want to convey information not defined within the DICOM standard, to be read generally by another instance of your application, or another application of your writing.