| [459] | 1 | unit fDiagnoses;
 | 
|---|
 | 2 | 
 | 
|---|
 | 3 | interface
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | uses
 | 
|---|
 | 6 |   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
|---|
 | 7 |   fPCEBase, StdCtrls, CheckLst, ORCtrls, ORNet, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
 | 
|---|
 | 8 |   ComCtrls, fPCEBaseMain, UBAGlobals, UBAConst, UCore;
 | 
|---|
 | 9 | 
 | 
|---|
 | 10 | type
 | 
|---|
 | 11 |   TfrmDiagnoses = class(TfrmPCEBaseMain)
 | 
|---|
 | 12 |     cmdDiagPrimary: TButton;
 | 
|---|
 | 13 |     ckbDiagProb: TCheckBox;
 | 
|---|
 | 14 |     lblAdd2PL: TLabel;
 | 
|---|
 | 15 |     procedure cmdDiagPrimaryClick(Sender: TObject);
 | 
|---|
 | 16 |     procedure ckbDiagProbClicked(Sender: TObject);
 | 
|---|
 | 17 |     procedure FormCreate(Sender: TObject);
 | 
|---|
 | 18 |     procedure btnRemoveClick(Sender: TObject);
 | 
|---|
 | 19 |     procedure FormResize(Sender: TObject); override;
 | 
|---|
 | 20 |     procedure lbxSectionClickCheck(Sender: TObject; Index: Integer);
 | 
|---|
 | 21 |     procedure btnOKClick(Sender: TObject);  override;
 | 
|---|
 | 22 |     procedure lbSectionClick(Sender: TObject);
 | 
|---|
 | 23 |     procedure GetEncounterDiagnoses;
 | 
|---|
 | 24 |     procedure lbSectionDrawItem(Control: TWinControl; Index: Integer;
 | 
|---|
 | 25 |       Rect: TRect; State: TOwnerDrawState);
 | 
|---|
 | 26 |   private
 | 
|---|
 | 27 |     procedure EnsurePrimaryDiag;
 | 
|---|
 | 28 | 
 | 
|---|
 | 29 |   protected
 | 
|---|
 | 30 |     procedure UpdateNewItemStr(var x: string); override;
 | 
|---|
 | 31 |     procedure UpdateControls; override;
 | 
|---|
 | 32 |   public
 | 
|---|
 | 33 |   end;
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | const
 | 
|---|
 | 36 |   TX_INACTIVE_CODE = 'The "#" character next to the code for this problem indicates that the problem' + #13#10 +
 | 
|---|
 | 37 |                      'references an ICD code that is not active as of the date of this encounter.' + #13#10 +
 | 
|---|
 | 38 |                      'Before you can select this problem, you must update the ICD code it contains' + #13#10 +
 | 
|---|
 | 39 |                      'via the Problems tab.';
 | 
|---|
 | 40 |   TC_INACTIVE_CODE = 'Problem Contains Inactive Code';
 | 
|---|
 | 41 | 
 | 
|---|
 | 42 | var
 | 
|---|
 | 43 |   frmDiagnoses: TfrmDiagnoses;
 | 
|---|
 | 44 |   dxList : TStringList;
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 | implementation
 | 
|---|
 | 47 | 
 | 
|---|
 | 48 | {$R *.DFM}
 | 
|---|
 | 49 | 
 | 
|---|
 | 50 | uses
 | 
|---|
 | 51 |   fEncounterFrame, uConst, UBACore;
 | 
|---|
 | 52 | 
 | 
|---|
 | 53 | procedure TfrmDiagnoses.EnsurePrimaryDiag;
 | 
|---|
 | 54 | var
 | 
|---|
 | 55 |   i: Integer;
 | 
|---|
 | 56 |   Primary: Boolean;
 | 
|---|
 | 57 | 
 | 
|---|
 | 58 | begin
 | 
|---|
 | 59 |   with lbGrid do
 | 
|---|
 | 60 |   begin
 | 
|---|
 | 61 |     Primary := False;
 | 
|---|
 | 62 |     for i := 0 to Items.Count - 1 do
 | 
|---|
 | 63 |       if TPCEDiag(Items.Objects[i]).Primary then
 | 
|---|
 | 64 |         Primary := True;
 | 
|---|
 | 65 | 
 | 
|---|
 | 66 |     if not Primary and (Items.Count > 0) then
 | 
|---|
 | 67 |     begin
 | 
|---|
 | 68 |       GridIndex := 0;
 | 
|---|
 | 69 |       TPCEDiag(Items.Objects[0]).Primary := True;
 | 
|---|
 | 70 |       GridChanged;
 | 
|---|
 | 71 |     end;
 | 
|---|
 | 72 |   end;
 | 
|---|
 | 73 | end;
 | 
|---|
 | 74 | 
 | 
|---|
 | 75 | procedure TfrmDiagnoses.cmdDiagPrimaryClick(Sender: TObject);
 | 
|---|
 | 76 | var
 | 
|---|
 | 77 |   gi, i: Integer;
 | 
|---|
 | 78 |   ADiagnosis: TPCEDiag;
 | 
|---|
 | 79 | 
 | 
|---|
 | 80 | begin
 | 
|---|
 | 81 |   inherited;
 | 
|---|
 | 82 |   gi := GridIndex;
 | 
|---|
 | 83 |   with lbGrid do for i := 0 to Items.Count - 1 do
 | 
|---|
 | 84 |   begin
 | 
|---|
 | 85 |     ADiagnosis := TPCEDiag(Items.Objects[i]);
 | 
|---|
 | 86 |     ADiagnosis.Primary := (gi = i);
 | 
|---|
 | 87 |   end;
 | 
|---|
 | 88 |   GridChanged;
 | 
|---|
 | 89 | end;
 | 
|---|
 | 90 | 
 | 
|---|
 | 91 | procedure TfrmDiagnoses.ckbDiagProbClicked(Sender: TObject);
 | 
|---|
 | 92 | var
 | 
|---|
 | 93 |   i: integer;
 | 
|---|
 | 94 | const
 | 
|---|
 | 95 |   PL_ITEMS = 'Problem List Items';
 | 
|---|
 | 96 | 
 | 
|---|
 | 97 | begin
 | 
|---|
 | 98 |   inherited;
 | 
|---|
 | 99 |   if(NotUpdating) then
 | 
|---|
 | 100 |   begin
 | 
|---|
 | 101 |     for i := 0 to lbGrid.Items.Count-1 do
 | 
|---|
 | 102 |       if(lbGrid.Selected[i]) then
 | 
|---|
 | 103 |         TPCEDiag(lbGrid.Items.Objects[i]).AddProb := (ckbDiagProb.Checked) and
 | 
|---|
 | 104 |                                                      (TPCEDiag(lbGrid.Items.Objects[i]).Category <> PL_ITEMS);
 | 
|---|
 | 105 |     GridChanged;
 | 
|---|
 | 106 |   end;
 | 
|---|
 | 107 | end;
 | 
|---|
 | 108 | 
 | 
|---|
 | 109 | procedure TfrmDiagnoses.FormCreate(Sender: TObject);
 | 
|---|
 | 110 | begin
 | 
|---|
 | 111 |   inherited;
 | 
|---|
 | 112 |   FTabName := CT_DiagNm;
 | 
|---|
 | 113 |   FPCEListCodesProc := ListDiagnosisCodes;
 | 
|---|
 | 114 |   FPCEItemClass := TPCEDiag;
 | 
|---|
 | 115 |   FPCECode := 'POV';
 | 
|---|
 | 116 |   FSectionTabCount := 3;
 | 
|---|
 | 117 |   FormResize(Self);
 | 
|---|
 | 118 | end;
 | 
|---|
 | 119 | 
 | 
|---|
 | 120 | procedure TfrmDiagnoses.btnRemoveClick(Sender: TObject);
 | 
|---|
 | 121 | begin
 | 
|---|
 | 122 |   inherited;
 | 
|---|
 | 123 |   EnsurePrimaryDiag;
 | 
|---|
 | 124 | end;
 | 
|---|
 | 125 | 
 | 
|---|
 | 126 | procedure TfrmDiagnoses.UpdateNewItemStr(var x: string);
 | 
|---|
 | 127 | begin
 | 
|---|
 | 128 |   inherited;
 | 
|---|
 | 129 |   if lbGrid.Items.Count = 0 then
 | 
|---|
 | 130 |     x := x + U + '1'
 | 
|---|
 | 131 |   else
 | 
|---|
 | 132 |     x := x + U + '0';
 | 
|---|
 | 133 | end;
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 | procedure TfrmDiagnoses.UpdateControls;
 | 
|---|
 | 136 | var
 | 
|---|
 | 137 |   i, j, k, PLItemCount: integer;
 | 
|---|
 | 138 |   OK: boolean;
 | 
|---|
 | 139 | const
 | 
|---|
 | 140 |   PL_ITEMS = 'Problem List Items';
 | 
|---|
 | 141 | begin
 | 
|---|
 | 142 |   inherited;
 | 
|---|
 | 143 |   if(NotUpdating) then
 | 
|---|
 | 144 |   begin
 | 
|---|
 | 145 |     BeginUpdate;
 | 
|---|
 | 146 |     try
 | 
|---|
 | 147 |       cmdDiagPrimary.Enabled := (lbGrid.SelCount = 1);
 | 
|---|
 | 148 |       OK := (lbGrid.SelCount > 0);
 | 
|---|
 | 149 |       PLItemCount := 0;
 | 
|---|
 | 150 |       if OK then
 | 
|---|
 | 151 |         for k := 0 to lbGrid.Items.Count - 1 do
 | 
|---|
 | 152 |           if (lbGrid.Selected[k]) and (TPCEDiag(lbGrid.Items.Objects[k]).Category = PL_ITEMS) then
 | 
|---|
 | 153 |             PLItemCount := PLItemCount + 1;
 | 
|---|
 | 154 |       OK := OK and (PLItemCount < lbGrid.SelCount);
 | 
|---|
 | 155 |       lblAdd2PL.Enabled := OK;
 | 
|---|
 | 156 |       ckbDiagProb.Enabled := OK;
 | 
|---|
 | 157 |       if(OK) then
 | 
|---|
 | 158 |       begin
 | 
|---|
 | 159 |         j := 0;
 | 
|---|
 | 160 |         for i := 0 to lbGrid.Items.Count-1 do
 | 
|---|
 | 161 |         begin
 | 
|---|
 | 162 |           if(lbGrid.Selected[i]) and (TPCEDiag(lbGrid.Items.Objects[i]).AddProb) then
 | 
|---|
 | 163 |             inc(j);
 | 
|---|
 | 164 |         end;
 | 
|---|
 | 165 |         if(j = 0) then
 | 
|---|
 | 166 |           ckbDiagProb.Checked := FALSE
 | 
|---|
 | 167 |         else
 | 
|---|
 | 168 |         if(j < lbGrid.SelCount) then
 | 
|---|
 | 169 |           ckbDiagProb.State := cbGrayed
 | 
|---|
 | 170 |         else
 | 
|---|
 | 171 |           ckbDiagProb.Checked := TRUE;
 | 
|---|
 | 172 |       end
 | 
|---|
 | 173 |       else
 | 
|---|
 | 174 |         ckbDiagProb.Checked := FALSE;
 | 
|---|
 | 175 |     finally
 | 
|---|
 | 176 |       EndUpdate;
 | 
|---|
 | 177 |     end;
 | 
|---|
 | 178 |   end;
 | 
|---|
 | 179 | end;
 | 
|---|
 | 180 | 
 | 
|---|
 | 181 | procedure TfrmDiagnoses.FormResize(Sender: TObject);
 | 
|---|
 | 182 | begin
 | 
|---|
 | 183 |   inherited;
 | 
|---|
 | 184 |   FSectionTabs[0] := -(lbxSection.width - LBCheckWidthSpace - (8*MainFontWidth) - ScrollBarWidth);
 | 
|---|
 | 185 |   FSectionTabs[1] := -FSectionTabs[0]+2;
 | 
|---|
 | 186 |   FSectionTabs[2] := -FSectionTabs[0]+4;
 | 
|---|
 | 187 |   UpdateTabPos;
 | 
|---|
 | 188 | end;
 | 
|---|
 | 189 | 
 | 
|---|
 | 190 | procedure TfrmDiagnoses.lbxSectionClickCheck(Sender: TObject;
 | 
|---|
 | 191 |   Index: Integer);
 | 
|---|
 | 192 | begin
 | 
|---|
 | 193 |   if not FUpdatingGrid then
 | 
|---|
 | 194 |     if (lbxSection.Checked[Index]) and (Piece(lbxSection.Items[Index], U, 5) = '#') then
 | 
|---|
 | 195 |       begin
 | 
|---|
 | 196 |         InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
 | 
|---|
 | 197 |         lbxSection.Checked[Index] := False;
 | 
|---|
 | 198 |         exit;
 | 
|---|
 | 199 |       end;
 | 
|---|
 | 200 |   inherited;
 | 
|---|
 | 201 |   EnsurePrimaryDiag;
 | 
|---|
 | 202 | end;
 | 
|---|
 | 203 | 
 | 
|---|
 | 204 | procedure TfrmDiagnoses.btnOKClick(Sender: TObject);
 | 
|---|
 | 205 | begin
 | 
|---|
 | 206 |   inherited;
 | 
|---|
 | 207 |   if  BILLING_AWARE then
 | 
|---|
 | 208 |      GetEncounterDiagnoses;
 | 
|---|
 | 209 | end;
 | 
|---|
 | 210 | 
 | 
|---|
 | 211 | procedure TfrmDiagnoses.lbSectionClick(Sender: TObject);
 | 
|---|
 | 212 | begin
 | 
|---|
 | 213 |   inherited;
 | 
|---|
 | 214 | //
 | 
|---|
 | 215 | end;
 | 
|---|
 | 216 | 
 | 
|---|
 | 217 | procedure TfrmDiagnoses.GetEncounterDiagnoses;
 | 
|---|
 | 218 | var
 | 
|---|
 | 219 |   i: integer;
 | 
|---|
 | 220 |   dxCode, dxName: string;
 | 
|---|
 | 221 |   ADiagnosis: TPCEItem;
 | 
|---|
 | 222 | begin
 | 
|---|
 | 223 |    inherited;
 | 
|---|
 | 224 |   UBAGlobals.BAPCEDiagList.Clear;
 | 
|---|
 | 225 |   with lbGrid do for i := 0 to Items.Count - 1 do
 | 
|---|
 | 226 |   begin
 | 
|---|
 | 227 |     ADiagnosis := TPCEDiag(Items.Objects[i]);
 | 
|---|
 | 228 |     dxCode :=  ADiagnosis.Code;
 | 
|---|
 | 229 |     dxName :=  ADiagnosis.Narrative;
 | 
|---|
 | 230 |     if BAPCEDiagList.Count = 0 then
 | 
|---|
 | 231 |        UBAGlobals.BAPCEDiagList.Add(U + DX_ENCOUNTER_LIST_TXT);
 | 
|---|
 | 232 |     UBAGlobals.BAPCEDiagList.Add(dxCode + U + dxName);
 | 
|---|
 | 233 |   end;
 | 
|---|
 | 234 | end;
 | 
|---|
 | 235 | 
 | 
|---|
 | 236 | 
 | 
|---|
 | 237 | procedure TfrmDiagnoses.lbSectionDrawItem(Control: TWinControl;
 | 
|---|
 | 238 |   Index: Integer; Rect: TRect; State: TOwnerDrawState);
 | 
|---|
 | 239 | begin
 | 
|---|
 | 240 |   inherited;
 | 
|---|
 | 241 |   if (control as TListbox).items[index] = DX_PROBLEM_LIST_TXT then
 | 
|---|
 | 242 |      (Control as TListBox).Canvas.Font.Style := [fsBold]
 | 
|---|
 | 243 |   else
 | 
|---|
 | 244 |      if (control as Tlistbox).items[index] = DX_PERSONAL_LIST_TXT then
 | 
|---|
 | 245 |         (Control as TListBox).Canvas.Font.Style := [fsBold]
 | 
|---|
 | 246 |   else
 | 
|---|
 | 247 |      if (control as Tlistbox).items[index] =  DX_TODAYS_DX_LIST_TXT  then
 | 
|---|
 | 248 |         (Control as TListBox).Canvas.Font.Style := [fsBold]
 | 
|---|
 | 249 |   else
 | 
|---|
 | 250 |      if (control as Tlistbox).items[index] = DX_ENCOUNTER_LIST_TXT then
 | 
|---|
 | 251 |         (Control as TListBox).Canvas.Font.Style := [fsBold]
 | 
|---|
 | 252 |   else
 | 
|---|
 | 253 |      (Control as TListBox).Canvas.Font.Style := [];
 | 
|---|
 | 254 | 
 | 
|---|
 | 255 |   (Control as TListBox).Canvas.TextOut(Rect.Left+2, Rect.Top+1, (Control as
 | 
|---|
 | 256 |               TListBox).Items[Index]); {display the text }
 | 
|---|
 | 257 | end;
 | 
|---|
 | 258 | 
 | 
|---|
 | 259 | end.
 | 
|---|