📄 aecgformat.cs
字号:
{
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 + -