Exemplo n.º 1
0
        private static void AddRadiationDoseDefaultValues(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
			DvtkData.Dimse.DataSet dataset)
        {
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.DISTANCE_SOURCE_TO_DETECTOR) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.DISTANCE_SOURCE_TO_DETECTOR, VR.DS, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.IMAGE_AREA_DOSE_PRODUCT) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.IMAGE_AREA_DOSE_PRODUCT, VR.DS, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.TOTAL_TIME_OF_FLUOROSCOPY) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.TOTAL_TIME_OF_FLUOROSCOPY, VR.US, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.TOTAL_NUMBER_OF_EXPOSURES) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.TOTAL_NUMBER_OF_EXPOSURES, VR.US, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.ENTRANCE_DOSE) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.ENTRANCE_DOSE, VR.US, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.EXPOSED_AREA) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.EXPOSED_AREA, VR.US, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.DISTANCE_SOURCE_TO_ENTRANCE) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.DISTANCE_SOURCE_TO_ENTRANCE, VR.DS, dataset);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.COMMENTS_ON_RADIATION_DOSE) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.COMMENTS_ON_RADIATION_DOSE, VR.ST, dataset);
            }

            DvtkData.Dimse.SequenceItem exposeureDoseSequenceItem = new DvtkData.Dimse.SequenceItem();

            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.KVP) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.KVP, VR.DS, exposeureDoseSequenceItem);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.EXPOSURE_TIME) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.EXPOSURE_TIME, VR.IS, exposeureDoseSequenceItem);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.RADIATION_MODE) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.RADIATION_MODE, VR.CS, exposeureDoseSequenceItem);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.FILTER_TYPE) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.FILTER_TYPE, VR.SH, exposeureDoseSequenceItem);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.FILTER_MATERIAL) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.FILTER_MATERIAL, VR.CS, exposeureDoseSequenceItem);
            }
            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.X_RAY_TUBE_CURRENT_IN_UA) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.X_RAY_TUBE_CURRENT_IN_UA, VR.DS, exposeureDoseSequenceItem);
            }

            if (exposeureDoseSequenceItem.Count > 0)
            {
                dataset.AddAttribute(DvtkData.Dimse.Tag.EXPOSURE_DOSE_SEQUENCE.GroupNumber,
                    DvtkData.Dimse.Tag.EXPOSURE_DOSE_SEQUENCE.ElementNumber,
                    VR.SQ, exposeureDoseSequenceItem);
            }
        }
Exemplo n.º 2
0
        private static void AddDefaultWorklistResponseValues(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager, DvtkData.Dimse.DataSet dataset)
        {
            DvtkData.Dimse.SequenceItem scheduledProcedureStepSequenceItem = null;

            // try to get the scheduled procedure step sequence from the dataset
            DvtkData.Dimse.Attribute sequenceAttribute = dataset.GetAttribute(DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_SEQUENCE);
            if ((sequenceAttribute != null) &&
                (sequenceAttribute.ValueRepresentation == DvtkData.Dimse.VR.SQ))
            {
                SequenceOfItems sequenceOfItems = (SequenceOfItems)sequenceAttribute.DicomValue;
                if (sequenceOfItems.Sequence.Count == 1)
                {
                    scheduledProcedureStepSequenceItem = sequenceOfItems.Sequence[0];
                }
            }

            // if the scheduled procedure step sequence is not present - add an empty one
            if (scheduledProcedureStepSequenceItem == null)
            {
                scheduledProcedureStepSequenceItem = new DvtkData.Dimse.SequenceItem();
                dataset.AddAttribute(DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_SEQUENCE.GroupNumber,
                    DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_SEQUENCE.ElementNumber,
                    DvtkData.Dimse.VR.SQ, scheduledProcedureStepSequenceItem);
            }

            // Patient Entity default values
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_NAME, VR.PN, dataset);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.PATIENT_ID, VR.LO, dataset);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_BIRTH_DATE, VR.DA, dataset);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_SEX, VR.CS, dataset);

            // Imaging Service Request Entity default values
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.ACCESSION_NUMBER, VR.SH, dataset);

            // Requested Procedure Entity default values
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.REQUESTED_PROCEDURE_ID, VR.SH, dataset);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.REQUESTED_PROCEDURE_DESCRIPTION, VR.LO, dataset);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.STUDY_INSTANCE_UID, VR.UI, dataset);

            // Scheduled Procedure Step Entity default values
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.MODALITY, VR.CS, scheduledProcedureStepSequenceItem);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_ID, VR.SH, scheduledProcedureStepSequenceItem);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_DESCRIPTION, VR.LO, scheduledProcedureStepSequenceItem);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_START_DATE, VR.DA, scheduledProcedureStepSequenceItem);
            AddDefaultValueEvenIfZeroLength(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_START_TIME, VR.TM, scheduledProcedureStepSequenceItem);
        }
Exemplo n.º 3
0
        private static void AddQueryRetrieveKeys(TagValueCollection queryTags, DvtkData.Dimse.DataSet dataset)
        {
            // use script session to get to definition singleton
            Dvtk.Sessions.ScriptSession scriptSession = new Dvtk.Sessions.ScriptSession();

            // iterate over the query tags
            foreach(DicomTagValue queryTag in queryTags)
            {
                if (queryTag.ParentSequenceTag != DvtkData.Dimse.Tag.UNDEFINED)
                {
                    // try to get the sequence tag in the dataset
                    DvtkData.Dimse.Attribute sequenceAttribute = dataset.GetAttribute(queryTag.ParentSequenceTag);
                    if ((sequenceAttribute != null) &&
                        (sequenceAttribute.ValueRepresentation == DvtkData.Dimse.VR.SQ))
                    {
                        SequenceOfItems sequenceOfItems = (SequenceOfItems)sequenceAttribute.DicomValue;
                        if (sequenceOfItems.Sequence.Count == 1)
                        {
                            DvtkData.Dimse.SequenceItem item = sequenceOfItems.Sequence[0];

                            if (item != null)
                            {
                                VR vr = scriptSession.DefinitionManagement.GetAttributeVrFromDefinition(queryTag.Tag);

                                // add the query value
                                item.AddAttribute(queryTag.Tag.GroupNumber,
                                    queryTag.Tag.ElementNumber,
                                    vr,
                                    queryTag.Value);
                            }
                        }
                    }
                }
                else
                {
                    VR vr = scriptSession.DefinitionManagement.GetAttributeVrFromDefinition(queryTag.Tag);

                    // add the query value
                    dataset.AddAttribute(queryTag.Tag.GroupNumber,
                        queryTag.Tag.ElementNumber,
                        vr,
                        queryTag.Value);
                }
            }
        }
Exemplo n.º 4
0
        private static void AddDefaultValue(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
			DvtkData.Dimse.Tag tag,
			VR vr,
			DvtkData.Dimse.AttributeSet attributeSet)
        {
            // Only add a default value if the attribute does not already exist
            DvtkData.Dimse.Attribute attribute = attributeSet.GetAttribute(tag);
            if (attribute == null)
            {
                // Attribute does not exist so add a default value
                System.String lValue = defaultValueManager.GetInstantiatedValue(tag);
                attributeSet.AddAttribute(tag.GroupNumber, tag.ElementNumber, (DvtkData.Dimse.VR)vr, lValue);
            }
        }
Exemplo n.º 5
0
        private static void AddDefaultValueEvenIfZeroLength(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
            DvtkData.Dimse.Tag tag,
            VR vr,
            DvtkData.Dimse.AttributeSet attributeSet)
        {
            // Only add a default value if the attribute does not already exist or has a zero length
            DvtkData.Dimse.Attribute attribute = attributeSet.GetAttribute(tag);
            if (attribute == null)
            {
                // Attribute does not exist so add a default value
                System.String lValue = defaultValueManager.GetInstantiatedValue(tag);
                attributeSet.AddAttribute(tag.GroupNumber, tag.ElementNumber, (DvtkData.Dimse.VR)vr, lValue);
            }
            else if (attribute.Length == 0)
            {
                // Remove the existing attribute
                attributeSet.Remove(attribute);

                // Attribute had zero length so add a default value
                System.String lValue = defaultValueManager.GetInstantiatedValue(tag);
                attributeSet.AddAttribute(tag.GroupNumber, tag.ElementNumber, (DvtkData.Dimse.VR)vr, lValue);
            }
        }
Exemplo n.º 6
0
        private static void AddDefaultMppsCompletedDiscontinuedValues(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
			ReferencedSopItemCollection storageCommitItems,
			DvtkData.Dimse.DataSet dataset,
			System.String mppsStatus)
        {
            DvtkData.Dimse.SequenceItem performedSeriesSequenceItem = new DvtkData.Dimse.SequenceItem();

            // Series Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PROTOCOL_NAME, VR.LO, performedSeriesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.RETRIEVE_AE_TITLE, VR.AE, performedSeriesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_DESCRIPTION, VR.LO, performedSeriesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMING_PHYSICIANS_NAME, VR.PN, performedSeriesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.OPERATORS_NAME, VR.PN, performedSeriesSequenceItem);

            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_INSTANCE_UID, VR.UI, performedSeriesSequenceItem);

            performedSeriesSequenceItem.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_STANDALONE_SOP_INSTANCE_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_STANDALONE_SOP_INSTANCE_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);

            // Performed Procedure Step Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_TIME, VR.TM, dataset);

            if (defaultValueManager.GetInstantiatedValue(DvtkData.Dimse.Tag.COMMENTS_ON_THE_PERFORMED_PROCEDURE_STEPS) != System.String.Empty)
            {
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.COMMENTS_ON_THE_PERFORMED_PROCEDURE_STEPS, VR.ST, dataset);
            }

            AddReferencedSopSequence(storageCommitItems, 0x00081140, performedSeriesSequenceItem, InstanceStateEnum.InstanceMppsCompleted);

            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ, performedSeriesSequenceItem);

            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_STATUS.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_STATUS.ElementNumber,
                VR.CS, mppsStatus);

            // Add any RadiationDoseDefaultValues default values
            AddRadiationDoseDefaultValues(defaultValueManager, dataset);
        }
Exemplo n.º 7
0
        private static void AddDefaultMppsInProgressValues(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager, DvtkData.Dimse.DataSet dataset)
        {
            DvtkData.Dimse.SequenceItem scheduledStepAttributesSequenceItem = new DvtkData.Dimse.SequenceItem();

            // Patient Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_NAME, VR.PN, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENT_ID, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_BIRTH_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_SEX, VR.CS, dataset);

            // Study Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_ID, VR.SH, dataset);

            // Requested Procedure Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.REQUESTED_PROCEDURE_ID, VR.SH, scheduledStepAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.REQUESTED_PROCEDURE_DESCRIPTION, VR.LO, scheduledStepAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_INSTANCE_UID, VR.UI, scheduledStepAttributesSequenceItem);

            // Scheduled Procedure Step Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.MODALITY, VR.CS, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_ID, VR.SH, scheduledStepAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_DESCRIPTION, VR.LO, scheduledStepAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_START_DATE, VR.DA, scheduledStepAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_START_TIME, VR.TM, scheduledStepAttributesSequenceItem);

            // Performed Procedure Step Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_ID, VR.SH, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_DESCRIPTION, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_START_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_START_TIME, VR.TM, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_STATION_AE_TITLE, VR.AE, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_STATION_NAME, VR.SH, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_LOCATION, VR.SH, dataset);

            // Add in zero length attributes
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_DATE.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_DATE.ElementNumber,
                DvtkData.Dimse.VR.DA);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_TIME.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_END_TIME.ElementNumber,
                DvtkData.Dimse.VR.TM);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_TYPE_DESCRIPTION.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_TYPE_DESCRIPTION.ElementNumber,
                DvtkData.Dimse.VR.LO);
            dataset.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_PATIENT_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_PATIENT_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PROCEDURE_CODE_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.PROCEDURE_CODE_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_ACTION_ITEM_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_ACTION_ITEM_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);

            scheduledStepAttributesSequenceItem.AddAttribute(DvtkData.Dimse.Tag.SCHEDULED_ACTION_ITEM_CODE_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.SCHEDULED_ACTION_ITEM_CODE_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);
            scheduledStepAttributesSequenceItem.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_STUDY_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_STUDY_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ);

            dataset.AddAttribute(DvtkData.Dimse.Tag.SCHEDULED_STEP_ATTRIBUTES_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.SCHEDULED_STEP_ATTRIBUTES_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ, scheduledStepAttributesSequenceItem);
            dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_STATUS.GroupNumber,
                DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_STATUS.ElementNumber,
                DvtkData.Dimse.VR.CS, "IN PROGRESS");
        }
Exemplo n.º 8
0
        private static void AddStoreInstanceValues(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
			DvtkData.Dimse.DataSet dataset,
			bool generateImageData)
        {
            DvtkData.Dimse.SequenceItem requestAttributesSequenceItem = new DvtkData.Dimse.SequenceItem();

            // Patient Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_NAME, VR.PN, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENT_ID, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_BIRTH_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PATIENTS_SEX, VR.CS, dataset);

            // Study Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_DESCRIPTION, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_ID, VR.SH, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_TIME, VR.TM, dataset);

            // Series Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PROTOCOL_NAME, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_DESCRIPTION, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMING_PHYSICIANS_NAME, VR.PN, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.OPERATORS_NAME, VR.PN, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_INSTANCE_UID, VR.UI, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_NUMBER, VR.IS, dataset);

            // Instance Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SOP_INSTANCE_UID, VR.UI, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.INSTANCE_NUMBER, VR.IS, dataset);

            // Image Service Request Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.ACCESSION_NUMBER, VR.SH, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.REFERRING_PHYSICIANS_NAME, VR.PN, dataset);

            // Requested Procedure Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.REQUESTED_PROCEDURE_ID, VR.SH, requestAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.STUDY_INSTANCE_UID, VR.UI, dataset);

            // Scheduled Procedure Step Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.MODALITY, VR.CS, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_ID, VR.SH, requestAttributesSequenceItem);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SCHEDULED_PROCEDURE_STEP_DESCRIPTION, VR.LO, requestAttributesSequenceItem);

            // Performed Procedure Step Entity default values
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_ID, VR.SH, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_DESCRIPTION, VR.LO, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_START_DATE, VR.DA, dataset);
            AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.PERFORMED_PROCEDURE_STEP_START_TIME, VR.TM, dataset);

            // Check if the Request Attribute Sequence is already present
            DvtkData.Dimse.Attribute requestAttributesSequence = dataset.GetAttribute(DvtkData.Dimse.Tag.REQUEST_ATTRIBUTES_SEQUENCE);
            if (requestAttributesSequence != null)
            {
                // Remove the existing (old) sequence
                dataset.Remove(requestAttributesSequence);
            }

            // Add the new sequence
            dataset.AddAttribute(DvtkData.Dimse.Tag.REQUEST_ATTRIBUTES_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.REQUEST_ATTRIBUTES_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ, requestAttributesSequenceItem);

            // Check if we need to generate the image data too (including pixel data)
            if (generateImageData == true)
            {
                // Add Secondary Capture image data
                dataset.AddAttribute(DvtkData.Dimse.Tag.SOP_CLASS_UID.GroupNumber,
                    DvtkData.Dimse.Tag.SOP_CLASS_UID.ElementNumber,
                    DvtkData.Dimse.VR.UI, "1.2.840.10008.5.1.4.1.1.7");

                dataset.AddAttribute(DvtkData.Dimse.Tag.CONVERSION_TYPE.GroupNumber,
                    DvtkData.Dimse.Tag.CONVERSION_TYPE.ElementNumber,
                    DvtkData.Dimse.VR.CS, "DV");
                dataset.AddAttribute(DvtkData.Dimse.Tag.PATIENT_ORIENTATION.GroupNumber,
                    DvtkData.Dimse.Tag.PATIENT_ORIENTATION.ElementNumber,
                    DvtkData.Dimse.VR.CS);

                dataset.AddAttribute(DvtkData.Dimse.Tag.SAMPLES_PER_PIXEL.GroupNumber,
                    DvtkData.Dimse.Tag.SAMPLES_PER_PIXEL.ElementNumber,
                    DvtkData.Dimse.VR.US, 1);
                dataset.AddAttribute(DvtkData.Dimse.Tag.PHOTOMETRIC_INTERPRETATION.GroupNumber,
                    DvtkData.Dimse.Tag.PHOTOMETRIC_INTERPRETATION.ElementNumber,
                    DvtkData.Dimse.VR.CS, "MONOCHROME2");
                dataset.AddAttribute(DvtkData.Dimse.Tag.ROWS.GroupNumber,
                    DvtkData.Dimse.Tag.ROWS.ElementNumber,
                    DvtkData.Dimse.VR.US, 512);
                dataset.AddAttribute(DvtkData.Dimse.Tag.COLUMNS.GroupNumber,
                    DvtkData.Dimse.Tag.COLUMNS.ElementNumber,
                    DvtkData.Dimse.VR.US, 512);
                dataset.AddAttribute(DvtkData.Dimse.Tag.BITS_ALLOCATED.GroupNumber,
                    DvtkData.Dimse.Tag.BITS_ALLOCATED.ElementNumber,
                    DvtkData.Dimse.VR.US, 8);
                dataset.AddAttribute(DvtkData.Dimse.Tag.BITS_STORED.GroupNumber,
                    DvtkData.Dimse.Tag.BITS_STORED.ElementNumber,
                    DvtkData.Dimse.VR.US, 8);
                dataset.AddAttribute(DvtkData.Dimse.Tag.HIGH_BIT.GroupNumber,
                    DvtkData.Dimse.Tag.HIGH_BIT.ElementNumber,
                    DvtkData.Dimse.VR.US, 7);
                dataset.AddAttribute(DvtkData.Dimse.Tag.PIXEL_REPRESENTATION.GroupNumber,
                    DvtkData.Dimse.Tag.PIXEL_REPRESENTATION.ElementNumber,
                    DvtkData.Dimse.VR.US, 0);

                dataset.AddAttribute(DvtkData.Dimse.Tag.PIXEL_DATA.GroupNumber,
                    DvtkData.Dimse.Tag.PIXEL_DATA.ElementNumber,
                    DvtkData.Dimse.VR.OB, 512);
            }
        }
Exemplo n.º 9
0
        private static void UpdateValue(System.String attributeValue,
			DvtkData.Dimse.Tag tag,
			VR vr,
			DvtkData.Dimse.AttributeSet attributeSet)
        {
            // Only update the value if the dataset contains an attribute with the same tag
            DvtkData.Dimse.Attribute attribute = attributeSet.GetAttribute(tag);
            if (attribute != null)
            {
                // Remove the existing attribute
                attributeSet.Remove(attribute);

                // Add the new (updated) value
                attributeSet.AddAttribute(tag.GroupNumber, tag.ElementNumber, (DvtkData.Dimse.VR)vr, attributeValue);
            }
        }
Exemplo n.º 10
0
        private static void AddStorageCommitmentValues(ReferencedSopItemCollection storageCommitItems,
			DvtkData.Dimse.DataSet dataset,
			System.String storageCommitTransactionUid,
			System.String mppsInstanceUid)
        {
            DvtkData.Dimse.SequenceItem referencedStudyComponentSequenceItem = new DvtkData.Dimse.SequenceItem();
            referencedStudyComponentSequenceItem.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_SOP_CLASS_UID.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_SOP_CLASS_UID.ElementNumber,
                DvtkData.Dimse.VR.UI, "1.2.840.10008.3.1.2.3.3");
            referencedStudyComponentSequenceItem.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_SOP_INSTANCE_UID.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_SOP_INSTANCE_UID.ElementNumber,
                DvtkData.Dimse.VR.UI, mppsInstanceUid);
            dataset.AddAttribute(DvtkData.Dimse.Tag.REFERENCED_STUDY_COMPONENT_SEQUENCE.GroupNumber,
                DvtkData.Dimse.Tag.REFERENCED_STUDY_COMPONENT_SEQUENCE.ElementNumber,
                DvtkData.Dimse.VR.SQ, referencedStudyComponentSequenceItem);

            AddReferencedSopSequence(storageCommitItems, 0x00081199, dataset, InstanceStateEnum.InstanceStorageCommitRequested);

            dataset.AddAttribute(DvtkData.Dimse.Tag.TRANSACTION_UID.GroupNumber,
                DvtkData.Dimse.Tag.TRANSACTION_UID.ElementNumber,
                DvtkData.Dimse.VR.UI, storageCommitTransactionUid);
        }
Exemplo n.º 11
0
        private static void AddStorageCommitItems(Dvtk.Dicom.InformationEntity.DefaultValues.DefaultValueManager defaultValueManager,
			ReferencedSopItemCollection storageCommitItems,
			DvtkData.Dimse.DataSet dataset)
        {
            DvtkData.Dimse.SequenceItem performedSeriesSequenceItem = null;

            // Try to get the Performed Series Sequence
            DvtkData.Dimse.Attribute performedSeriesSequence = dataset.GetAttribute(DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE);
            if (performedSeriesSequence != null)
            {
                DvtkData.Dimse.SequenceOfItems sequenceOfItems = (DvtkData.Dimse.SequenceOfItems)performedSeriesSequence.DicomValue;
                if (sequenceOfItems.Sequence.Count == 1)
                {
                    performedSeriesSequenceItem = sequenceOfItems.Sequence[0];
                }
                else
                {
                    dataset.Remove(performedSeriesSequence);

                    performedSeriesSequenceItem = new DvtkData.Dimse.SequenceItem();

                    dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.GroupNumber,
                        DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.ElementNumber,
                        DvtkData.Dimse.VR.SQ, performedSeriesSequenceItem);
                }
            }
            else
            {
                performedSeriesSequenceItem = new DvtkData.Dimse.SequenceItem();

                dataset.AddAttribute(DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.GroupNumber,
                    DvtkData.Dimse.Tag.PERFORMED_SERIES_SEQUENCE.ElementNumber,
                    DvtkData.Dimse.VR.SQ, performedSeriesSequenceItem);
            }

            if (performedSeriesSequenceItem != null)
            {
                // Series Entity default values
                DvtkData.Dimse.Attribute seriesInstanceUid = performedSeriesSequenceItem.GetAttribute(DvtkData.Dimse.Tag.SERIES_INSTANCE_UID);
                if (seriesInstanceUid != null)
                {
                    performedSeriesSequenceItem.Remove(seriesInstanceUid);
                }
                AddDefaultValue(defaultValueManager, DvtkData.Dimse.Tag.SERIES_INSTANCE_UID, VR.UI, performedSeriesSequenceItem);

                AddReferencedSopSequence(storageCommitItems, 0x00081140, performedSeriesSequenceItem, InstanceStateEnum.InstanceMppsCompleted);
            }
        }
Exemplo n.º 12
0
        private static void AddTagsToDataset(TagValueCollection tags, DvtkData.Dimse.DataSet dataset)
        {
            // iterate over the tags
            foreach(DicomTagValue tag in tags)
            {
                if (tag.ParentSequenceTag != Tag.UNDEFINED)
                {
                    // try to get the sequence tag in the dataset
                    DvtkData.Dimse.Attribute sequenceAttribute = dataset.GetAttribute(tag.ParentSequenceTag);
                    if ((sequenceAttribute != null) &&
                        (sequenceAttribute.ValueRepresentation == DvtkData.Dimse.VR.SQ))
                    {
                        SequenceOfItems sequenceOfItems = (SequenceOfItems)sequenceAttribute.DicomValue;
                        if (sequenceOfItems.Sequence.Count == 1)
                        {
                            SequenceItem item = sequenceOfItems.Sequence[0];

                            if (item != null)
                            {
                                VR vr = VR.UN;

                                // try to get the attribute in the item
                                DvtkData.Dimse.Attribute attribute = item.GetAttribute(tag.Tag);
                                if (attribute != null)
                                {
                                    vr = attribute.ValueRepresentation;
                                    item.Remove(attribute);
                                }

                                // add the query value
                                item.AddAttribute(tag.Tag.GroupNumber,
                                    tag.Tag.ElementNumber,
                                    vr,
                                    tag.Value);
                            }
                        }
                    }
                }
                else
                {
                    VR vr = VR.UN;

                    // try to get the attribute in the dataset
                    DvtkData.Dimse.Attribute attribute = dataset.GetAttribute(tag.Tag);
                    if (attribute != null)
                    {
                        vr = attribute.ValueRepresentation;
                        dataset.Remove(attribute);
                    }

                    // special check for the SPECIFIC CHARACTER SET attribute
                    if (tag.Tag == Tag.SPECIFIC_CHARACTER_SET)
                    {
                        vr = VR.CS;
                    }

                    // add the query value
                    dataset.AddAttribute(tag.Tag.GroupNumber,
                        tag.Tag.ElementNumber,
                        vr,
                        tag.Value);
                }
            }
        }
Exemplo n.º 13
0
        private static void AddDefaultReturnKeys(DvtkData.Dimse.DataSet dataset)
        {
            // use the Worklist Information Entities to generate the default Return Key attribute set
            PatientInformationEntity patientIe = new PatientInformationEntity();
            foreach(TagType tagType in patientIe.TagTypeList)
            {
                dataset.AddAttribute(tagType.Tag.GroupNumber, tagType.Tag.ElementNumber, tagType.Vr);
            }
            VisitInformationEntity visitIe = new VisitInformationEntity();
            foreach(TagType tagType in visitIe.TagTypeList)
            {
                dataset.AddAttribute(tagType.Tag.GroupNumber, tagType.Tag.ElementNumber, tagType.Vr);
            }
            ImagingServiceRequestInformationEntity imagingServiceRequestIe = new ImagingServiceRequestInformationEntity();
            foreach(TagType tagType in imagingServiceRequestIe.TagTypeList)
            {
                dataset.AddAttribute(tagType.Tag.GroupNumber, tagType.Tag.ElementNumber, tagType.Vr);
            }
            RequestedProcedureInformationEntity requestedProcedureIe = new RequestedProcedureInformationEntity();
            foreach(TagType tagType in requestedProcedureIe.TagTypeList)
            {
                dataset.AddAttribute(tagType.Tag.GroupNumber, tagType.Tag.ElementNumber, tagType.Vr);
            }

            SequenceItem item = new SequenceItem();
            ScheduledProcedureStepInformationEntity scheduledProcedureStepIe = new ScheduledProcedureStepInformationEntity();
            foreach(TagType tagType in scheduledProcedureStepIe.TagTypeList)
            {
                if (tagType.Tag != Tag.SPECIFIC_CHARACTER_SET)
                {
                    item.AddAttribute(tagType.Tag.GroupNumber, tagType.Tag.ElementNumber, tagType.Vr);
                }
            }
            dataset.AddAttribute(Tag.SCHEDULED_PROCEDURE_STEP_SEQUENCE.GroupNumber,
                Tag.SCHEDULED_PROCEDURE_STEP_SEQUENCE.ElementNumber, VR.SQ, item);
        }
        private static void AddDicomAttribute(DvtkData.Dimse.AttributeSet dataset, DicomTagPath dicomTagPath, System.String dicomValue)
        {
            if (dicomTagPath.Next != null)
            {
                // Try to get the sequence identified by this Tag
                DvtkData.Dimse.Attribute sequenceAttribute = dataset.GetAttribute(dicomTagPath.Tag);
                if (sequenceAttribute == null)
                {
                    // Need to add the sequence
                    DvtkData.Dimse.SequenceItem item = new DvtkData.Dimse.SequenceItem();
                    dataset.AddAttribute(dicomTagPath.Tag.GroupNumber,
                        dicomTagPath.Tag.ElementNumber,
                        DvtkData.Dimse.VR.SQ, item);

                    // Get the newly added sequence
                    sequenceAttribute = dataset.GetAttribute(dicomTagPath.Tag);
                }

                // Get the contained item
                DvtkData.Dimse.SequenceOfItems sequenceOfItems = (DvtkData.Dimse.SequenceOfItems)sequenceAttribute.DicomValue;
                if (sequenceOfItems.Sequence.Count == 1)
                {
                    DvtkData.Dimse.SequenceItem item = sequenceOfItems.Sequence[0];

                    // Call recursively
                    AddDicomAttribute(item, dicomTagPath.Next, dicomValue);
                }
            }
            else
            {
                // Try to get the attribute identified by this Tag
                DvtkData.Dimse.Attribute attribute = dataset.GetAttribute(dicomTagPath.Tag);
                if (attribute != null)
                {
                    // If present - remove the attribute - we want to update the value
                    dataset.Remove(attribute);
                }

                // Add the new value
                dataset.AddAttribute(dicomTagPath.Tag.GroupNumber, dicomTagPath.Tag.ElementNumber, DicomTagVrLookup.GetVR(dicomTagPath.Tag), dicomValue);
            }
        }