public void DicomSetGetValueTest() { //Make sure to initialize the DICOM engine, this needs to be done only once //In the whole application DicomEngine.Startup(); using (DicomDataSet dicomDataset = new DicomDataSet()) { dicomDataset.Reset(); dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian); DicomElement element = dicomDataset.InsertElement(null, false, DicomTagType.CineRate, DicomVRType.IS, false, 0); if (element != null) { dicomDataset.SetIntValue(element, new int[] { 30 }, 1); int[] value = dicomDataset.GetIntValue(element, 0, 1);// can also call GetLongValue Debug.Assert(value[0] == 30); } element = dicomDataset.InsertElement(null, false, DicomTagType.ChannelMaximumValue, DicomVRType.OB, false, 0); if (element != null) { dicomDataset.SetByteValue(element, new byte[] { 55 }, 1); byte[] value = dicomDataset.GetByteValue(element, 0, 1); Debug.Assert(value[0] == 55); } element = dicomDataset.InsertElement(null, false, DicomTagType.NumberOfRemainingSuboperations, DicomVRType.US, false, 0); if (element != null) { dicomDataset.SetShortValue(element, new short[] { 2 }, 1); short[] value = dicomDataset.GetShortValue(element, 0, 1); Debug.Assert(value[0] == 2); } element = dicomDataset.InsertElement(null, false, DicomTagType.SliceLocation, DicomVRType.DS, false, 0); if (element != null) { dicomDataset.SetDoubleValue(element, new double[] { 10.5 }, 1); double[] value = dicomDataset.GetDoubleValue(element, 0, 1); Debug.Assert(value[0] == 10.5); } element = dicomDataset.InsertElement(null, false, DicomTagType.PresentationPixelMagnificationRatio, DicomVRType.FL, false, 0); if (element != null) { dicomDataset.SetFloatValue(element, new float[] { 3.2F }, 1); float[] value = dicomDataset.GetFloatValue(element, 0, 1); Debug.Assert(value[0] == 3.2F); } element = dicomDataset.InsertElement(null, false, DicomTagType.InstanceCreationDate, DicomVRType.DA, false, 0); if (element != null) { DicomDateValue[] newvalue = new DicomDateValue[1]; newvalue[0].Year = 2004; newvalue[0].Month = 1; newvalue[0].Day = 8; dicomDataset.SetDateValue(element, newvalue); DicomDateValue[] value = dicomDataset.GetDateValue(element, 0, 1); Debug.Assert((value[0].Year == 2004) && (value[0].Month == 1) && (value[0].Day == 8)); } element = dicomDataset.InsertElement(null, false, DicomTagType.InstanceCreationTime, DicomVRType.TM, false, 0); if (element != null) { DicomTimeValue[] newvalue = new DicomTimeValue[1]; newvalue[0].Hours = 2; newvalue[0].Minutes = 3; newvalue[0].Seconds = 5; dicomDataset.SetTimeValue(element, newvalue); DicomTimeValue[] value = dicomDataset.GetTimeValue(element, 0, 1); Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5)); } element = dicomDataset.InsertElement(null, false, DicomTagType.AcquisitionDatetime, DicomVRType.DT, false, 0); if (element != null) { DicomDateTimeValue[] newvalue = new DicomDateTimeValue[1]; newvalue[0].Year = 2004; newvalue[0].Month = 1; newvalue[0].Day = 8; newvalue[0].Hours = 2; newvalue[0].Minutes = 3; newvalue[0].Seconds = 5; dicomDataset.SetDateTimeValue(element, newvalue); DicomDateTimeValue[] value = dicomDataset.GetDateTimeValue(element, 0, 1); Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5)); } element = dicomDataset.InsertElement(null, false, DicomTagType.PatientAge, DicomVRType.AS, false, 0); if (element != null) { DicomAgeValue[] newvalue = new DicomAgeValue[1]; newvalue[0].Number = 25; newvalue[0].Reference = DicomAgeReferenceType.Days; dicomDataset.SetAgeValue(element, newvalue); DicomAgeValue[] value = dicomDataset.GetAgeValue(element, 0, 1); Debug.Assert((value[0].Number == 25)); } element = dicomDataset.InsertElement(null, false, DicomTagType.PatientName, DicomVRType.PN, false, 0); if (element != null) { dicomDataset.FreeElementValue(element); dicomDataset.SetStringValue(element, "John Doe", DicomCharacterSetType.Default); Debug.Assert(dicomDataset.GetElementValueCount(element) == 1); Debug.Assert(dicomDataset.GetStringValue(element, 0) == "John Doe"); } byte[] inPreamble = new byte[128]; for (int i = 0; i < 128; i++) { inPreamble[i] = (byte)i; } dicomDataset.SetPreamble(inPreamble, 0, 128); byte[] outPreamble = dicomDataset.GetPreamble(128); Debug.Assert(inPreamble.Length == outPreamble.Length); element = dicomDataset.FindFirstElement(element, DicomTagType.NumberOfRemainingSuboperations, true); if (element != null) { //We don�t really need to do this dicomDataset.FreeElementValue(element); byte[] inBinaryValue = new byte[2]; inBinaryValue[0] = 0; inBinaryValue[1] = 1; dicomDataset.SetBinaryValue(element, inBinaryValue, 2); byte[] outBinaryValue = dicomDataset.GetBinaryValue(element, 2); Debug.Assert((outBinaryValue[0] == 0) && (outBinaryValue[1] == 1)); } element = dicomDataset.InsertElement(null, false, DicomTagType.StudyDate, DicomVRType.DA, false, 0); if (element != null) { DicomDateValue date1 = new DicomDateValue(); date1.Day = 1; date1.Month = 2; date1.Year = 2005; DicomDateRangeValue[] newvalue = new DicomDateRangeValue[1]; newvalue[0].Date1 = date1; newvalue[0].Type = DicomRangeType.Lower; dicomDataset.SetDateRangeValue(element, newvalue); DicomDateRangeValue value = dicomDataset.GetDateRangeValue(element, 0); Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Date1.Year == 2005)); } element = dicomDataset.InsertElement(null, false, DicomTagType.StudyTime, DicomVRType.TM, false, 0); if (element != null) { DicomTimeValue time1 = new DicomTimeValue(); time1.Hours = 2; time1.Minutes = 1; time1.Seconds = 3; DicomTimeRangeValue[] newvalue = new DicomTimeRangeValue[1]; newvalue[0].Time1 = time1; newvalue[0].Type = DicomRangeType.Lower; dicomDataset.SetTimeRangeValue(element, newvalue); DicomTimeRangeValue value = dicomDataset.GetTimeRangeValue(element, 0); Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Time1.Hours == 2)); } element = dicomDataset.InsertElement(null, false, DicomTagType.PatientID, DicomVRType.LO, false, 0); if (element != null) { dicomDataset.SetConvertValue(element, "154-4485", 1); Debug.Assert(dicomDataset.GetConvertValue(element) == "154-4485"); } dicomDataset.Save(@"C:\\Test.dic", DicomDataSetSaveFlags.None); } DicomEngine.Shutdown(); } |