269 lines
11 KiB
C#
269 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.Eventing.Reader;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace DrawGraph
|
|
{
|
|
public class FactDrug : EventObj
|
|
{
|
|
public int Id;
|
|
public int PatientId;
|
|
public int DrugTypeId;
|
|
public int DrugId;
|
|
public string DrugName;
|
|
public decimal Dosage;
|
|
public string DosageUnit;
|
|
public int IsContinue;
|
|
public DateTime DrugBeginTime;
|
|
public DateTime DrugEndTime;
|
|
public string DrugChannel;
|
|
public string GiveDrugType;
|
|
public string Remark;
|
|
public string DrugKind;
|
|
public string AnesType;
|
|
public string Comment;
|
|
|
|
public string OperatorNo { get; set; }
|
|
public string OperatorName { get; set; }
|
|
public DateTime OperateDate { get; set; }
|
|
|
|
public decimal Density;
|
|
public string DensityUnit;
|
|
public decimal Velocity;
|
|
public string VelocityUnit;
|
|
public string BloodType;
|
|
public int ParentId;
|
|
|
|
public string Access { get; set; }
|
|
public string BatchNo { get; set; }
|
|
public string PaySelf { get; set; }
|
|
public string TestFlag { get; set; }
|
|
public string LimitFlag { get; set; }
|
|
public string Extend1 { get; set; }
|
|
public string Extend2 { get; set; }
|
|
public string Extend3 { get; set; }
|
|
public string Extend4 { get; set; }
|
|
public string Extend5 { get; set; }
|
|
|
|
public List<FactDrug> ChildFactDrugList;
|
|
public double nowY { get; set; }
|
|
public string EqualDose { get; set; }
|
|
/// <summary>
|
|
/// 清空所有与某条加药相关的控件。
|
|
/// </summary>
|
|
/// <param name="DrugsRecord"></param>
|
|
public override void clearAddObj(ZedGraphControl zgc)
|
|
{
|
|
//if (zgcAnas == null || zgcAnas != zgc)
|
|
zgcAnas = zgc;
|
|
clearAddObjPic(zgc);
|
|
clearDNDTDD(zgc);
|
|
//clearIm(zgc);
|
|
delAddObj(this.DrugName + this.DrugId);
|
|
delLineObj("zhuyDrugs" + this.Id);
|
|
delLineObj("zhuyDrugstop" + this.Id);
|
|
delLineObj("zhuyDrugsend" + this.Id);
|
|
delAddObj("BeforeDrugs0");
|
|
delAddObj("BeforeDrugs1");
|
|
delAddObj("BeforeDrugs2");
|
|
}
|
|
private void clearAddObjPic(ZedGraphControl zgc)
|
|
{
|
|
//if (zgcAnas == null || zgcAnas != zgc)
|
|
zgcAnas = zgc;
|
|
delAddObj(TextPrefix.DT + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DD + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DD + this.DrugName + this.Id.ToString() + "spicle");
|
|
delAddObj(TextPrefix.DU + this.DrugName + this.Id.ToString());
|
|
delAddArrows(TextPrefix.AR + this.DrugName + this.Id.ToString());
|
|
delLineObj("A" + TextPrefix.AR + this.DrugName + this.Id.ToString());
|
|
delLineObj("B" + TextPrefix.AR + this.DrugName + this.Id.ToString());
|
|
}
|
|
public override void clearDNAndDT(ZedGraphControl zgc)
|
|
{
|
|
//if (zgcAnas == null)
|
|
zgcAnas = zgc;
|
|
delAddObj(TextPrefix.DN + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DT + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DU + this.DrugName + this.Id.ToString());
|
|
//delAddObj(TextPrefix.DD + this.DrugName + this.Id.ToString());
|
|
delAddObj(this.DrugName + this.DrugId);
|
|
|
|
}
|
|
public void clearDNDTDD(ZedGraphControl zgc)
|
|
{
|
|
//if (zgcAnas == null || zgcAnas != zgc)
|
|
zgcAnas = zgc;
|
|
delAddObj(TextPrefix.DN + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DT + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DU + this.DrugName + this.Id.ToString());
|
|
delAddObj(TextPrefix.DD + this.DrugName + this.Id.ToString());
|
|
delAddObj(this.DrugName + this.DrugId);
|
|
|
|
}
|
|
public void clearIm(ZedGraphControl zgc)
|
|
{
|
|
if (zgcAnas == null || zgcAnas != zgc) zgcAnas = zgc;
|
|
delAddObj(TextPrefix.IM + this.DrugName + this.Id.ToString());
|
|
|
|
}
|
|
|
|
public bool Equal(object drug1)
|
|
{
|
|
try
|
|
{
|
|
if ((this.DosageUnit == ((FactDrug)drug1).DosageUnit) && (this.DrugChannel == ((FactDrug)drug1).DrugChannel) && (this.DrugName == ((FactDrug)drug1).DrugName) && (this.Access == ((FactDrug)drug1).Access))
|
|
{
|
|
return true;
|
|
}
|
|
//if ((this.DrugChannel == ((FactDrug)drug1).DrugChannel) && (this.DrugName == ((FactDrug)drug1).DrugName) && (this.Access == ((FactDrug)drug1).Access))
|
|
//{
|
|
// return true;
|
|
//}
|
|
return false;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 画一条加药记录
|
|
/// </summary>
|
|
/// <param name="index">高度</param>
|
|
/// <param name="faRecord">总量</param>
|
|
public override void drawText(double x, double y)
|
|
{
|
|
if (zgcAnas == null) return;
|
|
clearAddObj(zgcAnas);
|
|
//画添加药品线,底部加加药次数和备注
|
|
this.nowY = y;
|
|
paintAdd(y);
|
|
//写加药的左边与右信息
|
|
drawAddText(x, y);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 画添加药品线,底部加加药次数和备注信息
|
|
/// </summary>
|
|
/// <param name="DrugsRecord"></param>
|
|
/// <param name="index"></param>
|
|
public void paintAdd(double y)
|
|
{
|
|
string tagName = this.DrugName + this.Id.ToString();
|
|
string DoseStr = "";
|
|
if (Dosage != 0)
|
|
DoseStr = (((double)this.Dosage).ToString());
|
|
string RemarkStr = this.Remark;//
|
|
string DensityStr = Density == 0 ? "" : ((double)this.Density).ToString();
|
|
string VelocityStr = Velocity == 0 ? "" : ((double)this.Velocity).ToString();
|
|
string s = "";
|
|
if (DensityStr != "" || VelocityStr != "")
|
|
{
|
|
if (this.DensityUnit != null && this.DensityUnit != "") DensityStr += this.DensityUnit;
|
|
s = (DensityStr + " " + VelocityStr).Trim();
|
|
if (DensityStr != "" && VelocityStr != "") s = DensityStr + "/" + VelocityStr;
|
|
if (this.VelocityUnit != null && this.VelocityUnit != "") s += this.VelocityUnit;
|
|
}
|
|
if ((EqualDose == null || EqualDose == ""))
|
|
{
|
|
if (Dosage != 0)
|
|
EqualDose = ((double)Dosage).ToString();
|
|
//if (this.DosageUnit != null && this.DosageUnit != "") EqualDose += this.DosageUnit;
|
|
}
|
|
DateTime dt = DrugEndTime;
|
|
DateTime drugDt = this.DrugBeginTime;
|
|
|
|
bool isContinued = false;
|
|
if (IsContinue == 1 && DrugBeginTime == DrugEndTime)
|
|
{
|
|
dt = End;
|
|
isContinued = true;
|
|
}
|
|
if (DrugEndTime != null && DrugBeginTime != null && DrugBeginTime != DrugEndTime)
|
|
{
|
|
TimeSpan tsp = DrugEndTime - DrugBeginTime;
|
|
if (tsp.TotalMinutes >= 10)
|
|
{
|
|
drugDt = DrugBeginTime.AddMinutes(tsp.TotalMinutes / 2 - 3);
|
|
}
|
|
}
|
|
if (((TimeSpan)(pageEnd - this.DrugBeginTime)).TotalMinutes <= 2)
|
|
{
|
|
if (EqualDose == null)
|
|
{
|
|
if (s.Trim() != "")
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, s + " " + RemarkStr, 5f, isContinued);
|
|
else
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, DoseStr + " " + RemarkStr, 5f, isContinued);
|
|
}
|
|
else
|
|
{
|
|
if (s.Trim() != "")
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, s + "(" + EqualDose + ")" + RemarkStr, 5f, isContinued);
|
|
else
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, EqualDose + " " + RemarkStr, 5f, isContinued);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (EqualDose == null)
|
|
{
|
|
if (s.Trim() != "")
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, s + " " + RemarkStr, 6f, isContinued);
|
|
else
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, DoseStr + " " + RemarkStr, 6f, isContinued);
|
|
}
|
|
else
|
|
{
|
|
if (s.Trim() != "")
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, s + "(" + EqualDose + ")" + RemarkStr, 5.5f, isContinued);
|
|
else
|
|
drawDoseObj(y, tagName, this.DrugBeginTime, dt, drugDt, EqualDose + " " + RemarkStr, 5.5f, isContinued);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 写加药的左边与右信息
|
|
/// </summary>
|
|
/// <param name="y">高度</param>
|
|
/// <param name="totalDose">总量</param>
|
|
public void drawAddText(double x, double y)
|
|
{
|
|
//左边写药名
|
|
TextObj text = (TextObj)zgcAnas.MasterPane.GraphObjList[TextPrefix.DN + this.DrugName + this.Id.ToString()];
|
|
if (text == null)
|
|
{
|
|
double x1 = x;// 0.05f;
|
|
string DrName = this.DrugName.Trim();
|
|
|
|
//if (this.Remark != null && this.Remark != "") DrName += "(" + this.Remark + ")";
|
|
if (this.DrugChannel != null && this.DrugChannel != "") DrName += "(" + this.DrugChannel + ")";
|
|
if (this.DosageUnit != null && this.DosageUnit != "") DrName += "(" + this.DosageUnit + ")";
|
|
if (this.BloodType != null && this.BloodType != "") DrName += "(" + this.BloodType + ")";
|
|
if (DrugKind.Contains("麻醉") || DrugKind.Contains("精神"))
|
|
ZUtil.DrawText(DrName, x1, y, zgcAnas, TextPrefix.DN + this.DrugName + this.Id.ToString(), Color.Red, 5.75f);
|
|
else
|
|
ZUtil.DrawText(DrName, x1, y, zgcAnas, TextPrefix.DN + this.DrugName + this.Id.ToString(), Color.Black, 5.75f);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加药排序类
|
|
/// </summary>
|
|
public class FactDrugComparer : IComparer<FactDrug>
|
|
{
|
|
public int Compare(FactDrug x, FactDrug y)
|
|
{
|
|
return (x.DrugBeginTime.CompareTo(y.DrugBeginTime));
|
|
}
|
|
}
|
|
}
|