一个小工具

发布于:2024-12-18 ⋅ 阅读:(143) ⋅ 点赞:(0)

院内感染监控系统

开发工具Delphi7

报表工具FastReport

unit U_Ymjg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzButton, ExtCtrls, RzPanel, ImgList, Grids, RzGrids, StdCtrls,
  RzCmboBx, DB, ADODB;

type
  TFrm_ymjg = class(TForm)
    ImageList1: TImageList;
    RzPanel1: TRzPanel;
    RzPanel2: TRzPanel;
    RzBitBtn4: TRzBitBtn;
    RzBitBtn5: TRzBitBtn;
    RzBitBtn6: TRzBitBtn;
    Label14: TLabel;
    RzComboBox1: TRzComboBox;
    Label15: TLabel;
    RzComboBox2: TRzComboBox;
    RzPanel3: TRzPanel;
    RzStringGrid4: TRzStringGrid;
    ADOQuery1: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn6Click(Sender: TObject);
    procedure RzBitBtn4Click(Sender: TObject);
    procedure RzStringGrid4SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure RzBitBtn5Click(Sender: TObject);
  private
    pid, id, ymid: string;
  public
    procedure browse(Apid, Aid, Aymid: string);
    procedure textCombox;
    procedure localStringGrid(sg: TRzStringGrid; v: string);
  end;

var
  Frm_ymjg: TFrm_ymjg;

implementation
uses u_dm;
{$R *.dfm}

procedure TFrm_ymjg.browse(Apid, Aid, Aymid: string);

var
  ARow, i, j: integer;
begin
  pid := Apid;
  id := Aid;
  ymid := Aymid;


  for i := 1 to RzStringGrid4.RowCount - 1 do
    for j := 0 to RzStringGrid4.ColCount - 1 do
      RzStringGrid4.Cells[j, i] := '';
  RzStringGrid4.RowCount := 2;
  RzBitBtn4.Enabled := false;
  RzBitBtn5.Enabled := false;
  if (pid = '') or (id = '') or (ymid = '') then
    exit;
  RzBitBtn4.Enabled := true;
  RzBitBtn5.Enabled := true;

  with ADOQuery1 do
    begin
      close;
      sql.Text := 'select [抗生素],[耐药性] from [药敏实验结果] where [住院号]=' + QuotedStr(pid) + ' and [明细序号]=' + id + ' and [药敏序号]=' + ymid;
      open;
      ARow := 0;
      while not eof do
        begin
          inc(ARow);

          for i := 0 to RzStringGrid4.ColCount - 1 do
            begin
              RzStringGrid4.Cells[i, ARow] := Fields[i].AsString;
            end;


          next;
        end;
      close;
      if ARow = 0 then
        RzStringGrid4.RowCount := 2
      else
        RzStringGrid4.RowCount := ARow + 1;

    end;

end;

procedure TFrm_ymjg.FormCreate(Sender: TObject);
begin
  with RzStringGrid4 do
    begin
      Cells[0, 0] := '抗生素';
      Cells[1, 0] := '耐药性';
      ColCount := 2;
      RowCount := 2;
      ColWidths[1] := 100;
      ColWidths[0] := width - 16 - ColWidths[1];
    end;

end;

procedure TFrm_ymjg.RzBitBtn6Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFrm_ymjg.RzBitBtn4Click(Sender: TObject);
var
  kss: string;
begin
  textCombox;
  kss := RzComboBox1.Text;
  if kss = '' then
    exit;

  dm.ADOConn.Execute('delete * from [药敏实验结果] where [住院号]=' + QuotedStr(pid) + ' and [明细序号]=' + id + ' and [药敏序号]=' + ymid + ' and [抗生素]=' + QuotedStr(kss));

  dm.ADOConn.Execute(format('insert into [药敏实验结果]([住院号],[明细序号],[药敏序号],[抗生素],[耐药性]) values(%s,%s,%s,%s,%s)',
    [QuotedStr(pid), id, ymid, QuotedStr(kss), QuotedStr(Trim(RzComboBox2.Text))]));
  browse(pid, id, ymid);
  localStringGrid(RzStringGrid4, kss);
//
end;

procedure TFrm_ymjg.textCombox;
var
  i, j: integer;
  str: string;
begin
  for i := 0 to Componentcount - 1 do
    if Components[i] is TRzComboBox then
      with TRzComboBox(Components[i]) do
        begin
          text := Trim(Text);
          str := text;
          j := pos('|', str);
          if j > 0 then
            text := copy(str, j + 1, MaxInt);
        end;
end;

procedure TFrm_ymjg.localStringGrid(sg: TRzStringGrid; v: string);
var
  i: integer;
begin
  for i := 1 to sg.RowCount - 1 do
    if sg.Cells[0, i] = v then
      begin
        sg.Row := i;
        exit;
      end;
end;

procedure TFrm_ymjg.RzStringGrid4SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  RzComboBox1.Text := RzStringGrid4.Cells[0, arow];
  RzComboBox2.Text := RzStringGrid4.Cells[1, arow];
end;

procedure TFrm_ymjg.RzBitBtn5Click(Sender: TObject);
var
  kss: string;
begin
  kss := RzStringGrid4.Cells[0, RzStringGrid4.row]; ;
  if kss = '' then
    exit;

  dm.ADOConn.Execute('delete * from [药敏实验结果] where [住院号]=' + QuotedStr(pid) + ' and [明细序号]=' + id + ' and [药敏序号]=' + ymid + ' and [抗生素]=' + QuotedStr(kss));
  browse(pid, id, ymid);
  RzComboBox1.Text := RzStringGrid4.Cells[0, RzStringGrid4.row];
  RzComboBox2.Text := RzStringGrid4.Cells[1, RzStringGrid4.row];


end;

end.

附件

  • 登记表:(感染病历登记表)(录入)

A、

住院号:______  姓名:_____  性别:____ 年龄:___(岁、月、天)

入院日期:________ 出院日期:________  住院天数:__________

出院诊断:1、______________________________________________(字典调用)

          2、______________________________________________

          3、______________________________________________

预后:1、治愈  2、好转 3、无变化 4、恶化 5、直接死亡  6、间接死亡  7、与死亡无关

B、

感染日期:___________  感染部位:________(字典调用) 具体部位:______(字典调用)

感染有关因素调查:__________________________________(字典调用)

病原学检查方法:1、镜检   2、培养  3、血清学检查

送检日期:_________________________________________

上报科室:________________(字典调用)  上报时间:_________________(精确到分秒)

上报人:_________________

C、

送检标本来源:________________________________(字典调用)

病原体名称:_________________________________(字典调用)

药敏实验结果:

      抗生素(字典调用)          耐药性

备注:

根据登记表的内容,我建议分为三部分,三者的关系如下:A与B是一对多的关系,B与C是一对多的关系(B存在,C不一定存在,只有存在病原学检查方法才有C的存在)

附录:(字典数据)

感染部位:

1、呼吸系统感染:A、上呼吸道感染   B、下呼吸道感染   C、胸膜腔感染

2、心血管系统感染:

A、侵犯心脏瓣膜(包括人工心瓣膜)的心内膜炎

B、心肌炎或心包炎

3、血液系统 :A、血管相关性感染   B、败血症   C、输血相关感染

4、腹部和消化系统:  A、感染性腹泻   B、胃肠道感染  C、抗菌药物相关性腹泻

                     D、病毒性肝炎   E、腹(盆)腔内组织感染   F、腹水感染

5、中枢神经系统:A、细菌性脑膜炎、脑室炎   B、颅内脓舯   C、椎管内感染

6、泌尿系统:    A、泌尿器官

7、手术部位:A、表浅手术切口感染  B、深部手术切口感染   C、器官(或腔隙)感染

8、皮肤和软组织:  A、皮肤感染   B、软组织感染  C、褥疮感染  D、烧伤感染

                   E、乳腺脓肿或乳腺炎   F、脐炎  G、婴儿脓疱病

9、骨关节:  A、关节和关节囊感染   B、骨髓炎   C、椎间盘感染

10、生殖道: A、外阴切口感染  B、阴道穹隆部感染  C、急性盆腔炎

D、子宫内膜炎   E、男女性生殖道的其它感染

11、口腔:口腔组织

12、其他部位:除上其它器官或组织

病原体:(即微生物中细菌名称,例:变形杆菌、不动杆菌等)(可从微生物系统中倒入)

抗生素:(例:庆大霉素、头孢西丁等)(可从微生物系统中倒入)

科室:(例:消化内科、心内科等)

     

送检标本来源:(例:血液、痰、尿等)(可从微生物系统中倒入)

出院诊断:(见ICD10信息)

ICD10编码      char(20)

ICD10名称      varchar(80)

  • 科室每月住院人数登记:(录入)

月份:______年_____月

科 

   住院人数

心内科

普外一

普外二

呼吸内科

消化内科

  • 报表:
    1. 每月各科室医院感染发病率

统计月份:2005年6月

科室

住院人数

感染病人数

感染率%

心内科

普外一

普外二

呼吸内科

消化内科

    1. 每月住院病人手术切口感染率

(数据来自感染部分为手术部位的病人)

统计月份:2005年6月

科室

住院人数

手术病人切口感染数

感染率%

心内科

普外一

普外二

呼吸内科

消化内科

    1. 每月感染部分发病率

统计月份:2005年6月

感染部分

科室

呼吸系统

心血管系统

血液系统

腹部和消化系统

中枢神经系统

泌尿系统

手术部位

皮肤和软组织

骨关节

生殖道

口腔

其他部位

住院人数

感染人数

感染率%

普外一

住院人数

感染人数

感染率%

    1. 抗菌药物敏感性检测汇总表

医院编号:__________   检测月份:2005年6月     上报日期:2005年7月1日

病原体

菌株合计)

血液

尿

金黄色葡萄球菌

表皮葡萄球菌

不动杆菌属

    1. 医院感染常见细菌对抗生素耐药率(%)

统计月份:2005年6月

药物

细菌

庆大霉素

头孢西丁

替卡西林

氨苄青霉素

金黄色葡萄球菌

  72.2

87.3

46.8

61.2

表皮葡萄球菌

50

0

0

35.7

不动杆菌属

    1. 某一疾病(ICD10)在每月感染率

统计月份:2005年6月    统计疾病:肾综合征出血热

住院人数

感染人数

感染率%

呼吸系统

上呼吸道感染

下呼吸道感染

胸膜腔感染


网站公告

今日签到

点亮在社区的每一天
去签到