Ignore:
Timestamp:
Jul 6, 2008, 8:20:14 PM (16 years ago)
Author:
Kevin Toppenberg
Message:

Uploading from OR_30_258

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cprs/branches/foia-cprs/CPRS-Chart/Orders/fODBase.pas

    r459 r460  
    6262    FLogTime:   TFMDateTime;
    6363    FViewName: string;
     64    FCancel: boolean;
     65    FOrderContainsObjects: boolean;
    6466    function FindResponseByIEN(APromptIEN, AnInstance: Integer): TResponse;
    6567    function GetOrderText: string;
     
    8385    function GetIENForPrompt(const APromptID: string): Integer;
    8486    function FindResponseByName(const APromptID: string; AnInstance: Integer): TResponse;
     87    function PromptExists(const APromptID: string):boolean;
    8588    function InstanceCount(const APromptID: string): Integer;
    8689    function IValueFor(const APromptID: string; AnInstance: Integer): string;
     
    9699      const AnIValue, AnEValue: string);
    97100    property Dialog: string            read FDialog         write SetDialog;
    98     property DisplayGroup: Integer     read FDisplayGroup;
     101    property DisplayGroup: Integer     read FDisplayGroup   write FDisplayGroup;
    99102    property CopyOrder:    string      read FCopyOrder      write SetCopyOrder;
    100103    property EditOrder:    string      read FEditOrder;  //  write SetEditOrder;
     
    110113    property VarTrailing:  string      read FVarTrailing    write FVarTrailing;
    111114    property TheList:      TList       read FResponseList   write FResponseList;
     115    property Cancel:       boolean     read FCancel         write FCancel;
     116    property OrderContainsObjects: boolean read FOrderContainsObjects write FOrderContainsObjects;
    112117  end;
    113118
     
    241246uses fOCAccept, uODBase, rCore, rMisc, fODMessage,
    242247  fTemplateDialog, uEventHooks, uTemplates, rConsults,fOrders,uOrders,
    243   fFrame, uTemplateFields;
     248  fFrame, uTemplateFields, fClinicWardMeds;
    244249
    245250const
     
    583588procedure TResponses.SetCopyOrder(const AnID: string);
    584589{ sets responses to the values for an order that is created by copying }
     590var
     591  HasObjects: boolean;
    585592begin
    586593  if AnID = '' then
     
    590597  end;
    591598  Clear;
    592   LoadResponses(FResponseList, AnID);                      // Example AnID=C123456;1-3604
     599  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=C123456;1-3604
    593600  FCopyOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID));
     601  FOrderContainsObjects := HasObjects;
    594602end;
    595603
    596604procedure TResponses.SetEditOrder(const AnID: string);
    597605{ sets responses to the values for an order that is about to be edited }
     606var
     607  HasObjects: boolean;
    598608begin
    599609  Clear;
    600   LoadResponses(FResponseList, AnID);                      // Example AnID=X123456;1
     610  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=X123456;1
    601611  FEditOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID));
     612  FOrderContainsObjects := HasObjects;
    602613end;
    603614
    604615procedure TResponses.SetQuickOrder(AnIEN: Integer);
    605616{ sets responses to a quick order value - this is used by the QuickOrder property}
     617var
     618  HasObjects: boolean;
    606619begin
    607620  Clear;
    608   LoadResponses(FResponseList, IntToStr(AnIEN));           // Example AnIEN=134
     621  LoadResponses(FResponseList, IntToStr(AnIEN), HasObjects);           // Example AnIEN=134
    609622  FQuickOrder := AnIEN;
     623  FOrderContainsObjects := HasObjects;
    610624end;
    611625
    612626procedure TResponses.SetQuickOrderByID(const AnID: string);
    613627{ sets responses to a quick order value }
     628var
     629  HasObjects: boolean;
    614630begin
    615631  Clear;
    616   LoadResponses(FResponseList, AnID);                      // Example AnID=134-3645
     632  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=134-3645
    617633  FQuickOrder := StrToIntDef(Piece(AnID, '-', 1), 0);      // 2nd '-' piece is $H seconds
     634  FOrderContainsObjects := HasObjects;
    618635end;
    619636
     
    671688      break;
    672689    end;
     690end;
     691
     692function TResponses.PromptExists(const APromptID: string): boolean;
     693var
     694  i: Integer;
     695begin
     696  Result := False;
     697  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
     698    if (ID = APromptID) then Result :=  True;
    673699end;
    674700
     
    958984  APtEvtPtr: string;
    959985begin
     986  //IMOLoc := 0;
    960987  NewPtEvtPtr := 0;
    961988  QOUDGroup := False;
     
    9841011    if IsIMODialog then
    9851012      DGroup := ClinDisp;
     1013    //AGP Change 26.35, 26.41 8518 added text order
     1014    //AGP Change 26.55 remove IMO functionality for inpatient
     1015    (*if (Patient.Inpatient = true) and (IsValidIMOLoc(encounter.Location,Patient.DFN)=true) and
     1016      ((ConstructOrder.DialogName = 'PSJ OR PAT OE') or (ConstructOrder.DialogName = 'PSJI OR PAT FLUID OE') or
     1017      (ConstructOrder.DialogName = 'OR GXTEXT WORD PROCESSING ORDE')) and
     1018      ((FEditOrder = '') and (Self.FEventName = '') and (Self.FCopyOrder = '')) then
     1019      begin
     1020       if frmClinicWardMeds.ClinicOrWardLocation(Encounter.location) = Encounter.Location then
     1021          begin
     1022            ConstructOrder.IsIMODialog := True;
     1023            ConstructOrder.DGroup := ClinDisp;
     1024          end
     1025       else IMOLoc := Patient.Location;
     1026      end; *)
     1027    //AGP Change 26.51, change logic to set text orders to IMO for outpatients at an outpatient location.
     1028    //AGP Text orders are only treated as IMO if the order display group is a nursing display group
     1029    if (Patient.Inpatient = False) and (IsValidIMOLoc(encounter.Location,Patient.DFN)=true) and
     1030       (((pos('OR GXTEXT WORD PROCESSING ORDE',ConstructOrder.DialogName)>0) and (ConstructOrder.DGroup = NurDisp)) or
     1031       ((ConstructOrder.DialogName = 'OR GXMISC GENERAL') and (ConstructOrder.DGroup = NurDisp)) or
     1032       ((ConstructOrder.DialogName = 'OR GXTEXT TEXT ONLY ORDER') and (ConstructOrder.DGroup = NurDisp))) and //AGP Change CQ #10757
     1033      ((FEditOrder = '') and (Self.FEventName = '') and (Self.FCopyOrder = '')) then
     1034         begin
     1035            ConstructOrder.IsIMODialog := True;
     1036            ConstructOrder.DGroup := ClinDisp;
     1037          end;
    9861038    IsEventDefaultOR := EventDefaultOD;
    9871039    if IsUDGroup or QOUDGroup then
     
    10031055      APtEvtPtr   := IntToStr(EventExist(Patient.DFN, FEventIFN));
    10041056      PTEventPtr  := APtEvtPtr;
     1057      //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc);
    10051058      PutNewOrder(AnOrder, ConstructOrder, OrderSource);
    10061059      if not SaveAsCurrent then
     
    10121065    else
    10131066    begin
     1067      //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc);
    10141068      PutNewOrder(AnOrder, ConstructOrder, OrderSource);
    10151069      if not SaveAsCurrent then
     
    10641118  AResponse: TResponse;
    10651119  IEN: integer;
     1120  HasObjects: boolean;
    10661121
    10671122  procedure AssignBPText(List: TStrings; const Value: string);
     
    10801135      else         IEN := 0;
    10811136    end;
     1137    ExpandOrderObjects(tmp, HasObjects);
     1138    FOrderContainsObjects := FOrderContainsObjects or HasObjects;
    10821139    if IEN <> 0 then
    10831140      begin
     
    10911148    else
    10921149      CheckBoilerplate4Fields(tmp, cptn);
    1093 
    10941150    List.Text := tmp;
    10951151  end;
     
    13261382  if (Encounter.Provider = 0) or (PersonHasKey(Encounter.Provider, 'PROVIDER') = False)
    13271383    then AnErrMsg := TX_NO_PROVIDER;
     1384  if IsPFSSActive and Responses.PromptExists('VISITSTR') then
     1385    Responses.Update('VISITSTR', 1, Encounter.VisitStr, Encounter.VisitStr);
    13281386end;
    13291387
     
    14321490  if not AcceptOrderChecks then
    14331491  begin
     1492    if AskAnotherOrder(DialogIEN) then
     1493        InitDialog           // ClearDialogControls is in InitDialog
     1494      else
     1495        begin
     1496          ClearDialogControls;    // to allow form to close without prompting to save order
     1497          Close;
     1498        end;
    14341499    Result := False;
    14351500    Exit;
     
    14971562  CIDCOkToSave := False;
    14981563  alreadyClosed := False;
     1564  self.Responses.Cancel := False;
    14991565  if frmOrders <> nil then
    15001566  begin
     
    15891655begin
    15901656  inherited;
     1657  //self.Responses.Cancel := False;
    15911658  if User.NoOrdering then Exit;
    15921659  if FAbortOrder then exit;
     
    17261793end;
    17271794
     1795
    17281796end.
    17291797
Note: See TracChangeset for help on using the changeset viewer.