rawecgheader.cs
来自「ecg tool kit for medical image retrieval」· CS 代码 · 共 1,264 行 · 第 1/3 页
CS
1,264 行
if ((val != 0)
&& (def != HeightDefinition.Unspecified))
{
switch (def)
{
case HeightDefinition.Centimeters:
_IdRecInfo.Height = (short) val;
break;
case HeightDefinition.Millimeters:
_IdRecInfo.Height = (short) (val / 10);
break;
case HeightDefinition.Inches:
_IdRecInfo.Height = (short) ((val * 254) / 100);
break;
}
return 0;
}
return 1;
}
public int getPatientWeight(out ushort val, out WeightDefinition def)
{
val = 0;
def = WeightDefinition.Unspecified;
if (_IdRecInfo.Height != 0)
{
val = (ushort) _IdRecInfo.Height;
def = WeightDefinition.Kilogram;
return 0;
}
return 1;
}
public int setPatientWeight(ushort val, WeightDefinition def)
{
if ((val != 0)
&& (def != WeightDefinition.Unspecified))
{
switch (def)
{
case WeightDefinition.Kilogram:
_IdRecInfo.Height = (short) val;
break;
case WeightDefinition.Gram:
_IdRecInfo.Height = (short) (val / 1000);
break;
case WeightDefinition.Ounce:
_IdRecInfo.Height = (short) ((val * 10000) / 283);
break;
case WeightDefinition.Pound:
_IdRecInfo.Height = (short) ((val * 10000) / 4536);
break;
}
return 0;
}
return 1;
}
public Sex Gender
{
get
{
switch ((char) _PatId.Sex)
{
case 'F':
return Sex.Female;
case 'M':
return Sex.Male;
}
return Sex.Null;
}
set
{
switch (value)
{
case Sex.Female:
_PatId.Sex = (byte) 'F';
break;
case Sex.Male:
_PatId.Sex = (byte) 'M';
break;
default:
_PatId.Sex = 0;
break;
}
}
}
public Race PatientRace
{
get
{
switch ((char) _PatId.Race)
{
case 'C':
return Race.Caucasian;
case 'M':
return Race.Oriental;
case 'N':
return Race.Black;
}
return Race.Null;
}
set
{
switch(value)
{
case Race.Caucasian:
_PatId.Race = (byte) 'C';
break;
case Race.Oriental:
_PatId.Race = (byte) 'M';
break;
case Race.Black:
_PatId.Race = (byte) 'N';
break;
default:
_PatId.Race = 0;
break;
}
}
}
public AcquiringDeviceID AcqMachineID
{
get
{
AcquiringDeviceID ret = new AcquiringDeviceID(true);
ret.DeviceCapabilities = 0x88;
return ret;
}
set
{
if (value != null)
{
BytesTool.writeString(value.DeviceID.ToString("d5"), _RecInfo.CartId, 0, RawECGRecordInfo.MaxCartIdLen);
BytesTool.writeString("ErasmusMC", _RecInfo.Location, 0, RawECGRecordInfo.MaxLocationLen);
BytesTool.writeString(((DeviceManufactor)value.ManufactorID).ToString(), _RecInfo.Site, 0, RawECGRecordInfo.MaxSiteLen);
BytesTool.writeString("ECGConversion 2.0", _RecInfo.ProgramVersion, 0, RawECGRecordInfo.MaxProgramVersionLen);
}
}
}
public AcquiringDeviceID AnalyzingMachineID
{
get {return null;}
set {}
}
public DateTime TimeAcquisition
{
get
{
try
{
return new DateTime(_Year, _Month, _Day, _Hour, _Min, _Sec);
}
catch {}
return DateTime.MinValue;
}
set
{
if (value.Year > 1000)
{
_Year = (short) value.Year;
_Month = (byte) value.Month;
_Day = (byte) value.Day;
_Hour = (byte) value.Hour;
_Min = (byte) value.Minute;
_Sec = (byte) value.Second;
BytesTool.writeString(value.Year.ToString("d4"), _RecInfo.RecDate, 0, 5);
BytesTool.writeString(value.Month.ToString("d2"), _RecInfo.RecDate, 4, 3);
BytesTool.writeString(value.Day.ToString("d2"), _RecInfo.RecDate, 6, 3);
BytesTool.writeString(value.Hour.ToString("d2"), _RecInfo.RecTime, 0, 3);
BytesTool.writeString(value.Minute.ToString("d2"), _RecInfo.RecTime, 2, 3);
BytesTool.writeString(value.Second.ToString("d2"), _RecInfo.RecTime, 4, 3);
}
}
}
public ushort BaselineFilter
{
get {return 0;}
set {}
}
public ushort LowpassFilter
{
get {return 0;}
set {}
}
public byte FilterBitmap
{
get {return 0;}
set {}
}
public string[] FreeTextFields
{
get {return null;}
set {}
}
public string SequenceNr
{
get
{
if (_RecInfo.ECGId[0] != 0)
{
return BytesTool.readString(_RecInfo.ECGId, 0, RawECGRecordInfo.MaxECGIdLen);
}
return null;
}
set
{
if (value != null)
{
BytesTool.writeString(value, _RecInfo.ECGId, 0, RawECGRecordInfo.MaxECGIdLen);
}
}
}
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 {return null;}
set {}
}
public string TechnicianDescription
{
get {return null;}
set {}
}
public ushort SystolicBloodPressure
{
get
{
return (ushort) _IdRecInfo.SysBP;
}
set
{
_IdRecInfo.SysBP = (short) value;
}
}
public ushort DiastolicBloodPressure
{
get
{
return (ushort) _IdRecInfo.DiaBP;
}
set
{
_IdRecInfo.DiaBP = (short) value;
}
}
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 {}
}
public int getSignals(out Signals signals)
{
signals = new Signals();
int err = getSignalsToObj(signals);
if (err != 0)
{
signals = null;
}
return 0;
}
public int getSignalsToObj(Signals signals)
{
if ((Works())
&& (signals != null))
{
signals.NrLeads = (byte) _ECGInfo.NrOfLeads;
signals.RhythmAVM = (1000.0 / (double) _ECGInfo.ECGLSBPerMV);
signals.RhythmSamplesPerSecond = _ECGInfo.ECGSampFreq;
for (int loper=0;loper < _ECGInfo.NrOfLeads;loper++)
{
signals[loper] = new Signal();
signals[loper].RhythmStart = 0;
signals[loper].RhythmEnd = (int) _ECGInfo.NrECGSamples;
switch (_ECGInfo.LeadConfig[loper])
{
case 0:
signals[loper].Type = LeadConfiguration[0];
break;
case 1:
signals[loper].Type = LeadConfiguration[1];
break;
case 2:
signals[loper].Type = LeadConfiguration[2];
break;
case 3:
signals[loper].Type = LeadConfiguration[3];
break;
case 4:
signals[loper].Type = LeadConfiguration[4];
break;
case 5:
signals[loper].Type = LeadConfiguration[5];
break;
case 6:
signals[loper].Type = LeadConfiguration[6];
break;
case 7:
signals[loper].Type = LeadConfiguration[7];
break;
case 8:
signals[loper].Type = LeadConfiguration[8];
break;
case 9:
signals[loper].Type = LeadConfiguration[9];
break;
case 10:
signals[loper].Type = LeadConfiguration[10];
break;
case 11:
signals[loper].Type = LeadConfiguration[11];
break;
default:
signals[loper].Type = LeadType.Unknown;
break;
}
}
return 0;
}
return 1;
}
public int setSignals(Signals signals)
{
if ((signals != null)
&& (signals.NrLeads != 0)
&& (signals.RhythmAVM > 0)
&& (signals.RhythmSamplesPerSecond > 0))
{
_ECGInfo.NrOfLeads = (short) RawECGFormat.NeededLeads.Length;
_ECGInfo.ECGLSBPerMV = 400;
_ECGInfo.ECGSampFreq = 500;
_ECGInfo.TremorType = 0;
for (int loper=0;loper < _ECGInfo.NrOfLeads;loper++)
{
_ECGInfo.LeadConfig[loper] = (short) RawECGFormat.NeededLeads[loper];// signals[loper].Type;
}
int minstart = int.MaxValue;
int maxend = int.MinValue;
for (int loper=0;loper < signals.NrLeads;loper++)
{
if (signals[loper] != null)
{
minstart = Math.Min(minstart, signals[loper].RhythmStart);
maxend = Math.Max(maxend, signals[loper].RhythmEnd);
}
}
if ((minstart != int.MaxValue)
&& (maxend != int.MinValue)
&& (minstart < maxend))
{
_ECGInfo.NrECGSamples = (uint) (((maxend - minstart) * 500) / signals.RhythmSamplesPerSecond);
}
return 0;
}
return 1;
}
public void WriteInfo(System.IO.StreamWriter output)
{ //Write leadinfo
for (int loper=0;loper < _ECGInfo.NrOfLeads;loper++)
{
output.Write(" ");
output.Write(((LeadType)_ECGInfo.LeadConfig[loper]).ToString());
}
output.Write("\n");
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?