//kt -- Modified with SourceScanner on 7/19/2007 unit fMedCopy; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ORDtTm, ORCtrls, ORFn, rOrders, uCore, rCore, mEvntDelay, fAutoSz, ExtCtrls, UConst, DKLang; type TfrmMedCopy = class(TForm) Panel1: TPanel; lblPtInfo: TLabel; Panel2: TPanel; lblInstruction: TStaticText; Image1: TImage; Label1: TStaticText; Panel3: TPanel; GroupBox2: TGroupBox; radDelayed: TRadioButton; radRelease: TRadioButton; cmdOK: TButton; cmdCancel: TButton; Panel4: TPanel; fraEvntDelayList: TfraEvntDelayList; DKLanguageController1: TDKLanguageController; procedure cmdOKClick(Sender: TObject); procedure cmdCancelClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure radDelayedClick(Sender: TObject); procedure radReleaseClick(Sender: TObject); procedure fraEvntDelayListcboEvntListChange(Sender: TObject); procedure UMStillDelay(var message: TMessage); message UM_STILLDELAY; procedure fraEvntDelayListmlstEventsDblClick(Sender: TObject); procedure fraEvntDelayListmlstEventsChange(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private //kt Begin Mod (change Consts to Vars) 7/19/2007 TX_SEL_DATE : string; //kt TC_SEL_DATE : string; //kt //kt End Mod ------------------- FDelayEvent: TOrderDelayEvent; FOKPressed: Boolean; procedure SetupVars; //kt public { Public declarations } end; function SetDelayEventForMed(const RadCap: string; var ADelayEvent: TOrderDelayEvent; var IsNewEvent: Boolean; LimitEvent: Char): Boolean; var frmMedCopy: TfrmMedCopy; implementation {$R *.DFM} uses fODBase, fOrdersTS, fOrders; //const //TX_SEL_DATE = 'An effective date (approximate) must be selected for discharge orders.'; <-- original line. //kt 7/19/2007 //TC_SEL_DATE = 'Missing Effective Date'; <-- original line. //kt 7/19/2007 procedure TfrmMedCopy.SetupVars; //kt Added entire function to replace constant declarations 7/19/2007 begin TX_SEL_DATE := DKLangConstW('fMedCopy_An_effective_date_xapproximatex_must_be_selected_for_discharge_ordersx'); TC_SEL_DATE := DKLangConstW('fMedCopy_Missing_Effective_Date'); end; function SetDelayEventForMed(const RadCap: string; var ADelayEvent: TOrderDelayEvent; var IsNewEvent: Boolean; LimitEvent: Char): Boolean; //const //TX_RELEASE1 = 'Release '; <-- original line. //kt 7/19/2007 //TX_RELEASE2 = ' orders immediately'; <-- original line. //kt 7/19/2007 //TX_DELAYED1 = 'Delay release of '; <-- original line. //kt 7/19/2007 //TX_DELAYED2 = ' orders until'; <-- original line. //kt 7/19/2007 var EvtInfo,PtEvtID,AnEvtDlg: string; SpeCap, CurrTS: string; TX_RELEASE1 : String; //kt TX_RELEASE2 : String; //kt TX_DELAYED1 : String; //kt TX_DELAYED2 : String; //kt procedure Highlight(APtEvtID: string); var j: integer; begin frmOrders.InitOrderSheetsForEvtDelay; for j := 0 to frmOrders.lstSheets.Items.Count - 1 do begin if Piece(frmOrders.lstSheets.Items[j],'^',1)=APtEvtID then begin frmOrders.lstSheets.ItemIndex := j; break; end; end; end; function DisplayEvntDialog(AEvtDlg: String; AnEvent: TOrderDelayEvent): boolean; var DlgData: string; begin DlgData := GetDlgData(AEvtDlg); frmOrders.NeedShowModal := True; frmOrders.IsDefaultDlg := True; Result := frmOrders.PlaceOrderForDefaultDialog(DlgData, True, AnEvent); frmOrders.IsDefaultDlg := False; frmOrders.NeedShowModal := False; end; begin TX_RELEASE1 := DKLangConstW('fMedCopy_Release'); //kt added 7/19/2007 TX_RELEASE2 := DKLangConstW('fMedCopy_orders_immediately'); //kt added 7/19/2007 TX_DELAYED1 := DKLangConstW('fMedCopy_Delay_release_of'); //kt added 7/19/2007 TX_DELAYED2 := DKLangConstW('fMedCopy_orders_until'); //kt added 7/19/2007 if LimitEvent = 'C' then begin Result := True; ADelayEvent.EventType := 'C'; ADelayEvent.Specialty := 0; ADelayEvent.Effective := 0; Exit; end; Result := False; frmMedCopy := TfrmMedCopy.Create(Application); try if (LimitEvent = 'A') and (not Patient.Inpatient) then begin frmMedCopy.radDelayed.Checked := True; frmMedCopy.radRelease.Enabled := False; end; ResizeAnchoredFormToFont(frmMedCopy); CurrTS := Piece(GetCurrentSpec(Patient.DFN),'^',1); if Length(CurrTS)>0 then // SpeCap := #13 + ' The current treating specialty is ' + CurrTS <-- original line. //kt 7/19/2007 SpeCap := #13 + DKLangConstW('fMedCopy_The_current_treating_specialty_is') + CurrTS //kt added 7/19/2007 else // SpeCap := #13 + ' No treating specialty is available.'; <-- original line. //kt 7/19/2007 SpeCap := #13 + DKLangConstW('fMedCopy_No_treating_specialty_is_availablex'); //kt added 7/19/2007 if Patient.Inpatient then // frmMedCopy.lblPtInfo.Caption := ' ' + Patient.Name + ' is currently admitted to ' + Encounter.LocationName + SpeCap <-- original line. //kt 7/19/2007 frmMedCopy.lblPtInfo.Caption := DKLangConstW('fMedCopy_') + Patient.Name + DKLangConstW('fMedCopy_is_currently_admitted_to') + Encounter.LocationName + SpeCap //kt added 7/19/2007 else begin if (Encounter.Location > 0) then // frmMedCopy.lblPtInfo.Caption := Patient.Name + ' is currently at ' + Encounter.LocationName + SpeCap <-- original line. //kt 7/19/2007 frmMedCopy.lblPtInfo.Caption := Patient.Name + DKLangConstW('fMedCopy_is_currently_at') + Encounter.LocationName + SpeCap //kt added 7/19/2007 else // frmMedCopy.lblPtInfo.Caption := Patient.Name + ' currently is an outpatient.' + SpeCap; <-- original line. //kt 7/19/2007 frmMedCopy.lblPtInfo.Caption := Patient.Name + DKLangConstW('fMedCopy_currently_is_an_outpatientx') + SpeCap; //kt added 7/19/2007 end; frmMedCopy.fraEvntDelayList.EvntLimit := LimitEvent; // if Pos('transfer',RadCap)>0 then <-- original line. //kt 7/19/2007 if Pos(DKLangConstW('fMedCopy_transfer'),RadCap)>0 then //kt added 7/19/2007 // frmMedCopy.Caption := 'Transfer Medication Orders'; <-- original line. //kt 7/19/2007 frmMedCopy.Caption := DKLangConstW('fMedCopy_Transfer_Medication_Orders'); //kt added 7/19/2007 frmMedCopy.radRelease.Caption := TX_RELEASE1 + RadCap + TX_RELEASE2; frmMedCopy.radDelayed.Caption := TX_DELAYED1 + RadCap + TX_DELAYED2; if LimitEvent='D' then begin frmMedCopy.Panel2.Visible := False; frmMedCopy.Height := frmMedCopy.Panel1.Height + frmMedCopy.GroupBox2.Height; end; frmMedCopy.ShowModal; if (frmMedCopy.FOKPressed) and (frmMedCopy.radRelease.Checked) then begin if (frmMedCopy.radRelease.Checked) and (LimitEvent = 'D') then XfInToOutNow := True else XfInToOutNow := False; ADelayEvent := frmMedCopy.FDelayEvent; Result := True; end else if (frmMedCopy.FOKPressed) and (frmMedCopy.radDelayed.Checked) then begin EvtInfo := frmMedCopy.fraEvntDelayList.mlstEvents.Items[frmMedCopy.fraEvntDelayList.mlstEvents.ItemIndex]; ADelayEvent.EventType := CharAt(Piece(EvtInfo,'^',3),1); ADelayEvent.EventIFN := StrToInt64Def(Piece(EvtInfo,'^',1),0); if StrToInt64Def(Piece(EvtInfo,'^',13),0) > 0 then begin ADelayEvent.TheParent.Assign(Piece(EvtInfo,'^',13)); ADelayEvent.EventType := ADelayEvent.TheParent.ParentType; end; ADelayEvent.EventName := frmMedCopy.fraEvntDelayList.mlstEvents.DisplayText[frmMedCopy.fraEvntDelayList.mlstEvents.ItemIndex]; ADelayEvent.Specialty := 0; if frmMedCopy.fraEvntDelayList.orDateBox.Visible then ADelayEvent.Effective := frmMedCopy.fraEvntDelayList.orDateBox.FMDateTime else ADelayEvent.Effective := 0; IsNewEvent := False; if TypeOfExistedEvent(Patient.DFN,ADelayEvent.EventIFN) = 0 then begin IsNewEvent := True; if ADelayEvent.TheParent.ParentIFN > 0 then begin if StrToIntDef(ADelayEvent.TheParent.ParentDlg,0)>0 then AnEvtDlg := ADelayEvent.TheParent.ParentDlg; end else AnEvtDlg := Piece(EvtInfo,'^',5); end; if (StrToIntDef(AnEvtDlg,0)>0) and (IsNewEvent) then if not DisplayEvntDialog(AnEvtDlg, ADelayEvent) then begin frmOrders.lstSheets.ItemIndex := 0; frmOrders.lstSheetsClick(nil); Result := False; Exit; end; if not isExistedEvent(Patient.DFN, IntToStr(ADelayEvent.EventIFN), PtEvtID) then begin IsNewEvent := True; if (ADelayEvent.TheParent.ParentIFN > 0) and (TypeOfExistedEvent(Patient.DFN,ADelayEvent.EventIFN) = 0 ) then SaveEvtForOrder(Patient.DFN,ADelayEvent.TheParent.ParentIFN,''); SaveEvtForOrder(Patient.DFN,ADelayEvent.EventIFN,''); if isExistedEvent(Patient.DFN, IntToStr(ADelayEvent.EventIFN),PtEvtID) then begin Highlight(PtEvtID); ADelayEvent.IsNewEvent := False; ADelayEvent.PtEventIFN := StrToIntDef(PtEvtID,0); end; end else begin Highlight(PtEvtID); ADelayEvent.PtEventIFN := StrToIntDef(PtEvtID,0); ADelayEvent.IsNewEvent := False; end; if frmOrders.lstSheets.ItemIndex > -1 then begin frmOrders.AskForCancel := False; frmOrders.lstSheetsClick(nil); frmOrders.AskForCancel := True; end; Result := True; end; finally frmMedCopy.fraEvntDelayList.ResetProperty; frmMedCopy.Release; end; end; procedure TfrmMedCopy.FormCreate(Sender: TObject); begin inherited; FOKPressed := False; FDelayEvent.EventType := #0; FDelayEvent.EventIFN := 0; radRelease.Checked := True; if not Patient.Inpatient then panel2.Visible := False; if not radDelayed.Checked then begin if not panel2.Visible then Height := Height - fraEvntDelayList.Height - panel2.Height else Height := Height - fraEvntDelayList.Height; end; end; procedure TfrmMedCopy.cmdOKClick(Sender: TObject); var today : TFMDateTime; begin inherited; today := FMToday; if (radDelayed.Checked) and (fraEvntDelayList.mlstEvents.ItemIndex < 0) then begin // InfoBox('A release event must be selected.', 'No Selection Made', MB_OK); <-- original line. //kt 7/19/2007 InfoBox(DKLangConstW('fMedCopy_A_release_event_must_be_selectedx'), DKLangConstW('fMedCopy_No_Selection_Made'), MB_OK); //kt added 7/19/2007 Exit; end; //if (radRelease.Checked) and (Pos('copied',radRelease.Caption)>0) then <-- original line. //kt 7/19/2007 if (radRelease.Checked) and (Pos(DKLangConstW('fMedCopy_copied'),radRelease.Caption)>0) then //kt added 7/19/2007 begin ImmdCopyAct := True; FDelayEvent.EventType := 'C'; FDelayEvent.Specialty := 0; FDelayEvent.Effective := 0; end //else if (radRelease.Checked) and (Pos('transfer',radRelease.Caption)>0) then <-- original line. //kt 7/19/2007 else if (radRelease.Checked) and (Pos(DKLangConstW('fMedCopy_transfer'),radRelease.Caption)>0) then //kt added 7/19/2007 begin FDelayEvent.EventType := 'D'; FDelayEvent.Specialty := 0; FDelayEvent.Effective := today; end; FOKPressed := True; Close; end; procedure TfrmMedCopy.cmdCancelClick(Sender: TObject); begin inherited; Close; end; procedure TfrmMedCopy.radDelayedClick(Sender: TObject); //const //WarningMSG = 'If you''re writing medication orders to transfer these from Inpatient' + <-- original line. //kt 7/19/2007 // ' to Outpatient, please use the ''release immediately'' choice. These will be' + <-- original line. //kt 7/19/2007 // ' readied in advance by Pharmacy for the patient''s expected discharge date.'; <-- original line. //kt 7/19/2007 var WarningMSG : string; //kt begin WarningMSG := DKLangConstW('fMedCopy_If_youxxre_writing_medication_orders_to_transfer_these_from_Inpatient') + //kt added 7/19/2007 DKLangConstW('fMedCopy_to_Outpatientx_please_use_the_xxrelease_immediatelyxx_choicex__These_will_be') + //kt added 7/19/2007 DKLangConstW('fMedCopy_readied_in_advance_by_Pharmacy_for_the_patientxxs_expected_discharge_datex'); //kt added 7/19/2007 inherited; frmMedCopy.fraEvntDelayList.UserDefaultEvent := StrToIntDef(GetDefaultEvt(IntToStr(User.DUZ)),0); fraEvntDelayList.DisplayEvntDelayList; if fraEvntDelayList.mlstEvents.Items.Count < 1 then begin ShowMessage(WarningMSG); radRelease.Checked := True; end else begin Height := Height + fraEvntDelayList.Height; fraEvntDelayList.Visible := True; end; end; procedure TfrmMedCopy.radReleaseClick(Sender: TObject); begin inherited; fraEvntDelayList.Visible := False; Height := Height - fraEvntDelayList.Height; end; procedure TfrmMedCopy.fraEvntDelayListcboEvntListChange(Sender: TObject); begin inherited; fraEvntDelayList.mlstEventsChange(Sender); if fraEvntDelayList.MatchedCancel then Close end; procedure TfrmMedCopy.UMStillDelay(var message: TMessage); begin CmdOKClick(Application); end; procedure TfrmMedCopy.fraEvntDelayListmlstEventsDblClick(Sender: TObject); begin if fraEvntDelayList.mlstEvents.ItemID > 0 then cmdOKClick(Self); end; procedure TfrmMedCopy.fraEvntDelayListmlstEventsChange(Sender: TObject); begin fraEvntDelayList.mlstEventsChange(Sender); if fraEvntDelayList.MatchedCancel then begin FOKPressed := False; Close; Exit; end; end; procedure TfrmMedCopy.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then cmdOKClick(Self); end; end.