⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aecgformat.cs

📁 ecg tool kit for medical image retrieval system
💻 CS
📖 第 1 页 / 共 4 页
字号:
		{
			get
			{
				return 0;
			}
			set {}
		}
		public ushort LowpassFilter
		{
			get
			{
				if (Component.Count > 0)
				{
					aECGControlVariableHolder var0 = Component[0].getControlVariable("MDC_ECG_CTL_VBL_ATTR_FILTER_LOW_PASS");

					if (var0 != null)
					{
						aECGControlVariable var1 = var0.ControlVariable;

						if ((var1 != null)
							&&	(var1.InnerVariables[0].Value.Unit == "Hz"))
						{
							try
							{
								double temp = (double) var1.InnerVariables[0].Value.Value;

								return (ushort) temp;
							}
							catch
							{
							}
						}
					}
				}

				return 0;
			}
			set
			{
				if (value != 0)
				{
					aECGControlVariable var1 = new aECGControlVariable();

					var1.Code.Code = "MDC_ECG_CT_LVBL_ATTR_FILTER_LOW_PASS";
					var1.Code.CodeSystem = "2.16.840.1.113883.6.24";
					var1.Code.CodeSystemName = "MDC";
					var1.Code.DisplayName = "Low Pass Filter";

					aECGControlVariable var2 = new aECGControlVariable("component");
					var2.Code.Code = "MDC_ECG_CTL_VBL_ATTR_FILTER_CUTOFF_FREQ";
					var2.Code.CodeSystem = "2.16.840.1.113883.6.24";
					var2.Code.CodeSystemName = "MDC";
					var2.Code.DisplayName = "Cutoff Frequency";

					var2.Value.Type = "PQ";
					var2.Value.Value = (double) value;
					var2.Value.Unit = "Hz";
					var1.InnerVariables[0] = var2;

					Component[0].Add(new aECGControlVariableHolder(var1));
				}
			}
		}
		public byte FilterBitmap
		{
			get
			{
				if (Component.Count > 0)
				{
					aECGControlVariableHolder var0 = Component[0].getControlVariable("MDC_ECG_CTL_VBL_ATTR_FILTER_NOTCH");

					if ((var0 != null)
						&&  (var0.ControlVariable != null))
					{
						aECGControlVariable var1 = var0.ControlVariable;

						byte map = 0;

						aECGControlVariable var2 = null;

						foreach (aECGControlVariable temp in var1.InnerVariables)
						{
							if ((temp != null)
								&&	(string.Compare(temp.Code.Code, "MDC_ECG_CTL_VBL_ATTR_FILTER_NOTCH_FREQ") == 0))
							{
								var2 = temp;
								break;
							}
						}

						if (var2 != null)
						{
							try
							{
								double val = (double) var2.Value.Value;

								if (val == 60)
									map |= 0x1;
								else if (val == 50)
									map |= 0x2;
							}
							catch
							{
							}
						}

						return map;
					}
				}
			
				return 0;
			}
			set
			{
				if (((value & 0x1) == 0x1)
					||	((value & 0x2) == 0x2))
				{
					aECGControlVariable var1 = new aECGControlVariable();

					var1.Code.Code = "MDC_ECG_CTL_VBL_ATTR_FILTER_NOTCH";
					var1.Code.CodeSystem = "2.16.840.1.113883.6.24";
					var1.Code.CodeSystemName = "MDC";
					var1.Code.DisplayName = "Low Pass Filter";

					aECGControlVariable var2 = new aECGControlVariable("component");
					var2.Code.Code = "MDC_ECG_CTL_VBL_ATTR_FILTER_NOTCH_FREQ";
					var2.Code.CodeSystem = "2.16.840.1.113883.6.24";
					var2.Code.CodeSystemName = "MDC";
					var2.Code.DisplayName = "Notch Frequency";

					var2.Value.Type = "PQ";
					var2.Value.Value = ((value & 0x1) == 0x1) ? 60.0 : 50.0;
					var2.Value.Unit = "Hz";
					var1.InnerVariables[0] = var2;
				
					Component[0].Add(new aECGControlVariableHolder(var1));
				}
			}
		}
		public string[] FreeTextFields
		{
			get
			{
				if (text != null)
					return text.Split(new char[]{'\n', '\r'});

				return null;
			}
			set
			{
				text = null;

				if (value != null)
				{
					System.Text.StringBuilder sb = new System.Text.StringBuilder();

					foreach (string line in value)
					{
						if (sb.Length != 0)
							sb.Append("\n");

						sb.Append(line);
					}

					text = sb.ToString();
				}
			}
		}
		public string SequenceNr
		{
			get {return null;}
			set {}
		}
		public string AcqInstitution
		{
			get {return null;}
			set {}
		}
		public string AnalyzingInstitution
		{
			get {return null;}
			set {}
		}
		public string AcqDepartment
		{
			get {return null;}
			set {}
		}
		public string AnalyzingDepartment
		{
			get {return null;}
			set {}
		}
		public string ReferringPhysician
		{
			get {return null;}
			set {}
		}
		public string OverreadingPhysician
		{
			get
			{
				if ((_OverreadingPhysician == null)
					&&	(Component.Count > 0))
				{
					
					aECGSeries series = Component[0];

					aECGAnnotationSet aset = series.getAnnotationSet("MDC_ECG_INTERPRETATION");

					if ((aset != null)
						&&	(aset.Author.AssignedAuthorType.AssignedPerson != null))
					{
						_OverreadingPhysician = aset.Author.AssignedAuthorType.AssignedPerson.PersonName.family;
					}
				}

				return _OverreadingPhysician;
			}
			set
			{
				_OverreadingPhysician = value;
			}
		}
		public string TechnicianDescription
		{
			get {return null;}
			set {}
		}
		public ushort SystolicBloodPressure
		{
			get {return 0;}
			set {}
		}
		public ushort DiastolicBloodPressure
		{
			get {return 0;}
			set {}
		}
		public Drug[] Drugs
		{
			get {return null;}
			set {}
		}
		public string[] ReferralIndication
		{
			get {return null;}
			set {}
		}
		public string RoomDescription
		{
			get {return null;}
			set {}
		}
		public byte StatCode
		{
			get {return 0xff;}
			set {}
		}
		#endregion

		#region IDiagnostic Members

		public int getDiagnosticStatements(out Statements stat)
		{
			stat = null;

			if (Component.Count > 0)
			{
				aECGAnnotationSet aset = Component[0].getAnnotationSet("MDC_ECG_INTERPRETATION");

				if (aset != null)
				{
					try
					{
						aECGAnnotation ann = aset["MDC_ECG_INTERPRETATION"];

						ArrayList al =  new ArrayList();

						for (int i=0;i < ann.Annotation.Length;i++)
						{
							if (ann.Annotation[i] == null)
								break;
							
							if (string.Compare(ann.Annotation[i].Code.Code, "MDC_ECG_INTERPRETATION_STATEMENT") == 0)
								al.Add(ann.Annotation[i].Value.Value);
						}

						if (al.Count > 0)
						{
							stat = new Statements();

							if (Regex.IsMatch((string) al[al.Count-1], "(UN)?(CONFIRMED REPORT)", RegexOptions.None))
							{
								string temp = (string) al[al.Count-1];

								stat.confirmed = temp.StartsWith("CONF");

								al.RemoveAt(al.Count-1);
							}

							stat.statement = new string[al.Count];

							for (int i=0;i < stat.statement.Length;i++)
								stat.statement[i] = (string) al[i];

							if (stat.confirmed)
								stat.time = (DateTime) aset.ActivityTime.Value;

							return 0;
						}

						return 8;
					}
					catch
					{
						return 4;
					}
				}
				return 2;
			}

			return 1;
		}

		public int setDiagnosticStatements(Statements stat)
		{
			if ((stat != null)
				&&  (stat.time.Year > 1000)
				&&  (stat.statement != null)
				&&  (stat.statement.Length > 0)
				&&	(Component.Count > 0))
			{
				aECGSeries series = Component[0];

				string tempOver = OverreadingPhysician;

				aECGAnnotationSet aset = series.Annotation[0];
				if (stat.confirmed
					||	(tempOver != null)
					||	(aset == null))
				{
					aset = null;

					for (int j=0;j < series.Annotation.Length;j++)
					{
						if (series.Annotation[j] == null)
							break;

						if ((series.Annotation[j].Author.AssignedAuthorType.AssignedPerson != null)
							&&	(series.Annotation[j].Author.AssignedAuthorType.AssignedPerson.PersonName.family == tempOver))
							aset = series.Annotation[j];
					}

					if (aset == null)
					{
						aset = new aECGAnnotationSet();

						if (tempOver != null)
						{
							aset.ActivityTime.Value = stat.time;

							aset.Author.AssignedAuthorType.AssignedPerson = new aECGPerson("assignedPerson");

							aset.Author.AssignedAuthorType.AssignedPerson.PersonName.family = tempOver;
						}
						else
						{
							aset.ActivityTime.Value = this.TimeAcquisition;

							aset.Author.AssignedAuthorType.AssignedDevice = new aECGDevice("assignedDevice");

							aset.Author.AssignedAuthorType.AssignedDevice.Set(series.SeriesAuthor.Device);
							aset.Author.AssignedAuthorType.AssignedDevice.PlayedManufacturedDevice.ManufacturerOrganization.Set(series.SeriesAuthor.Organization);
						}
					}
				}

				aECGAnnotation top = new aECGAnnotation();
				top.Code.Code = "MDC_ECG_INTERPRETATION";
				top.Code.CodeSystem = "2.16.840.1.113883.6.24";

				int i=0;
				for (int j=0;i < stat.statement.Length;i++)
				{
					if (stat.statement[i] == null)
						continue;

					aECGAnnotation temp = new aECGAnnotation();

					temp.Code.Code = "MDC_ECG_INTERPRETATION_STATEMENT";
					temp.Code.CodeSystem = "2.16.840.1.113883.6.24";
					temp.Value.Type = "ST";
					temp.Value.Value = stat.statement[i];

					top.Annotation[j++] = temp;
				}

				if (i > 0)
				{
					aECGAnnotation temp = new aECGAnnotation();

					temp.Code.Code = "MDC_ECG_INTERPRETATION_STATEMENT";
					temp.Code.CodeSystem = "2.16.840.1.113883.6.24";
					temp.Value.Type = "ST";
					temp.Value.Value = stat.confirmed ? "CONFIRMED REPORT" : "UNCONFIRMED REPORT";

					top.Annotation[i] = temp;
				}

				aset.Add(top);

				series.Add(aset);

				return 0;
			}

			return 1;
		}

		#endregion

		#region IGlobalMeasurement Members

		public int getGlobalMeasurements(out GlobalMeasurements mes)
		{
			mes = null;

			if (Component.Count > 0)
			{
				mes = new GlobalMeasurements();

				aECGSeries
					series = Component[0],
					seriesMedian = (series.DerivedSet.Count > 0) ? series.DerivedSet[0] : null;

				string[]
					releventCodes = {"MDC_ECG_WAVC", "MDC_ECG_ANGLE_P_FRONT", "MDC_ECG_ANGLE_QRS_FRONT", "MDC_ECG_ANGLE_T_FRONT", "MDC_ECG_TIME_PD_PP", "MDC_ECG_TIME_PD_RR", "MDC_ECG_HEART_RATE", "MDC_ECG_TIME_PD_QTc"},
					releventValues = {"MDC_ECG_WAVC_PWAVE", "MDC_ECG_WAVC_QRSWAVE", "MDC_ECG_WAVC_TWAVE"};

				aECGAnnotationSet anns, annsMedian;

				anns = series.getAnnotationSet(releventCodes);
				annsMedian = (seriesMedian != null ? seriesMedian.getAnnotationSet(releventCodes) : null);

				if ((anns != null)
				||  (annsMedian != null))
				{
					ArrayList
						alAnnotations = new ArrayList(),
						alMeasurments = new ArrayList();

					if (annsMedian != null)
						alAnnotations.AddRange(annsMedian.Annotation);

					if (anns != null)
						alAnnotations.AddRange(anns.Annotation);

					GlobalMeasurement gm = null;

					for (int i=0;i < alAnnotations.Count;i++)
					{
						aECGAnnotation ann = (aECGAnnotation) alAnnotations[i];

						if (ann == null)
							continue;

						if (string.Compare(ann.Code.Code, "MDC_ECG_BEAT") == 0)
							alAnnotations.AddRange(ann.Annotation);

						int index = IndexOf(releventCodes, ann.Code.Code);

						if (index >= 0)
						{
							object val = null;

							switch (index)
							{
								case -1: break;
								case 0:
									val = ann.Value.Code;
									break;
								case 1: case 2: case 3:
									if (string.Compare(ann.Value.Unit, "deg") == 0)
										val = ann.Value.Value;
									break;
								case 6:
									if (string.Compare(ann.Value.Unit, "bpm") == 0)
										val = ann.Value.Value;
									break;
								default:
									if (string.Compare(ann.Value.Unit, "ms") == 0)
										val = ann.Value.Value;
									break;
							}

							if (val is string
							&&	(ann.SupportingROI.Boundary[0] != null)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -