您的位置:首页 > 编程语言 > C#

C#医疗保险定点结算

2020-08-08 17:18 1091 查看

C#医疗保险定点结算

本篇主要以卫生院端进行介绍,村医端和卫生院端相比,少了卫生院医生保存电子处方的功能,其余功能相同。

效果

自己做的一个毕设小系统其中的一个流程:医疗保险定点结算(卫生院)

实现

1.首先,病人去找卫生院医生看病,医生根据病人情况登记处方,绘制处方的时候主要是拖入一个panel,拖入很多label和textBox进行绘制。

2.医生可以点击历史处方查看病人以往的处方记录,看看之前吃过什么药,有什么用药禁忌。

历史处方的实现主要是新建一个windows窗体,拖入一个dataGridView,再引入数据库表。
查询的实现就是普通的查询(select … from … where …),比如要在表Table_lishichufang中查询name:select name from Table_lishichufang where name = ’ " + textBox1.Text + " ',textBox1就是输入的name。
刷新的实现可以新建一个方法Display(),再把数据重新插入dataGridview中:

public void Display()
{
string sql = "select number,name,xingbie,nianling,kebie,linchuangzhenduan,zhuzhi,nian,yue,ri,yaopin,yishi,tiaoji,yuan,jiao,fen from Table_lishichufang";
SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, DBHelper.conStr);   //定义一个dataAdapter
dataAdapter.Fill(dataSet, "Table_lishichufang");   //填充数据集
dataGridView1.DataSource = dataSet.Tables["Table_lishichufang"];  //填充数据进控件
}

先清空一下dataGridview,在引用方法:

private void shuaxin_Click(object sender, EventArgs e)
{
//刷新
dataSet.Tables["Table_lishichufang"].Clear();
Display();
}

3.医生写完处方,点击保存,此处方就会进入一个临时处方表中,这个临时处方表是一个数据库表,专门放置临时处方,意思就是医生写完的处方但是还没有进行抓药交费的处方。
保存的实现就是数据库表数据的增加。
首先进行一个处方的一个验证,验证姓名是否为空,如果姓名为空,则提示请输入姓名:

if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入姓名!", "提示");
return;
}

然后就是sql增加语句:insert into 表 values(’ " + number + " ‘,’ " + name + " ‘,’ " + xingbie + " ',…)。
然后清空panel里所有的textBox:

textBox1.Clear();

最后有一个提示:
MessageBox.Show("保存成功!", "提示");

4.医生保存完处方后,病人拿着身份证或者社保卡去药房进行交费抓药,药房进行报销和临时处方的确认。这里的临时处方确认完后就会进入一个处方表中,这个处方表也是一个数据库表。(刚才的是临时处方表)
下图是药房的医疗保险定点结算中的电子处方按钮点击出来的窗体:

①药房输入病人的姓名,点击查询,然后信息就会显示到左边的处方中。
这里的“查询”,查询的是临时处方表,因为刚才医生写完的临时处方保存到了这个临时处方表中。
查询的代码编辑:首先进行一个姓名框是否为空的验证:

if (textBox25.Text == "")
{
MessageBox.Show("请输入姓名!", "提示");
}
else{}

如果姓名框不为空,就进行姓名是否存在的验证,可以新建一个SqlDataReader sdr,然后sdr.HasRows就是姓名存在,就可以

if(sdr.HasRows){} else {}

姓名存在,就进行数据的查询:select number,name,xingbie,… from Table_chufang where name = ’ " + textBox25.Text + " ',然后:

SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();

然后给处方中的textBox赋值:

textBox1.Text =  Convert.ToString(sdr["name"]);
...

如果姓名不存在,就在else{}中编辑:

MessageBox.Show("该姓名不存在!", "提示");
return;

5.药房根据处方里的内容进行报销。

可以把电子处方和主界面拖一下,方便操作:

首先输入医生姓名(处方中有医师姓名,谁给病人看的病就是谁),
然后输入病人的身份证号(病人是拿着身份证或者社保卡来的),点击查询,就可以显示姓名和余额,这个余额就是可报销余额。(这里查询的是我自己新建的一个数据库表,正规的肯定是有自己的庞大的数据库,每个入医保人的信息都有)查询方法同上。
然后进行药品录入,在药品框输入药品首字母就可以弹出来相应药品(https://blog.csdn.net/weixin_44523029/article/details/107882835)。
然后进行拖入,把药品从库存单(上表)中拖入处方单(下表)中(https://blog.csdn.net/weixin_44523029/article/details/107565968)。
然后点击报销。
报销的实现:
首先进行医生框、身份证号框和姓名框是否为空:

if (textBox4.Text.Trim() == "")
{
MessageBox.Show("请输入医生!", "提示");
return;
}
if (textBox8.Text == "")
{
MessageBox.Show("请点击身份证号查询按钮!", "提示");
return;
}
if (textBox1.Text == "")
{
MessageBox.Show("请输入身份证号!", "提示");
return;
}

如果都满足,则在else{}中编辑代码:
进行一个身份证号是否存在的验证:sdr.HasRows
药品数量不能为0,进行一个验证:

for (int allrows = 0; allrows <= this.dataGridView2.Rows.Count - 1; allrows++)
{
int izero = 0;
string zero = izero.ToString();
if (this.dataGridView2.Rows[allrows].Cells[7].Value.ToString().Trim() == zero)
{
MessageBox.Show("请输入数量!", "提示");
DBHelper.conn.Close();
return;
}
DBHelper.conn.Close();
}//数量不能为0

处方单不能为空,进行一个验证:

if (dataGridView2.Rows.Count == 0)
{
MessageBox.Show("请选择药品!", "提示");
DBHelper.conn.Close();
return;
}//处方单不能为空

如果以上都满足,进行一个库存是否充足的验证:
在for循环(遍历处方单的每行)下,进行select查询库存,并把查出来的值赋给一个新建的int值,如果数量>库存,则提示库存不足,并返回。
如果库存不满足,就提示库存不足:

if (sshuliang1 > stock)//如果数量超过库存,则不能报销
{
MessageBox.Show("库存不足!", "提示");
return;
}

如果库存满足,看金额,看余额是否够(自付比例:40%)方法类似于上一步库存验证,自付金额 = 总计 * 40%,本次报销金额 = 总计 * 60%,报销后余额 = 余额 - 本次报销金额。
如果余额不满足,就else{}:

else
{
MessageBox.Show("报销失败,余额不足!", "提示");
DBHelper.conn.Close();
return;
}

如果余额满足,就余额减少,用sql语句update更新余额表,然后把处方单增加到药品销售表中(这里用sql语句insert增加),然后销售的药品的库存减少(这里用sql语句update更新)。
然后更新药品库存表(上表):

dataSet.Tables["Table_yaopin"].Clear();
Display();

6.最后在电子处方中输入金额,点击确定,把处方更新到历史处方表中,同时删除临时处方:
只能进行姓名查询后才能确定:

if (textBox28.Text.Trim() == "")
{
MessageBox.Show("请查询后再点击确定!", "提示");
return;
}

然后把处方插入历史处方表中(sql语句insert into插入);
然后删除临时处方(sql语句delete from Table where …);
最后清空所有textBox,提示操作成功,关闭电子处方界面:

textBox1.Clear();
...
MessageBox.Show("操作成功!", "提示");

_form.Show();
this.Hide();

7.完成。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: