Changeset 460 for cprs/branches/foia-cprs/CPRS-Chart/Orders/fODBase.pas
- Timestamp:
- Jul 6, 2008, 8:20:14 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/branches/foia-cprs/CPRS-Chart/Orders/fODBase.pas
r459 r460 62 62 FLogTime: TFMDateTime; 63 63 FViewName: string; 64 FCancel: boolean; 65 FOrderContainsObjects: boolean; 64 66 function FindResponseByIEN(APromptIEN, AnInstance: Integer): TResponse; 65 67 function GetOrderText: string; … … 83 85 function GetIENForPrompt(const APromptID: string): Integer; 84 86 function FindResponseByName(const APromptID: string; AnInstance: Integer): TResponse; 87 function PromptExists(const APromptID: string):boolean; 85 88 function InstanceCount(const APromptID: string): Integer; 86 89 function IValueFor(const APromptID: string; AnInstance: Integer): string; … … 96 99 const AnIValue, AnEValue: string); 97 100 property Dialog: string read FDialog write SetDialog; 98 property DisplayGroup: Integer read FDisplayGroup ;101 property DisplayGroup: Integer read FDisplayGroup write FDisplayGroup; 99 102 property CopyOrder: string read FCopyOrder write SetCopyOrder; 100 103 property EditOrder: string read FEditOrder; // write SetEditOrder; … … 110 113 property VarTrailing: string read FVarTrailing write FVarTrailing; 111 114 property TheList: TList read FResponseList write FResponseList; 115 property Cancel: boolean read FCancel write FCancel; 116 property OrderContainsObjects: boolean read FOrderContainsObjects write FOrderContainsObjects; 112 117 end; 113 118 … … 241 246 uses fOCAccept, uODBase, rCore, rMisc, fODMessage, 242 247 fTemplateDialog, uEventHooks, uTemplates, rConsults,fOrders,uOrders, 243 fFrame, uTemplateFields ;248 fFrame, uTemplateFields, fClinicWardMeds; 244 249 245 250 const … … 583 588 procedure TResponses.SetCopyOrder(const AnID: string); 584 589 { sets responses to the values for an order that is created by copying } 590 var 591 HasObjects: boolean; 585 592 begin 586 593 if AnID = '' then … … 590 597 end; 591 598 Clear; 592 LoadResponses(FResponseList, AnID ); // Example AnID=C123456;1-3604599 LoadResponses(FResponseList, AnID, HasObjects); // Example AnID=C123456;1-3604 593 600 FCopyOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID)); 601 FOrderContainsObjects := HasObjects; 594 602 end; 595 603 596 604 procedure TResponses.SetEditOrder(const AnID: string); 597 605 { sets responses to the values for an order that is about to be edited } 606 var 607 HasObjects: boolean; 598 608 begin 599 609 Clear; 600 LoadResponses(FResponseList, AnID ); // Example AnID=X123456;1610 LoadResponses(FResponseList, AnID, HasObjects); // Example AnID=X123456;1 601 611 FEditOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID)); 612 FOrderContainsObjects := HasObjects; 602 613 end; 603 614 604 615 procedure TResponses.SetQuickOrder(AnIEN: Integer); 605 616 { sets responses to a quick order value - this is used by the QuickOrder property} 617 var 618 HasObjects: boolean; 606 619 begin 607 620 Clear; 608 LoadResponses(FResponseList, IntToStr(AnIEN) ); // Example AnIEN=134621 LoadResponses(FResponseList, IntToStr(AnIEN), HasObjects); // Example AnIEN=134 609 622 FQuickOrder := AnIEN; 623 FOrderContainsObjects := HasObjects; 610 624 end; 611 625 612 626 procedure TResponses.SetQuickOrderByID(const AnID: string); 613 627 { sets responses to a quick order value } 628 var 629 HasObjects: boolean; 614 630 begin 615 631 Clear; 616 LoadResponses(FResponseList, AnID ); // Example AnID=134-3645632 LoadResponses(FResponseList, AnID, HasObjects); // Example AnID=134-3645 617 633 FQuickOrder := StrToIntDef(Piece(AnID, '-', 1), 0); // 2nd '-' piece is $H seconds 634 FOrderContainsObjects := HasObjects; 618 635 end; 619 636 … … 671 688 break; 672 689 end; 690 end; 691 692 function TResponses.PromptExists(const APromptID: string): boolean; 693 var 694 i: Integer; 695 begin 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; 673 699 end; 674 700 … … 958 984 APtEvtPtr: string; 959 985 begin 986 //IMOLoc := 0; 960 987 NewPtEvtPtr := 0; 961 988 QOUDGroup := False; … … 984 1011 if IsIMODialog then 985 1012 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; 986 1038 IsEventDefaultOR := EventDefaultOD; 987 1039 if IsUDGroup or QOUDGroup then … … 1003 1055 APtEvtPtr := IntToStr(EventExist(Patient.DFN, FEventIFN)); 1004 1056 PTEventPtr := APtEvtPtr; 1057 //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc); 1005 1058 PutNewOrder(AnOrder, ConstructOrder, OrderSource); 1006 1059 if not SaveAsCurrent then … … 1012 1065 else 1013 1066 begin 1067 //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc); 1014 1068 PutNewOrder(AnOrder, ConstructOrder, OrderSource); 1015 1069 if not SaveAsCurrent then … … 1064 1118 AResponse: TResponse; 1065 1119 IEN: integer; 1120 HasObjects: boolean; 1066 1121 1067 1122 procedure AssignBPText(List: TStrings; const Value: string); … … 1080 1135 else IEN := 0; 1081 1136 end; 1137 ExpandOrderObjects(tmp, HasObjects); 1138 FOrderContainsObjects := FOrderContainsObjects or HasObjects; 1082 1139 if IEN <> 0 then 1083 1140 begin … … 1091 1148 else 1092 1149 CheckBoilerplate4Fields(tmp, cptn); 1093 1094 1150 List.Text := tmp; 1095 1151 end; … … 1326 1382 if (Encounter.Provider = 0) or (PersonHasKey(Encounter.Provider, 'PROVIDER') = False) 1327 1383 then AnErrMsg := TX_NO_PROVIDER; 1384 if IsPFSSActive and Responses.PromptExists('VISITSTR') then 1385 Responses.Update('VISITSTR', 1, Encounter.VisitStr, Encounter.VisitStr); 1328 1386 end; 1329 1387 … … 1432 1490 if not AcceptOrderChecks then 1433 1491 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; 1434 1499 Result := False; 1435 1500 Exit; … … 1497 1562 CIDCOkToSave := False; 1498 1563 alreadyClosed := False; 1564 self.Responses.Cancel := False; 1499 1565 if frmOrders <> nil then 1500 1566 begin … … 1589 1655 begin 1590 1656 inherited; 1657 //self.Responses.Cancel := False; 1591 1658 if User.NoOrdering then Exit; 1592 1659 if FAbortOrder then exit; … … 1726 1793 end; 1727 1794 1795 1728 1796 end. 1729 1797
Note:
See TracChangeset
for help on using the changeset viewer.