1.2门诊管理
1.21门诊登记
登录之后点击进入
首先病人来到医院登记,然后工作人员填写相关信息,并给病人门诊号。
如图(2)
从图中可以看出界面主要由文本框、日期控件、下拉框、和按钮组成
控件名称 | 说明 |
日期控件(DateTimePicker) | 控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
下拉框(ComboBox) | |
文本(TextBox) | |
按钮(Button) |
第一步:数据库
1、表与关系
表1:门诊登记表(MZ_MenZhenRegisterList)
列名 | 数据类型 | 主键/外键 | 说明 |
MenZhenRegisterID | Int | 主键 | 门诊登记ID |
MenZhenNumber | nchar(30) |
| 门诊号 |
Name | nchar(10) |
| 姓名 |
SpellCode | nchar(50) |
| 拼音码 |
SexID | Int | 外键 | 属性明细表(性别ID) |
BirthDate | datetime |
| 出生日期 |
Age | nchar(10) |
| 年龄 |
IdentityCard | nchar(30) |
| 身份证 |
MedicalTreatmentInsuranceTypeID | Int | 外键 | 折扣类型表(医疗保险类别ID) |
MedicalTreatmentCard | nchar(30) |
| 医疗证号 |
RegisterDate | datetime |
| 登记日期 |
ProfessionID | Int | 外键 | 属性明细表(职业ID) |
NationalityID | Int | 外键 | 属性明细表(国籍ID) |
ProvinceID | Int | 外键 | 属性明细表(省别ID) |
CountyID | Int | 外键 | 属性明细表(县市ID) |
NationID | Int | 外键 | 属性明细表(民族ID) |
MarriageID | Int | 外键 | 属性明细表(婚姻ID) |
FamilyAddress | nchar(50) |
| 家庭住址 |
HousePhone | nchar(30) |
| 住宅电话 |
MakeBillsPersonID | Int | 外键 | 制单人ID |
HangNumberNo | bit |
| 挂号否 |
ChargeNo | bit |
| 收费否 |
表1:门诊最大单号表(MZ_MenZhenMaxBillsNumberList)
列名 | 数据类型 | 主键/外键 | 说明 |
MenZhenBillsNumberID | Int | 主键 | 门诊最大单号ID |
MaxBillsNumber | Int |
| 门诊最大单号 |
2、绑定下拉框(设置职业的下拉框例子)
第一步:数据库的存储过程
if(@Type='Frm_MenZhenDengJi_cboZhiYe')
begin
SELECT RTRIM(LTRIM(AttributeMingXiList.AttributeMingXiName)) as profession,
AttributeMingXiList.AttributeMingXiID, AttributeMingXiList.AttributeMusterID
FROM AttributeMingXiList INNER JOIN
AttributeMusterList ON AttributeMingXiList.AttributeMusterID = AttributeMusterList.AttributeMusterID
where AttributeMusterList.AttributeMusterID=21
第二步:逻辑层(BLL)代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
[OperationContract]
public DataSet Frm_MenZhenDengJi_cboZhiYe()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_MenZhenDengJi_cboZhiYe";
DataTable dt = myDALMethod.QueryDataTable("门?诊?登Ì?记?_Frm_MenZhenDengJi", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码,在窗体的Load事件中绑定下拉框的数据
BLL承志医疗ERP系统.门诊管理.Frm_MenZhenDengJi.Frm_MenZhenDengJiClient myFrm_MenZhenDengJiClient =
new BLL承志医疗ERP系统.门诊管理.Frm_MenZhenDengJi.Frm_MenZhenDengJiClient();
private void Frm_MenZhenDengJi_Load(object sender, EventArgs e)
{
cboProfession.DataSource = myFrm_MenZhenDengJiClient.Frm_MenZhenDengJi_cboZhiYe().Tables[0];//给下拉框绑定数据源
cboProfession.DisplayMember = "profession";//设置下拉框显示的属性(列)
cboProfession.ValueMember = "AttributeMingXiID";//设置下拉框中的项的值(列)
}
3生成单号
第一步:数据库的存储过程
if(@Type='Frm_MenZhenDengJi_ChaZuiDaDanHaoShu')
begin
SELECT MaxBillsNumber
FROM MZ_MenZhenMaxBillsNumberList
end
第二步:逻辑层(BLL)代码
[OperationContract]
public DataSet Frm_MenZhenDengJi_ChaZuiDaDanHaoShu()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_MenZhenDengJi_ChaZuiDaDanHaoShu";
DataTable dt = myDALMethod.QueryDataTable("门?诊?登Ì?记?_Frm_MenZhenDengJi", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码,
#region 查询门诊号
public string ShengChengDanHao(string ZuiDaDingDanShu)
{
DateTime dtnShiJian = DateTime.Now;//获取当前时间
string strYear = dtnShiJian.Year.ToString().Trim();//获取年
string strMonth = dtnShiJian.Month.ToString();//获取月
string strDay = dtnShiJian.Day.ToString();//获取日
ZuiDaDingDanShu = myFrm_MenZhenDengJiClient.Frm_MenZhenDengJi_ChaZuiDaDanHaoShu().Tables[0].Rows[0][0].ToString();//查询单号数
switch (ZuiDaDingDanShu.Length)
{
case 1:
ZuiDaDingDanShu = "000" + ZuiDaDingDanShu; break;//如果长度为1,则在前面加3个0
case 2:
ZuiDaDingDanShu = "00" + ZuiDaDingDanShu; break;
case 3:
ZuiDaDingDanShu = "0" + ZuiDaDingDanShu; break;
}
return strYear + (strMonth.Length == 1 ? "0" + strMonth : strMonth) + (strDay.Length == 1 ? "0" + strDay : strDay) + ZuiDaDingDanShu;
//返回一个值年+月份(如果月份长度为1位。则在前面加一个0)+日(如果日长度为1位。则在前面加一个0+当前单号
}
#endregion
再在Load事件绑定文本框
private void Frm_MenZhenDengJi_Load(object sender, EventArgs e)
{
txtMenZhenNumber.Text = ShengChengDanHao(ZuiDaDingDanShu);
txtMenZhenNumber_x.Text = ShengChengDanHao(ZuiDaDingDanShu);
}
4,根据姓名生成拼音码
static public string GetChineseSpell(string strText)
{
int len = strText.Length;
string myStr = "";
for (int i = 0; i < len; i++)
{
myStr += getSpell(strText.Substring(i, 1));
}
return myStr;
}
static public string getSpell(string cnChar)
{
byte[] arrCN = Encoding.Default.GetBytes(cnChar);
if (arrCN.Length > 1)
{
int area = (short)arrCN[0];
int pos = (short)arrCN[1];
int code = (area << 8) + pos;
int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
for (int i = 0; i < 26; i++)
{
int max = 55290;
if (i != 25) max = areacode[i + 1];
if (areacode[i] <= code && code < max)
{
return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
}
}
return "*";
}
else return cnChar;
}
再在姓名文本框的Changed事件写下面代码
private void txtXingMing_TextChanged(object sender, EventArgse)
{
txtSpellCode.Text =GetChineseSpell(txtName.Text.Trim());
}
5:计算年龄
private void btnCountAge_Click_1(object sender, EventArgs e)
{
try
{
int Now = Convert.ToInt32(DateTime.Now.Year.ToString());//获取当前年
int Old = Convert.ToInt32(dtpBirthDate.Value.Year.ToString());//获取时间控件值
int JiSuan = Now - Old;//相减
txtAge.Text = JiSuan.ToString();//赋值给文本框
}
catch { }
}
6:单号数变化
第一步:数据库的存储过程
if(@Type='Frm_MenZhenDengJi_ZuiDaDanHaoShu')
begin
begin tran
update MZ_MenZhenMaxBillsNumberList
set MaxBillsNumber=MaxBillsNumber+1
commit tran
end
第二步:逻辑层(BLL)代码
[OperationContract]
public int Frm_MenZhenDengJi_ZuiDaDanHaoShu()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_MenZhenDengJi_ZuiDaDanHaoShu";
int i = myDALMethod.UpdateData("门诊登记_Frm_MenZhenDengJi", mySqlParameters);
return i;
}
7:保存病人信息
第一步:数据库的存储过程
<pre class="sql" name="code"> [OperationContract]
public int Frm_MenZhenDengJi_Insert(string strMenZhenHao,string strXingMing,string strPinYinMa,int intXingBieID,
DateTime dtpChuShengRiQi, string strNianLing,string strShengFenZheng,int intYiLiaoBaoXianLeiBieID,string strYiLiaoZhengHao,
DateTime dtpDengJiRiQi,int intZhiYeID,int intGuoJiID,int intShengBieID,int intXianShiID,int intMingZuID,int intHunYanID,
string strJiaTingZhuZhi,string strZhuZaDianHua,int intZhiDanRen)
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
new SqlParameter ("@MenZhenNumber",SqlDbType .Char),
new SqlParameter ("@Name",SqlDbType .Char),
new SqlParameter ("@SpellCode",SqlDbType .Char),
new SqlParameter ("@SexID",SqlDbType .Int),
new SqlParameter ("@BirthDate",SqlDbType.DateTime),
new SqlParameter ("@Age",SqlDbType .Char),
new SqlParameter ("@IdentityCard",SqlDbType .Char),
new SqlParameter ("@MedicalTreatmentInsuranceTypeID",SqlDbType .Int),
new SqlParameter ("@MedicalTreatmentCard",SqlDbType .Char),
new SqlParameter ("@RegisterDate ",SqlDbType .DateTime),
new SqlParameter ("@ProfessionID",SqlDbType .Int),
new SqlParameter ("@NationalityID",SqlDbType .Int),
new SqlParameter ("@ProvinceID",SqlDbType .Int),
new SqlParameter ("@CountyID",SqlDbType .Int),
new SqlParameter ("@NationID",SqlDbType .Int),
new SqlParameter ("@MarriageID",SqlDbType .Int),
new SqlParameter ("@FamilyAddress",SqlDbType .Char),
new SqlParameter ("@HousePhone",SqlDbType .Char),
new SqlParameter ("@MakeBillsPersonID",SqlDbType .Int),
};
mySqlParameters[0].Value = "Frm_MenZhenDengJi_Insert";
mySqlParameters[1].Value=strMenZhenHao;
mySqlParameters[2].Value=strXingMing;
mySqlParameters[3].Value=strPinYinMa;
mySqlParameters[4].Value=intXingBieID;
mySqlParameters[5].Value=dtpChuShengRiQi;
mySqlParameters[6].Value=strNianLing;
mySqlParameters[7].Value=strShengFenZheng;
mySqlParameters[8].Value=intYiLiaoBaoXianLeiBieID;
mySqlParameters[9].Value=strYiLiaoZhengHao;
mySqlParameters[10].Value=dtpDengJiRiQi;
mySqlParameters[11].Value=intZhiYeID;
mySqlParameters[12].Value=intGuoJiID;
mySqlParameters[13].Value=intShengBieID;
mySqlParameters[14].Value=intXianShiID;
mySqlParameters[15].Value=intMingZuID;
mySqlParameters[16].Value=intHunYanID;
mySqlParameters[17].Value=strJiaTingZhuZhi;
mySqlParameters[18].Value=strZhuZaDianHua;
mySqlParameters[19].Value=intZhiDanRen;
int i= myDALMethod.UpdateData("门诊登记_Frm_MenZhenDengJi", mySqlParameters);
return i;
}
第三步:界面层(UIL)代码
#region 新增门诊登记
private voidbtnBaocunZiLiao_Click(object sender, EventArgs e)
{
if (txtName.Text == "")
{
MessageBox.Show("尊敬的操作员,病人姓名还没写呢?");//如果姓名为空,则提示下面文本
txtName.Focus();
return;
}
if (txtSpellCode.Text =="")
{
MessageBox.Show("尊敬的操作员,病人拼音码还没写呢?");
txtSpellCode.Focus();
return;
}
if (dtpBirthDate.Text =="")
{
MessageBox.Show("尊敬的操作员,病人出生日期还没写呢?");
dtpBirthDate.Focus();
return;
}
txtMenZhenNumber_x.Text =ShengChengDanHao(ZuiDaDingDanShu);
string strMenZhenNumber_x=txtMenZhenNumber_x.Text;
string strName=txtName.Text;
string strSpellCode=txtSpellCode.Text;
intintSex=Convert.ToInt32(cboSex.SelectedValue);
DateTimedtmBirthDate=Convert.ToDateTime(dtpBirthDate.Text);
string strAge=txtAge.Text;
stringstrIdentityCard=txtIdentityCard.Text;
intintMedicalTreatmentInsuranceType=Convert.ToInt32(cboMedicalTreatmentInsuranceType.SelectedValue);
stringstrMedicalTreatmentCard=txtMedicalTreatmentCard.Text;
DateTimedtmRegisterDate=Convert.ToDateTime(dtpRegisterDate.Text);
intintProfession=Convert.ToInt32(cboProfession.SelectedValue);
intintNationality=Convert.ToInt32(cboNationality.SelectedValue);
intintProvince=Convert.ToInt32(cboProvince.SelectedValue);
intintCounty=Convert.ToInt32(cboCounty.SelectedValue);
intintNation=Convert.ToInt32(cboNation.SelectedValue);
intintMarriage=Convert.ToInt32(cboMarriage.SelectedValue);
stringstrFamilyAddress=txtFamilyAddress.Text;
stringstrHousePhone=txtHousePhone.Text;
intintMakeBillsPerson=Convert.ToInt32(cboMakeBillsPerson.SelectedValue);
//以上为赋值给参数
int I =myFrm_MenZhenDengJiClient.Frm_MenZhenDengJi_Insert(strMenZhenNumber_x, strName,strSpellCode, intSex,
dtmBirthDate, strAge,strIdentityCard, intMedicalTreatmentInsuranceType, strMedicalTreatmentCard,dtmRegisterDate,
intProfession, intNationality,intProvince, intCounty, intNation, intMarriage, strFamilyAddress,strHousePhone,
intMakeBillsPerson);
if (I > 0)
{
if (MessageBox.Show("确认保存这位病人?", "提示", MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
{
myFrm_MenZhenDengJiClient.Frm_MenZhenDengJi_ZuiDaDanHaoShu();//如果保存成功,则在单号数加1,在6有存储过程和逻辑层代码
MessageBox.Show("保存成功!!!");
this.Close();
}
else
{
MessageBox.Show("保存失败!!!");
}
}
}
#endregion
8:清空病人信息
private void btnXinMenZhenBingRen_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtSpellCode.Text = "";
txtAge.Text = "";
txtIdentityCard.Text = "";
txtMedicalTreatmentCard.Text = "";
txtFamilyAddress.Text = "";
txtHousePhone.Text = "";
}
仅供参考,禁止用于商业用途,违者后果自负