| [459] | 1 |  unit UBAGlobals;
 | 
|---|
 | 2 | 
 | 
|---|
 | 3 | {$OPTIMIZATION OFF}
 | 
|---|
 | 4 | 
 | 
|---|
 | 5 | {$define debug}
 | 
|---|
 | 6 | 
 | 
|---|
 | 7 | interface
 | 
|---|
 | 8 | 
 | 
|---|
 | 9 | uses
 | 
|---|
 | 10 |   Classes, ORNet, uConst, ORFn, Sysutils, Dialogs, Windows,Messages, rOrders;
 | 
|---|
 | 11 | 
 | 
|---|
 | 12 | type
 | 
|---|
 | 13 | 
 | 
|---|
 | 14 |  {Problem List Record Used To Add New DX From SignOrders Form }
 | 
|---|
 | 15 |  TBAPLRec = class(TObject)
 | 
|---|
 | 16 |   constructor Create(PLlist:TStringList);
 | 
|---|
 | 17 |    function BuildProblemListDxEntry(pDxCode:string):TStringList;
 | 
|---|
 | 18 |    function FMToDateTime(FMDateTime: string): TDateTime;
 | 
|---|
 | 19 | 
 | 
|---|
 | 20 |  end;
 | 
|---|
 | 21 | 
 | 
|---|
 | 22 |  {patient qualifiers}
 | 
|---|
 | 23 |  TBAPLPt=class(TObject)
 | 
|---|
 | 24 |    PtVAMC:string;
 | 
|---|
 | 25 |    PtDead:string;
 | 
|---|
 | 26 |    PtBid:string;
 | 
|---|
 | 27 |    PtServiceConnected:boolean;
 | 
|---|
 | 28 |    PtAgentOrange:boolean;
 | 
|---|
 | 29 |    PtRadiation:boolean;
 | 
|---|
 | 30 |    PtEnvironmental:boolean;
 | 
|---|
 | 31 |    PtHNC:boolean;
 | 
|---|
 | 32 |    PtMST:boolean;
 | 
|---|
 | 33 |    constructor Create(Alist:TStringList);
 | 
|---|
 | 34 |    function GetGMPDFN(dfn:string;name:String):string;
 | 
|---|
 | 35 |  public
 | 
|---|
 | 36 |    function rpcInitPt(const PatientDFN: string): TStrings ;
 | 
|---|
 | 37 |    procedure LoadPatientParams(AList:TstringList);
 | 
|---|
 | 38 | 
 | 
|---|
 | 39 |  end;
 | 
|---|
 | 40 | 
 | 
|---|
 | 41 |   TBAGlobals = class(TObject)
 | 
|---|
 | 42 |   private
 | 
|---|
 | 43 |      FOrderNum: string;
 | 
|---|
 | 44 |     protected
 | 
|---|
 | 45 |   public
 | 
|---|
 | 46 |      constructor Create;
 | 
|---|
 | 47 |   published
 | 
|---|
 | 48 |      property  OrderNum: string read FOrderNum write FOrderNum;
 | 
|---|
 | 49 |      procedure AddBAPCEDiag(DiagStr:string);
 | 
|---|
 | 50 |      procedure ClearBAPCEDiagList;
 | 
|---|
 | 51 |   end;
 | 
|---|
 | 52 | 
 | 
|---|
 | 53 |  TBADxRecord = class(TObject)
 | 
|---|
 | 54 |      FExistingRecordID: string;
 | 
|---|
 | 55 |      FOrderID: string;
 | 
|---|
 | 56 |      FBADxCode: string; //Primary Dx
 | 
|---|
 | 57 |      FBASecDx1: string; //Secondary Dx 1
 | 
|---|
 | 58 |      FBASecDx2: string; //Secondary Dx 2
 | 
|---|
 | 59 |      FBASecDx3: string; //Secondary Dx 3
 | 
|---|
 | 60 |      FDxDescCode: string;
 | 
|---|
 | 61 |      FDxDesc1: string;
 | 
|---|
 | 62 |      FDxDesc2: string;
 | 
|---|
 | 63 |      FDxDesc3: string;
 | 
|---|
 | 64 |      FTreatmentFactors: string;
 | 
|---|
 | 65 |  end;
 | 
|---|
 | 66 | 
 | 
|---|
 | 67 |  TBACopiedOrderFlags = class
 | 
|---|
 | 68 |      OrderID: string;
 | 
|---|
 | 69 | end;
 | 
|---|
 | 70 | 
 | 
|---|
 | 71 |  TBATreatmentFactorsInRec = class(TObject)
 | 
|---|
 | 72 |      FBAOrderID:   string;
 | 
|---|
 | 73 |      FBAEligible:  string;
 | 
|---|
 | 74 |      FBATFactors:  string;
 | 
|---|
 | 75 |  end;
 | 
|---|
 | 76 | 
 | 
|---|
 | 77 |  TBAUnsignedBillingRec = class(TObject)
 | 
|---|
 | 78 |      FBAOrderID:  string;
 | 
|---|
 | 79 |      FBASTSFlags: string;
 | 
|---|
 | 80 |      FBADxCode:   string;
 | 
|---|
 | 81 |      FBASecDx1:   string;
 | 
|---|
 | 82 |      FBASecDx2:   string;
 | 
|---|
 | 83 |      FBASecDx3:   string;
 | 
|---|
 | 84 |  end;
 | 
|---|
 | 85 | 
 | 
|---|
 | 86 |  TBAConsultOrderRec = class(TObject)
 | 
|---|
 | 87 |     FBAOrderID:  string;
 | 
|---|
 | 88 |     FBADxCode:   string;
 | 
|---|
 | 89 |     FBASecDx1:   string;
 | 
|---|
 | 90 |     FBASecDx2:   string;
 | 
|---|
 | 91 |     FBASecDx3:   string;
 | 
|---|
 | 92 |     FBATreatmentFactors: string;
 | 
|---|
 | 93 |  end;
 | 
|---|
 | 94 | 
 | 
|---|
 | 95 |  TBAClearedBillingRec = class(TObject)
 | 
|---|
 | 96 |      FBAOrderID:  string;
 | 
|---|
 | 97 |      FBASTSFlags: string;
 | 
|---|
 | 98 |      FBADxCode:   string;
 | 
|---|
 | 99 |      FBASecDx1:   string;
 | 
|---|
 | 100 |      FBASecDx2:   string;
 | 
|---|
 | 101 |      FBASecDx3:   string;
 | 
|---|
 | 102 |  end;
 | 
|---|
 | 103 | 
 | 
|---|
 | 104 |   TBAFactorsRec = class(TObject)
 | 
|---|
 | 105 |      FBAFactorActive    : boolean;
 | 
|---|
 | 106 |      FBAFactorSC        : string;
 | 
|---|
 | 107 |      FBAFactorMST       : string;
 | 
|---|
 | 108 |      FBAFactorAO        : string;
 | 
|---|
 | 109 |      FBAFactorIR        : string;
 | 
|---|
 | 110 |      FBAFactorEC        : string;
 | 
|---|
 | 111 |      FBAFactorHNC       : string;
 | 
|---|
 | 112 |      FBAFactorCV        : string;
 | 
|---|
 | 113 |   end;
 | 
|---|
 | 114 | 
 | 
|---|
 | 115 |   TBAPLFactorsIN = class(TOBject)
 | 
|---|
 | 116 |       FPatientID         : string; // UProblems.piece 1
 | 
|---|
 | 117 |       FBADxText          : string; // UProblems.piece 2
 | 
|---|
 | 118 |       FBADxCode          : string; // UProblems.piece 3
 | 
|---|
 | 119 |       FBASC              : string; // UProblems.piece 5
 | 
|---|
 | 120 |       FBASC_YN           : string; // UProblems.piece 6
 | 
|---|
 | 121 |       FBATreatFactors    : string; //(......)
 | 
|---|
 | 122 |   end;
 | 
|---|
 | 123 | 
 | 
|---|
 | 124 |   TBACBStsFlagsIN = class(TOBject) // Y/N/U
 | 
|---|
 | 125 |      CB_Sts_Flags       :string;
 | 
|---|
 | 126 |   //   CB_SC              :string;
 | 
|---|
 | 127 |      CB_AO              :string;
 | 
|---|
 | 128 |      CB_IR              :string;
 | 
|---|
 | 129 |      CB_EC              :string;
 | 
|---|
 | 130 |      CB_MST             :string;
 | 
|---|
 | 131 |      CB_HNC             :string;
 | 
|---|
 | 132 |      CB_CV              :string;
 | 
|---|
 | 133 |   end;
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 | procedure PutBADxListForOrder(var thisRecord: TBADxRecord; thisOrderID: string); //BAPHII 1.3.1
 | 
|---|
 | 136 | procedure CopyDxRecord(sourceOrderID: string; targetOrderID: string); //BAPHII 1.3.1
 | 
|---|
 | 137 | function  GetPrimaryDx(thisOrderID: string) : string; //BAPHII 1.3.1
 | 
|---|
 | 138 | function  tempDxNodeExists(thisOrderID: string) : boolean;
 | 
|---|
 | 139 | function  GetDxNodeIndex(thisOrderID: string) : smallint;
 | 
|---|
 | 140 | function  DiagnosesMatch(var List1: TStringList; var List2: TStringList) : boolean;
 | 
|---|
 | 141 | function  CountSelectedOrders(const Caller: smallint) : smallint;
 | 
|---|
 | 142 | function  CompareOrderDx(const Caller: smallint) : boolean;
 | 
|---|
 | 143 | procedure GetBADxListForOrder(var thisRetVal: TBADxRecord; thisOrderID: string);
 | 
|---|
 | 144 | procedure DestroyDxList;
 | 
|---|
 | 145 | procedure SetBADxList;
 | 
|---|
 | 146 | procedure SimpleAddTempDxList(thisOrderID: string);
 | 
|---|
 | 147 | procedure SetBADxListForOrder(thisRec: TBADxRecord; thisOrderID: string);
 | 
|---|
 | 148 | function  AllSelectedDxBlank(const Caller: smallint) : boolean;
 | 
|---|
 | 149 | function  SecondaryDxFull(thisOrderID: string) : boolean;
 | 
|---|
 | 150 | procedure AddSecondaryDx(thisOrderID: string; thisDxCode: string);
 | 
|---|
 | 151 | procedure InitializeNewDxRec(var thisDxRec:  TBADxRecord);
 | 
|---|
 | 152 | procedure InitializeConsultOrderRec(var thisDxRec: TBAConsultOrderRec);
 | 
|---|
 | 153 | procedure InitializeUnsignedOrderRec(var thisUnsignedRec: TBAUnsignedBillingRec);
 | 
|---|
 | 154 | procedure InitializeTFactorsInRec(var thisTFactorsRecIn: TBATreatmentFactorsInRec);
 | 
|---|
 | 155 | procedure BACopyOrder(sourceOrderList: TStringList);  //BAPHII 1.3.2
 | 
|---|
 | 156 | procedure CopyTreatmentFactorsDxsToCopiedOrder(pSourceOrderID:string; pTargetOrderID:string); //BAPHII 1.3.2
 | 
|---|
 | 157 | procedure CopyTreatmentFactorsDxsToRenewedOrder; //BAPHII 1.3.2
 | 
|---|
 | 158 | function GetTFCIForOrder(thisIndex: integer) : string; //BAPHII 1.3.2
 | 
|---|
 | 159 | procedure CopyTFCIToTargetOrder(thisTargetOrderID: string; thisCheckBoxStatus: string);
 | 
|---|
 | 160 | 
 | 
|---|
 | 161 | procedure ResetOrderID(fromID: string; toID: string);
 | 
|---|
 | 162 | procedure RemoveOrderFromDxList(thisOrderID: string);
 | 
|---|
 | 163 | function IsUserNurseProvider(pUserID: int64): boolean;
 | 
|---|
 | 164 | function GetPatientTFactors(pOrderList:TStringList): String;
 | 
|---|
 | 165 | 
 | 
|---|
 | 166 | var
 | 
|---|
 | 167 |   BAGlobals         : TBAGlobals;
 | 
|---|
 | 168 |   BAPLPt            : TBAPLPt;
 | 
|---|
 | 169 |   BAPLRec           : TBAPLRec;
 | 
|---|
 | 170 |   PLlist            : TStringList;
 | 
|---|
 | 171 |   BADiagnosisList   : TStringList;
 | 
|---|
 | 172 |   BALocation        : integer;
 | 
|---|
 | 173 |   BAPCEDiagList     : TStringList;
 | 
|---|
 | 174 |   BAOrderIDList    : TStringList;
 | 
|---|
 | 175 |   tempDxList        : TList;
 | 
|---|
 | 176 |   globalDxRec       : TBADxRecord;
 | 
|---|
 | 177 |   UnsignedBillingRec   : TBAUnsignedBillingRec;
 | 
|---|
 | 178 |   ClearedBillingRec    : TBAClearedBillingRec;
 | 
|---|
 | 179 |   ConsultOrderRec      : TBAConsultOrderRec;
 | 
|---|
 | 180 |   BAFactorsInRec        : TBATreatmentFactorsInRec;
 | 
|---|
 | 181 |   BAFactorsRec      : TBAFactorsRec;
 | 
|---|
 | 182 |   BAOrderList       : TStringList;
 | 
|---|
 | 183 |   UpdatedBAOrderList: TStringList;
 | 
|---|
 | 184 |   ChangeItemOrderNum: string;
 | 
|---|
 | 185 |   i                 : integer;
 | 
|---|
 | 186 |   OrderIDList       : TStringList;
 | 
|---|
 | 187 |   OrderBillableList : TStrings;
 | 
|---|
 | 188 |   BAOrderID         : string;
 | 
|---|
 | 189 |   BILLING_AWARE     : boolean;
 | 
|---|
 | 190 | 
 | 
|---|
 | 191 |   BAtmpOrderList    : TStringList;
 | 
|---|
 | 192 |   BAFlagsIN         : string;
 | 
|---|
 | 193 |   BAFlagsOUT        : TStringList;
 | 
|---|
 | 194 | 
 | 
|---|
 | 195 |   SourceOrderID     : string; //BAPHII 1.3.2
 | 
|---|
 | 196 |   TargetOrderID     : string; //BAPHII 1.3.2
 | 
|---|
 | 197 |   BACopiedOrderFlags: TStringList; //BAPHII 1.3.2
 | 
|---|
 | 198 |   BANurseConsultOrders: TStringList;
 | 
|---|
 | 199 | 
 | 
|---|
 | 200 |  // Used to display Dx's on fordersSign and fReview grids
 | 
|---|
 | 201 |   Dx1               : string;
 | 
|---|
 | 202 |   Dx2               : string;
 | 
|---|
 | 203 |   Dx3               : string;
 | 
|---|
 | 204 |   Dx4               : string;
 | 
|---|
 | 205 |   TFactors          : string;
 | 
|---|
 | 206 |   SC,AO,IR          : string;
 | 
|---|
 | 207 |   MST,HNC,CV,EC     : string;
 | 
|---|
 | 208 |   PLFactorsIndexes  : TStringList;
 | 
|---|
 | 209 |   BAHoldPrimaryDx   : string;     //  used to verify primart dx has been changed.
 | 
|---|
 | 210 |   BAPrimaryDxChanged: boolean;
 | 
|---|
 | 211 | //  OrdersReqDxLst    : TStringList;  // List of selected Orders flagged collect DX Y/N
 | 
|---|
 | 212 |   NonBillableOrderList : TStringList;  // contains reference to those selected orders that are non billable
 | 
|---|
 | 213 |   OrderListSCEI    : TSTringList;  //   OrderID Exists SCEI are required.
 | 
|---|
 | 214 |   UnsignedOrders   : TStringList;  //    List of Orders from fReview when "don't sign" action
 | 
|---|
 | 215 |   BAUnSignedOrders  : TStringList;  // OrderID^StsFlags  ie., 12345^NNNNNNN
 | 
|---|
 | 216 |   BATFHints        : TStringList;
 | 
|---|
 | 217 |   BASelectedList   : TStringList;  //  contains list of orders selected for signature.
 | 
|---|
 | 218 |   BAConsultDxList: TStringList; //  contains dx^code^DxRequired(consults Only) selected for consults.
 | 
|---|
 | 219 |   BAConsultPLFlags: TStringList;  // orderid^flags contains TF's if dx is selected from Problem list and Problem had TF associated.
 | 
|---|
 | 220 |   BAFWarningShown: boolean;       // flag used to determine if Inactive ICD Code has been shown.
 | 
|---|
 | 221 |   BAPersonalDX:  boolean;
 | 
|---|
 | 222 | //  BAConsultOrdersRequireDx: TStringList; //orderid  -  if orderid exists - consult order that requires dx...
 | 
|---|
 | 223 |   BADeltedOrders: TStringList;
 | 
|---|
 | 224 | 
 | 
|---|
 | 225 | implementation
 | 
|---|
 | 226 | 
 | 
|---|
 | 227 | uses fBALocalDiagnoses, fOrdersSign, fReview, uCore, rCore, rPCE,uPCE, UBAConst, UBAMessages, UBACore;
 | 
|---|
 | 228 | 
 | 
|---|
 | 229 | procedure RemoveOrderFromDxList(thisOrderID: string);
 | 
|---|
 | 230 | {
 | 
|---|
 | 231 |   This routine written for CQ4589.  Called from fOrdersDC.ExecuteDCOrders().
 | 
|---|
 | 232 | }
 | 
|---|
 | 233 | var
 | 
|---|
 | 234 |   i: integer;
 | 
|---|
 | 235 | begin
 | 
|---|
 | 236 |    if tempDxList.Count > 0 then
 | 
|---|
 | 237 |       for i := 0 to tempDxList.Count-1 do
 | 
|---|
 | 238 |         if tempDxNodeExists(thisOrderID) then
 | 
|---|
 | 239 |            if ((TBADxRecord(tempDxList[i]).FOrderID = thisOrderID) and (tempDxList[i] <> nil)) then
 | 
|---|
 | 240 |               begin
 | 
|---|
 | 241 |               //tempDxList.Items[i] := nil; //remove reference to this item, effectively deleting it from the list (see Delphi help)
 | 
|---|
 | 242 |               BACopiedOrderFlags.Clear;
 | 
|---|
 | 243 |               UBAGlobals.SourceOrderID := '';
 | 
|---|
 | 244 |               UBAGlobals.TargetOrderID := '';
 | 
|---|
 | 245 |               tempDxList.Delete(i); //remove this item from the CIDC Dx list
 | 
|---|
 | 246 |               end;
 | 
|---|
 | 247 | end;
 | 
|---|
 | 248 | 
 | 
|---|
 | 249 | procedure ResetOrderID(fromID: string; toID: string);
 | 
|---|
 | 250 | var
 | 
|---|
 | 251 |   i: integer;
 | 
|---|
 | 252 | begin
 | 
|---|
 | 253 |    for i := 0 to tempDxList.Count-1 do
 | 
|---|
 | 254 |    begin
 | 
|---|
 | 255 |      if TBADxRecord(tempDxList[i]).FOrderID = fromID then
 | 
|---|
 | 256 |         TBADxRecord(tempDxList[i]).FOrderID := toID;
 | 
|---|
 | 257 |      end;
 | 
|---|
 | 258 | end;
 | 
|---|
 | 259 | 
 | 
|---|
 | 260 | function GetTFCIForOrder(thisIndex: integer) : string;
 | 
|---|
 | 261 | {
 | 
|---|
 | 262 |  Retrieve BA flags for 'thisOrderID', and convert them to CPRS type uSignItems.StsChar array.
 | 
|---|
 | 263 | }
 | 
|---|
 | 264 | begin
 | 
|---|
 | 265 |   Result := BACopiedOrderFlags[thisIndex];
 | 
|---|
 | 266 | end;
 | 
|---|
 | 267 | 
 | 
|---|
 | 268 | procedure CopyTFCIToTargetOrder(thisTargetOrderID: string; thisCheckBoxStatus: string);
 | 
|---|
 | 269 | var
 | 
|---|
 | 270 |   i: integer;
 | 
|---|
 | 271 | begin
 | 
|---|
 | 272 |   for i := 0 to tempDxList.Count - 1 do
 | 
|---|
 | 273 |      if TBADxRecord(tempDxList[i]).FOrderID = thisTargetOrderID then
 | 
|---|
 | 274 |         TBADxRecord(tempDxList[i]).FTreatmentFactors := thisCheckBoxStatus;
 | 
|---|
 | 275 | end;
 | 
|---|
 | 276 | 
 | 
|---|
 | 277 | procedure BACopyOrder(sourceOrderList: TStringList);
 | 
|---|
 | 278 | { BAPHII 1.3.2
 | 
|---|
 | 279 |  Copy source order to target order, including Dx's, Dx descriptions, Treatment Factors and Clinical Indicators
 | 
|---|
 | 280 | }
 | 
|---|
 | 281 | var
 | 
|---|
 | 282 |   newList,rList: TStringList;
 | 
|---|
 | 283 |   i: integer;
 | 
|---|
 | 284 |   x: string;
 | 
|---|
 | 285 | 
 | 
|---|
 | 286 | begin
 | 
|---|
 | 287 |    newList := TStringList.Create;
 | 
|---|
 | 288 |    rList := TSTRingList.Create;
 | 
|---|
 | 289 |    newList.Clear;
 | 
|---|
 | 290 |    rList.Clear;
 | 
|---|
 | 291 | 
 | 
|---|
 | 292 |    CopyDxRecord(UBAGlobals.SourceOrderID, UBAGlobals.TargetOrderID); //copy dx's to tempDxList record
 | 
|---|
 | 293 |    newList.Add(UBAGlobals.SourceOrderID);
 | 
|---|
 | 294 |    rList := rpcGetUnsignedOrdersBillingData(newList);
 | 
|---|
 | 295 | 
 | 
|---|
 | 296 |    if RList.Count > 0 then
 | 
|---|
 | 297 |    begin
 | 
|---|
 | 298 |       for i := 0 to rList.Count-1 do
 | 
|---|
 | 299 |       begin
 | 
|---|
 | 300 |          x := rList.Strings[i];
 | 
|---|
 | 301 |          BACopiedOrderFlags.Add(TargetOrderID + '^' + Piece(x,U,2) );
 | 
|---|
 | 302 |       end;
 | 
|---|
 | 303 |     end
 | 
|---|
 | 304 |     else
 | 
|---|
 | 305 |       begin
 | 
|---|
 | 306 |         BACopiedOrderFlags.Add(TargetOrderID + '^' + frmSignOrders.GetCheckBoxStatus(sourceOrderID) );
 | 
|---|
 | 307 |       end;
 | 
|---|
 | 308 | end;
 | 
|---|
 | 309 | 
 | 
|---|
 | 310 | procedure CopyTreatmentFactorsDxsToCopiedOrder(pSourceOrderID:string; pTargetOrderID:string);
 | 
|---|
 | 311 | {
 | 
|---|
 | 312 |  BAPHII 1.3.2
 | 
|---|
 | 313 | }
 | 
|---|
 | 314 | var
 | 
|---|
 | 315 |    sourceOrderList: TStringList;
 | 
|---|
 | 316 |    sourceOrderID: TStringList;
 | 
|---|
 | 317 |    targetOrderIDLst: TStringList;
 | 
|---|
 | 318 | begin
 | 
|---|
 | 319 |      //Retrieve TF's/CI's from SOURCE Order
 | 
|---|
 | 320 |         sourceOrderList := TStringList.Create;
 | 
|---|
 | 321 |         targetOrderIDLst := TStringList.Create;
 | 
|---|
 | 322 |         sourceOrderList.Clear;
 | 
|---|
 | 323 |         targetOrderIDLst.Clear;
 | 
|---|
 | 324 |         sourceOrderID := TStringList.Create;
 | 
|---|
 | 325 |         sourceOrderID.Clear;
 | 
|---|
 | 326 |         sourceOrderID.Add(Piece(pSourceOrderID, ';', 1));
 | 
|---|
 | 327 |         targetOrderIDLst.Add(pTargetOrderID);
 | 
|---|
 | 328 |      { if targetORderID is not billable do not create entry in BADXRecord - List  fix HDS00003130}
 | 
|---|
 | 329 |         rpcNonBillableOrders(targetOrderIDLst);
 | 
|---|
 | 330 |         if IsOrderBillable(pTargetOrderID) then
 | 
|---|
 | 331 |         begin
 | 
|---|
 | 332 |            tCallV(sourceOrderList, 'ORWDBA4 GETTFCI', [sourceOrderID]);
 | 
|---|
 | 333 |            BACopyOrder(sourceOrderList);
 | 
|---|
 | 334 |         end;
 | 
|---|
 | 335 | end;
 | 
|---|
 | 336 | 
 | 
|---|
 | 337 | procedure CopyTreatmentFactorsDxsToRenewedOrder;
 | 
|---|
 | 338 | {
 | 
|---|
 | 339 |  BAPHII 1.3.2
 | 
|---|
 | 340 | }
 | 
|---|
 | 341 | var
 | 
|---|
 | 342 |    sourceOrderList: TStringList;
 | 
|---|
 | 343 |    sourceOrderID: TStringList;
 | 
|---|
 | 344 |    targetOrderList: TStringList;
 | 
|---|
 | 345 | begin
 | 
|---|
 | 346 |      //Retrieve TF's/CI's from SOURCE Order
 | 
|---|
 | 347 |       sourceOrderList := TStringList.Create;
 | 
|---|
 | 348 |       sourceOrderList.Clear;
 | 
|---|
 | 349 |       sourceOrderID := TStringList.Create;
 | 
|---|
 | 350 |       sourceOrderID.Clear;
 | 
|---|
 | 351 |       targetOrderList := TStringList.Create;
 | 
|---|
 | 352 |       targetOrderList.Clear;
 | 
|---|
 | 353 |       sourceOrderID.Add(Piece(UBAGlobals.sourceOrderID, ';', 1));
 | 
|---|
 | 354 |       { if targetORderID is not billable do not create entry in BADXRecord - List fix HDS00003130}
 | 
|---|
 | 355 |       rpcNonBillableOrders(targetOrderList);
 | 
|---|
 | 356 |       if IsOrderBillable(UBAGLobals.TargetOrderID) then
 | 
|---|
 | 357 |       begin
 | 
|---|
 | 358 |          tCallV(sourceOrderList, 'ORWDBA4 GETTFCI', [sourceOrderID]);
 | 
|---|
 | 359 |          BACopyOrder(sourceOrderList); //BAPHII 1.3.2
 | 
|---|
 | 360 |       end;
 | 
|---|
 | 361 | end;
 | 
|---|
 | 362 | 
 | 
|---|
 | 363 | procedure PutBADxListForOrder(var thisRecord: TBADxRecord; thisOrderID: string);
 | 
|---|
 | 364 | {                              //existingRecord        //targetOrderID  }
 | 
|---|
 | 365 | var
 | 
|---|
 | 366 |   i: integer;
 | 
|---|
 | 367 |   thisRec: TBADxRecord;
 | 
|---|
 | 368 | begin
 | 
|---|
 | 369 |    if UBAGlobals.tempDxNodeExists(thisOrderID) then
 | 
|---|
 | 370 |      begin
 | 
|---|
 | 371 |      if Assigned(tempDxList) then
 | 
|---|
 | 372 | 
 | 
|---|
 | 373 |      try
 | 
|---|
 | 374 |         for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 375 |           begin
 | 
|---|
 | 376 |            thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 377 | 
 | 
|---|
 | 378 |            if Assigned(thisRec) then
 | 
|---|
 | 379 |              if (thisRec.FOrderID = thisOrderID) then
 | 
|---|
 | 380 |                 begin
 | 
|---|
 | 381 |                    thisRec.FBADxCode := thisRecord.FBADxCode;
 | 
|---|
 | 382 |                    thisRec.FBASecDx1 := thisRecord.FBASecDx1;
 | 
|---|
 | 383 |                    thisRec.FBASecDx2 := thisRecord.FBASecDx2;
 | 
|---|
 | 384 |                    thisRec.FBASecDx3 := thisRecord.FBASecDx3;
 | 
|---|
 | 385 |                    thisRec.FTreatmentFactors := thisRecord.FTreatmentFactors;
 | 
|---|
 | 386 |                 end;
 | 
|---|
 | 387 |            end;
 | 
|---|
 | 388 | 
 | 
|---|
 | 389 |      except
 | 
|---|
 | 390 |         on EListError do
 | 
|---|
 | 391 |            begin
 | 
|---|
 | 392 |            {$ifdef debug}ShowMessage('EListError in UBAGlobals.PutBADxListForOrder()');{$endif}
 | 
|---|
 | 393 |            raise;
 | 
|---|
 | 394 |            end;
 | 
|---|
 | 395 |      end;
 | 
|---|
 | 396 |      end;
 | 
|---|
 | 397 | end;
 | 
|---|
 | 398 | 
 | 
|---|
 | 399 | procedure CopyDxRecord(sourceOrderID: string; targetOrderID: string);
 | 
|---|
 | 400 |  {
 | 
|---|
 | 401 |      BAPHII 1.3.1
 | 
|---|
 | 402 |      Copy contents of one TBADxRecord to another.
 | 
|---|
 | 403 |      If target record does NOT exist, then add it to the Dx list.
 | 
|---|
 | 404 |      If target record DOES exist, then change its contents to those of source record.
 | 
|---|
 | 405 |  }
 | 
|---|
 | 406 |    var
 | 
|---|
 | 407 |   thisRecord: TBADxRecord;
 | 
|---|
 | 408 |   thatRecord: TBADxRecord;
 | 
|---|
 | 409 |   billingInfo: TstringList;
 | 
|---|
 | 410 |   orderList:  TStringList;
 | 
|---|
 | 411 | begin
 | 
|---|
 | 412 |    thisRecord := TBADxRecord.Create;
 | 
|---|
 | 413 |    thatRecord := TBADxRecord.Create;
 | 
|---|
 | 414 |    billingInfo := TStringList.Create;
 | 
|---|
 | 415 |    orderList   := TStringList.Create;
 | 
|---|
 | 416 |    if Assigned(billingInfo) then billingInfo.Clear;
 | 
|---|
 | 417 |    if Assigned(orderList) then orderList.Clear;
 | 
|---|
 | 418 | 
 | 
|---|
 | 419 |    if tempDxNodeExists(sourceOrderID) then
 | 
|---|
 | 420 |      GetBADxListForOrder(thisRecord, sourceOrderID); //load data from source
 | 
|---|
 | 421 | 
 | 
|---|
 | 422 |     if not tempDxNodeExists(targetOrderID) then
 | 
|---|
 | 423 |     begin
 | 
|---|
 | 424 |        SimpleAddTempDxList(targetOrderID);
 | 
|---|
 | 425 |        orderList.Add(sourceOrderID);
 | 
|---|
 | 426 |        billingInfo := rpcRetrieveSelectedOrderInfo(orderList);
 | 
|---|
 | 427 |        if billingInfo.Count > 0 then
 | 
|---|
 | 428 |        begin
 | 
|---|
 | 429 |            thisRecord.FBADxCode := Piece(billingInfo.Strings[0],U,4) + U +
 | 
|---|
 | 430 |                                    Piece(billingInfo.Strings[0],U,3);
 | 
|---|
 | 431 |            thisRecord.FBASecDx1 := Piece(billingInfo.Strings[0],U,6) + U +
 | 
|---|
 | 432 |                                    Piece(billingInfo.Strings[0],U,5);
 | 
|---|
 | 433 |            thisRecord.FBASecDx2 := Piece(billingInfo.Strings[0],U,8) + U +
 | 
|---|
 | 434 |                                    Piece(billingInfo.Strings[0],U,7);
 | 
|---|
 | 435 |            thisRecord.FBASecDx3 := Piece(billingInfo.Strings[0],U,10) + U +
 | 
|---|
 | 436 |                                    Piece(billingInfo.Strings[0],U,9);
 | 
|---|
 | 437 |            if thisRecord.FBADxCode = CARET then thisRecord.FBADxCode := DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 438 |            if thisRecord.FBASecDx1 = CARET then thisRecord.FBASecDx1 := DXREC_INIT_FIELD_VAL ;
 | 
|---|
 | 439 |            if thisRecord.FBASecDx2 = CARET then thisRecord.FBASecDx2 := DXREC_INIT_FIELD_VAL ;
 | 
|---|
 | 440 |            if thisRecord.FBASecDx3 = CARET then thisRecord.FBASecDx3 := DXREC_INIT_FIELD_VAL ;
 | 
|---|
 | 441 | 
 | 
|---|
 | 442 |        end
 | 
|---|
 | 443 |        else
 | 
|---|
 | 444 |            PutBADxListForOrder(thisRecord, targetOrderID);
 | 
|---|
 | 445 |       //copy source data to temporary record
 | 
|---|
 | 446 |        with thatRecord do
 | 
|---|
 | 447 |          begin
 | 
|---|
 | 448 |             FOrderID :=  targetOrderID;
 | 
|---|
 | 449 |             FBADxCode := thisRecord.FBADxCode;
 | 
|---|
 | 450 |             FBASecDx1 := thisRecord.FBASecDx1;
 | 
|---|
 | 451 |             FBASecDx2 := thisRecord.FBASecDx2;
 | 
|---|
 | 452 |             FBASecDx3 := thisRecord.FBASecDx3;
 | 
|---|
 | 453 |             PutBADxListForOrder(thatRecord, targetOrderID);
 | 
|---|
 | 454 |          end;
 | 
|---|
 | 455 |     end;
 | 
|---|
 | 456 | end;
 | 
|---|
 | 457 | 
 | 
|---|
 | 458 | 
 | 
|---|
 | 459 | function GetPrimaryDx(thisOrderID: string) : string;
 | 
|---|
 | 460 | {
 | 
|---|
 | 461 | BAPHII 1.3.1
 | 
|---|
 | 462 | }
 | 
|---|
 | 463 | var
 | 
|---|
 | 464 |   retVal: TBADxRecord;
 | 
|---|
 | 465 | begin
 | 
|---|
 | 466 |   retVal := TBADxRecord.Create;
 | 
|---|
 | 467 |   GetBADxListForOrder(retVal, thisOrderID);
 | 
|---|
 | 468 |   Result := retVal.FBADxCode;
 | 
|---|
 | 469 | end;
 | 
|---|
 | 470 | 
 | 
|---|
 | 471 | function AllSelectedDxBlank(const Caller: smallint) : boolean;
 | 
|---|
 | 472 | var
 | 
|---|
 | 473 |   i: smallint;
 | 
|---|
 | 474 |   selectedOrderID: string;
 | 
|---|
 | 475 | begin
 | 
|---|
 | 476 |   Result := true;
 | 
|---|
 | 477 | 
 | 
|---|
 | 478 |   case Caller of
 | 
|---|
 | 479 |      F_ORDERS_SIGN: begin
 | 
|---|
 | 480 |                        try
 | 
|---|
 | 481 |                           for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
 | 
|---|
 | 482 |                               if (frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 483 |                                  begin
 | 
|---|
 | 484 |                                  selectedOrderID :=  TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 485 |                                  if (tempDxNodeExists(selectedOrderID)) then
 | 
|---|
 | 486 |                                       Result := false;
 | 
|---|
 | 487 |                                  end;
 | 
|---|
 | 488 |                        except
 | 
|---|
 | 489 |                            on EListError do
 | 
|---|
 | 490 |                              begin
 | 
|---|
 | 491 |                               {$ifdef debug}ShowMessage('EListError in UBAGlobals.AllSelectedDxBlank() - F_ORDERS_SIGN');{$endif}
 | 
|---|
 | 492 |                               raise;
 | 
|---|
 | 493 |                              end;
 | 
|---|
 | 494 |                        end;
 | 
|---|
 | 495 |                     end;
 | 
|---|
 | 496 |      F_REVIEW:      begin
 | 
|---|
 | 497 |                        try
 | 
|---|
 | 498 |                           for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
 | 
|---|
 | 499 |                               if (fReview.frmReview.lstReview.Selected[i]) then
 | 
|---|
 | 500 |                                  begin
 | 
|---|
 | 501 |                                  selectedOrderID :=  TOrder(fReview.frmReview.lstReview.Items.Objects[i]).ID;
 | 
|---|
 | 502 |                                  if tempDxNodeExists(selectedOrderID) then
 | 
|---|
 | 503 |                                       Result := false;
 | 
|---|
 | 504 |                                  end;
 | 
|---|
 | 505 |                        except
 | 
|---|
 | 506 |                            on EListError do
 | 
|---|
 | 507 |                              begin
 | 
|---|
 | 508 |                               {$ifdef debug}ShowMessage('EListError in UBAGlobals.AllSelectedDxBlank() - F_REVIEW');{$endif}
 | 
|---|
 | 509 |                               raise;
 | 
|---|
 | 510 |                              end;
 | 
|---|
 | 511 |                        end;
 | 
|---|
 | 512 |                     end;
 | 
|---|
 | 513 |   end; //case
 | 
|---|
 | 514 | end;
 | 
|---|
 | 515 | 
 | 
|---|
 | 516 | function GetDxNodeIndex(thisOrderID: string) : smallint;
 | 
|---|
 | 517 | var
 | 
|---|
 | 518 |   i: integer;
 | 
|---|
 | 519 |   thisRec: TBADxRecord;
 | 
|---|
 | 520 | begin
 | 
|---|
 | 521 |   Result := 0;
 | 
|---|
 | 522 | 
 | 
|---|
 | 523 |    if Assigned(tempDxList) then
 | 
|---|
 | 524 | 
 | 
|---|
 | 525 |    try
 | 
|---|
 | 526 |         for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 527 |            begin
 | 
|---|
 | 528 |             thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 529 |             if Assigned(thisRec) then
 | 
|---|
 | 530 |               if (thisRec.FOrderID = thisOrderID) then
 | 
|---|
 | 531 |                  Result := i;
 | 
|---|
 | 532 |             end;
 | 
|---|
 | 533 |   except
 | 
|---|
 | 534 |       on EListError do
 | 
|---|
 | 535 |         begin
 | 
|---|
 | 536 |          {$ifdef debug}ShowMessage('EListError in UBAGlobals.GetDxNodeIndex()');{$endif}
 | 
|---|
 | 537 |          raise;
 | 
|---|
 | 538 |         end;
 | 
|---|
 | 539 |   end;
 | 
|---|
 | 540 | end;
 | 
|---|
 | 541 | 
 | 
|---|
 | 542 | function DiagnosesMatch(var List1: TStringList; var List2: TStringList) : boolean;
 | 
|---|
 | 543 | var
 | 
|---|
 | 544 |   i: smallint;
 | 
|---|
 | 545 | begin
 | 
|---|
 | 546 |   Result := false;
 | 
|---|
 | 547 | 
 | 
|---|
 | 548 |   // If the number of Dx's in the lists differs, then bail
 | 
|---|
 | 549 |   if (List1.Count <> List2.Count) then
 | 
|---|
 | 550 |      begin
 | 
|---|
 | 551 |      Result := false;
 | 
|---|
 | 552 |      Exit;
 | 
|---|
 | 553 |      end;
 | 
|---|
 | 554 | 
 | 
|---|
 | 555 |   List1.Sort;
 | 
|---|
 | 556 |   List2.Sort;
 | 
|---|
 | 557 | 
 | 
|---|
 | 558 |   try
 | 
|---|
 | 559 |      for i := 0 to (List1.Count - 1) do
 | 
|---|
 | 560 |         if (List1.Strings[i] <> List2.Strings[i]) then
 | 
|---|
 | 561 |            Result := false
 | 
|---|
 | 562 |         else
 | 
|---|
 | 563 |            Result := true;
 | 
|---|
 | 564 |   except
 | 
|---|
 | 565 |       on EListError do
 | 
|---|
 | 566 |         begin
 | 
|---|
 | 567 |          {$ifdef debug}ShowMessage('EListError in UBAGlobals.DiagnosesMatch()');{$endif}
 | 
|---|
 | 568 |          raise;
 | 
|---|
 | 569 |         end;
 | 
|---|
 | 570 |   end;
 | 
|---|
 | 571 | end;
 | 
|---|
 | 572 | 
 | 
|---|
 | 573 | function CountSelectedOrders(const Caller: smallint) : smallint;
 | 
|---|
 | 574 | var
 | 
|---|
 | 575 |   i: integer;
 | 
|---|
 | 576 |   selectedOrders: smallint;
 | 
|---|
 | 577 | begin
 | 
|---|
 | 578 |   selectedOrders := 0;
 | 
|---|
 | 579 | 
 | 
|---|
 | 580 |   // How many orders selected?
 | 
|---|
 | 581 |   case Caller of
 | 
|---|
 | 582 |      F_ORDERS_SIGN: begin
 | 
|---|
 | 583 |                        try
 | 
|---|
 | 584 |                           for i := 0 to (fOrdersSign.frmSignOrders.clstOrders.Items.Count-1) do
 | 
|---|
 | 585 |                               if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 586 |                                    Inc(selectedOrders);
 | 
|---|
 | 587 |                        except
 | 
|---|
 | 588 |                           on EListError do
 | 
|---|
 | 589 |                              begin
 | 
|---|
 | 590 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CountSelectedOrders() - F_ORDERS_SIGN');{$endif}
 | 
|---|
 | 591 |                              raise;
 | 
|---|
 | 592 |                              end;
 | 
|---|
 | 593 |                        end;
 | 
|---|
 | 594 |                     end;
 | 
|---|
 | 595 |      F_REVIEW:      begin
 | 
|---|
 | 596 |                        try
 | 
|---|
 | 597 |                           for i := 0 to (fReview.frmReview.lstReview.Items.Count-1) do
 | 
|---|
 | 598 |                               if (fReview.frmReview.lstReview.Selected[i]) then
 | 
|---|
 | 599 |                                    Inc(selectedOrders);
 | 
|---|
 | 600 |                        except
 | 
|---|
 | 601 |                           on EListError do
 | 
|---|
 | 602 |                              begin
 | 
|---|
 | 603 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CountSelectedOrders() - F_REVIEW');{$endif}
 | 
|---|
 | 604 |                              raise;
 | 
|---|
 | 605 |                              end;
 | 
|---|
 | 606 |                        end;
 | 
|---|
 | 607 |                     end;
 | 
|---|
 | 608 |   end; //case
 | 
|---|
 | 609 | 
 | 
|---|
 | 610 |   Result := selectedOrders;
 | 
|---|
 | 611 | 
 | 
|---|
 | 612 | end;
 | 
|---|
 | 613 | 
 | 
|---|
 | 614 | function CompareOrderDx(const Caller: smallint) : boolean;
 | 
|---|
 | 615 | var
 | 
|---|
 | 616 |   i: integer;
 | 
|---|
 | 617 |   firstSelectedID: string;
 | 
|---|
 | 618 |   thisOrderID: string;
 | 
|---|
 | 619 |   firstDxRec: TBADxRecord;
 | 
|---|
 | 620 |   compareDxRec: TBADxRecord;
 | 
|---|
 | 621 |   thisStringList: TStringList;
 | 
|---|
 | 622 |   thatStringList: TStringList;
 | 
|---|
 | 623 | begin
 | 
|---|
 | 624 |   Result := false;
 | 
|---|
 | 625 |   firstSelectedID := '';
 | 
|---|
 | 626 |   firstDxRec := nil;
 | 
|---|
 | 627 |   firstDxRec := TBADxRecord.Create;
 | 
|---|
 | 628 |   thisStringList := TStringList.Create;
 | 
|---|
 | 629 |   thisStringList.Clear;
 | 
|---|
 | 630 |   thatStringList := TStringList.Create;
 | 
|---|
 | 631 |   thatStringList.Clear;
 | 
|---|
 | 632 | 
 | 
|---|
 | 633 |   case Caller of
 | 
|---|
 | 634 |      F_ORDERS_SIGN: begin
 | 
|---|
 | 635 |                        try
 | 
|---|
 | 636 |                           for i := 0 to (fOrdersSign.frmSignOrders.clstOrders.Items.Count-1) do
 | 
|---|
 | 637 |                               if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 638 |                                  begin
 | 
|---|
 | 639 |                                  firstSelectedID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 640 |                                  Break;
 | 
|---|
 | 641 |                                  end;
 | 
|---|
 | 642 |                        except
 | 
|---|
 | 643 |                           on EListError do
 | 
|---|
 | 644 |                              begin
 | 
|---|
 | 645 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CompareOrderDx() - F_ORDERS_SIGN');{$endif}
 | 
|---|
 | 646 |                              raise;
 | 
|---|
 | 647 |                              end;
 | 
|---|
 | 648 |                        end;
 | 
|---|
 | 649 |                     end;
 | 
|---|
 | 650 |      F_REVIEW:      begin
 | 
|---|
 | 651 |                        try
 | 
|---|
 | 652 |                           for i := 0 to (fReview.frmReview.lstReview.Items.Count-1) do
 | 
|---|
 | 653 |                               if (fReview.frmReview.lstReview.Selected[i]) then
 | 
|---|
 | 654 |                                  begin
 | 
|---|
 | 655 |                                  firstSelectedID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
 | 
|---|
 | 656 |                                  Break;
 | 
|---|
 | 657 |                                  end;
 | 
|---|
 | 658 |                        except
 | 
|---|
 | 659 |                           on EListError do
 | 
|---|
 | 660 |                              begin
 | 
|---|
 | 661 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CompareOrderDx() - F_REVIEW');{$endif}
 | 
|---|
 | 662 |                              raise;
 | 
|---|
 | 663 |                              end;
 | 
|---|
 | 664 |                        end;
 | 
|---|
 | 665 |                     end;
 | 
|---|
 | 666 |   end; //case
 | 
|---|
 | 667 | 
 | 
|---|
 | 668 |   firstDxRec := TBADxRecord.Create;
 | 
|---|
 | 669 |   InitializeNewDxRec(firstDxRec);
 | 
|---|
 | 670 |   GetBADxListForOrder(firstDxRec, firstSelectedID);
 | 
|---|
 | 671 | 
 | 
|---|
 | 672 |   // first string to compare
 | 
|---|
 | 673 |   thisStringList.Add(firstDxRec.FBADxCode);
 | 
|---|
 | 674 |   thisStringList.Add(firstDxRec.FBASecDx1);
 | 
|---|
 | 675 |   thisStringList.Add(firstDxRec.FBASecDx2);
 | 
|---|
 | 676 |   thisStringList.Add(firstDxRec.FBASecDx3);
 | 
|---|
 | 677 | 
 | 
|---|
 | 678 |   case Caller of
 | 
|---|
 | 679 |      F_ORDERS_SIGN: begin
 | 
|---|
 | 680 |                        try
 | 
|---|
 | 681 |                           for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
 | 
|---|
 | 682 |                               if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
 | 
|---|
 | 683 |                                  begin
 | 
|---|
 | 684 |                                  thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
 | 
|---|
 | 685 |                                  // If order ID is same as the first selected order, then skip it
 | 
|---|
 | 686 |                                  if thisOrderID = firstSelectedID then
 | 
|---|
 | 687 |                                       Continue
 | 
|---|
 | 688 |                                  else
 | 
|---|
 | 689 |                                      begin
 | 
|---|
 | 690 |                                      compareDxRec := TBADxRecord.Create;
 | 
|---|
 | 691 |                                      InitializeNewDxRec(compareDxRec);
 | 
|---|
 | 692 |                                      GetBADxListForOrder(compareDxRec, thisOrderID);
 | 
|---|
 | 693 | 
 | 
|---|
 | 694 |                                      thatStringList.Add(compareDxRec.FBADxCode);
 | 
|---|
 | 695 |                                      thatStringList.Add(compareDxRec.FBASecDx1);
 | 
|---|
 | 696 |                                      thatStringList.Add(compareDxRec.FBASecDx2);
 | 
|---|
 | 697 |                                      thatStringList.Add(compareDxRec.FBASecDx3);
 | 
|---|
 | 698 | 
 | 
|---|
 | 699 |                                      if DiagnosesMatch(thisStringList, thatStringList) then
 | 
|---|
 | 700 |                                          Result := true;
 | 
|---|
 | 701 |                                      end;
 | 
|---|
 | 702 |                                  end;
 | 
|---|
 | 703 |                        except
 | 
|---|
 | 704 |                           on EListError do
 | 
|---|
 | 705 |                              begin
 | 
|---|
 | 706 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CompareOrderDx() - F_ORDERS_SIGN');{$endif}
 | 
|---|
 | 707 |                              raise;
 | 
|---|
 | 708 |                              end;
 | 
|---|
 | 709 |                        end;
 | 
|---|
 | 710 |                     end;
 | 
|---|
 | 711 |      F_REVIEW:      begin
 | 
|---|
 | 712 |                        try
 | 
|---|
 | 713 |                           for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
 | 
|---|
 | 714 |                               if (fReview.frmReview.lstReview.Selected[i]) then
 | 
|---|
 | 715 |                                  begin
 | 
|---|
 | 716 |                                  thisOrderID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
 | 
|---|
 | 717 |                                  // If order ID is same as the first selected order, then skip it
 | 
|---|
 | 718 |                                  if thisOrderID = firstSelectedID then
 | 
|---|
 | 719 |                                       Continue
 | 
|---|
 | 720 |                                  else
 | 
|---|
 | 721 |                                      begin
 | 
|---|
 | 722 |                                      compareDxRec := TBADxRecord.Create;
 | 
|---|
 | 723 |                                      InitializeNewDxRec(compareDxRec);
 | 
|---|
 | 724 |                                      GetBADxListForOrder(compareDxRec, thisOrderID);
 | 
|---|
 | 725 | 
 | 
|---|
 | 726 |                                      thatStringList.Add(compareDxRec.FBADxCode);
 | 
|---|
 | 727 |                                      thatStringList.Add(compareDxRec.FBASecDx1);
 | 
|---|
 | 728 |                                      thatStringList.Add(compareDxRec.FBASecDx2);
 | 
|---|
 | 729 |                                      thatStringList.Add(compareDxRec.FBASecDx3);
 | 
|---|
 | 730 | 
 | 
|---|
 | 731 |                                      if DiagnosesMatch(thisStringList, thatStringList) then
 | 
|---|
 | 732 |                                          Result := true;
 | 
|---|
 | 733 |                                      end;
 | 
|---|
 | 734 |                                  end;
 | 
|---|
 | 735 |                           except
 | 
|---|
 | 736 |                           on EListError do
 | 
|---|
 | 737 |                              begin
 | 
|---|
 | 738 |                              {$ifdef debug}ShowMessage('EListError in UBAGlobals.CompareOrderDx() - F_REVIEW');{$endif}
 | 
|---|
 | 739 |                              raise;
 | 
|---|
 | 740 |                              end;
 | 
|---|
 | 741 |                           end;
 | 
|---|
 | 742 |                     end;
 | 
|---|
 | 743 |   end; //case
 | 
|---|
 | 744 | 
 | 
|---|
 | 745 |   if Assigned(thisStringList) then
 | 
|---|
 | 746 |      FreeAndNil(thisStringList);
 | 
|---|
 | 747 | 
 | 
|---|
 | 748 |   if Assigned(thatStringList) then
 | 
|---|
 | 749 |      FreeAndNil(thatStringList);
 | 
|---|
 | 750 | end;
 | 
|---|
 | 751 | 
 | 
|---|
 | 752 | procedure GetBADxListForOrder(var thisRetVal: TBADxRecord; thisOrderID: string);
 | 
|---|
 | 753 | var
 | 
|---|
 | 754 |   i: integer;
 | 
|---|
 | 755 |   thisRec: TBADxRecord;
 | 
|---|
 | 756 | begin
 | 
|---|
 | 757 |    if UBAGlobals.tempDxNodeExists(thisOrderID) then
 | 
|---|
 | 758 |      begin
 | 
|---|
 | 759 | 
 | 
|---|
 | 760 |      if Assigned(tempDxList) then
 | 
|---|
 | 761 |      for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 762 |      begin
 | 
|---|
 | 763 |         thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 764 | 
 | 
|---|
 | 765 |                  if Assigned(thisRec) then
 | 
|---|
 | 766 |                    if (thisRec.FOrderID = thisOrderID) then
 | 
|---|
 | 767 |                       begin
 | 
|---|
 | 768 |                       with thisRetVal do
 | 
|---|
 | 769 |                           begin
 | 
|---|
 | 770 |                              FOrderID := thisRec.FOrderID;
 | 
|---|
 | 771 |                              FBADxCode := StringReplace(thisrec.FBADxCode,'^',':',[rfReplaceAll]);
 | 
|---|
 | 772 |                              FBASecDx1 := StringReplace(thisrec.FBASecDx1,'^',':',[rfReplaceAll]);
 | 
|---|
 | 773 |                              FBASecDx2 := StringReplace(thisrec.FBASecDx2,'^',':',[rfReplaceAll]);;
 | 
|---|
 | 774 |                              FBASecDx3 := StringReplace(thisrec.FBASecDx3,'^',':',[rfReplaceAll]);
 | 
|---|
 | 775 |                           end;
 | 
|---|
 | 776 |                       end;
 | 
|---|
 | 777 |                  end;
 | 
|---|
 | 778 |         end;
 | 
|---|
 | 779 | end;
 | 
|---|
 | 780 | 
 | 
|---|
 | 781 | procedure DestroyDxList;
 | 
|---|
 | 782 | var
 | 
|---|
 | 783 |    i: integer;
 | 
|---|
 | 784 | begin
 | 
|---|
 | 785 |   if Assigned(tempDxList) then
 | 
|---|
 | 786 |      for i := 0 to pred(UBAGlobals.tempDxList.Count) do
 | 
|---|
 | 787 |         TObject(tempDxList[i]).Free;
 | 
|---|
 | 788 | 
 | 
|---|
 | 789 |      tempDxList := nil;
 | 
|---|
 | 790 |      FreeAndNil(tempDxList);
 | 
|---|
 | 791 | end;
 | 
|---|
 | 792 | 
 | 
|---|
 | 793 | procedure SimpleAddTempDxList(thisOrderID: string);
 | 
|---|
 | 794 | var
 | 
|---|
 | 795 |    tempDxRec: TBADxRecord;
 | 
|---|
 | 796 | begin
 | 
|---|
 | 797 |      frmBALocalDiagnoses.LoadTempRec(tempDxRec, thisOrderID);
 | 
|---|
 | 798 |      UBAGlobals.tempDxList.Add(TBADxRecord(tempDxRec));
 | 
|---|
 | 799 | end;
 | 
|---|
 | 800 | 
 | 
|---|
 | 801 | procedure SetBADxList;
 | 
|---|
 | 802 | var
 | 
|---|
 | 803 |   i: smallint;
 | 
|---|
 | 804 | begin
 | 
|---|
 | 805 |   if not Assigned(UBAGlobals.tempDxList) then
 | 
|---|
 | 806 |      begin
 | 
|---|
 | 807 |      UBAGlobals.tempDxList := TList.Create;
 | 
|---|
 | 808 |      UBAGlobals.tempDxList.Count := 0;
 | 
|---|
 | 809 |      end
 | 
|---|
 | 810 |   else
 | 
|---|
 | 811 |      begin
 | 
|---|
 | 812 |      //Kill the old Dx list
 | 
|---|
 | 813 |      for i := 0 to pred(UBAGlobals.tempDxList.Count) do
 | 
|---|
 | 814 |         TObject(UBAGlobals.tempDxList[i]).Free;
 | 
|---|
 | 815 | 
 | 
|---|
 | 816 |      UBAGlobals.tempDxList := nil;
 | 
|---|
 | 817 | 
 | 
|---|
 | 818 |      //Create new Dx list for newly selected patient
 | 
|---|
 | 819 |       if not Assigned(UBAGlobals.tempDxList) then
 | 
|---|
 | 820 |          begin
 | 
|---|
 | 821 |          UBAGlobals.tempDxList := TList.Create;
 | 
|---|
 | 822 |          UBAGlobals.tempDxList.Count := 0;
 | 
|---|
 | 823 |          end;
 | 
|---|
 | 824 |      end;
 | 
|---|
 | 825 | end;
 | 
|---|
 | 826 | 
 | 
|---|
 | 827 | procedure SetBADxListForOrder(thisRec: TBADxRecord; thisOrderID: string);
 | 
|---|
 | 828 | var
 | 
|---|
 | 829 |   i: integer;
 | 
|---|
 | 830 |   foundRec: TBADxRecord;
 | 
|---|
 | 831 | begin
 | 
|---|
 | 832 |    if UBAGlobals.tempDxNodeExists(thisOrderID) then
 | 
|---|
 | 833 |      begin
 | 
|---|
 | 834 |      foundRec := TBADxRecord.Create;
 | 
|---|
 | 835 | 
 | 
|---|
 | 836 |      if Assigned(tempDxList) then
 | 
|---|
 | 837 |            try
 | 
|---|
 | 838 |              for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 839 |                 begin
 | 
|---|
 | 840 |                  foundRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 841 | 
 | 
|---|
 | 842 |                  if Assigned(thisRec) then
 | 
|---|
 | 843 |                    if (thisOrderID = foundRec.FOrderID) then
 | 
|---|
 | 844 |                       begin
 | 
|---|
 | 845 |                       with foundRec do
 | 
|---|
 | 846 |                           begin
 | 
|---|
 | 847 |                           FOrderID := thisRec.FOrderID;
 | 
|---|
 | 848 |                           FBADxCode := thisRec.FBADxCode;
 | 
|---|
 | 849 |                           FBASecDx1 := thisRec.FBASecDx1;
 | 
|---|
 | 850 |                           FBASecDx2 := thisRec.FBASecDx2;
 | 
|---|
 | 851 |                           FBASecDx3 := thisRec.FBASecDx3;
 | 
|---|
 | 852 |                           PutBADxListForOrder(foundRec, thisOrderID);
 | 
|---|
 | 853 |                       end;
 | 
|---|
 | 854 |                       Break;
 | 
|---|
 | 855 |                       end;
 | 
|---|
 | 856 |                  end;
 | 
|---|
 | 857 |            except
 | 
|---|
 | 858 |               on EListError do
 | 
|---|
 | 859 |                  begin
 | 
|---|
 | 860 |                  {$ifdef debug}ShowMessage('EListError in UBAGlobals.SetBADxListForOrder()');{$endif}
 | 
|---|
 | 861 |                  raise;
 | 
|---|
 | 862 |                  end;
 | 
|---|
 | 863 |            end;
 | 
|---|
 | 864 |      end;
 | 
|---|
 | 865 | end;
 | 
|---|
 | 866 | 
 | 
|---|
 | 867 | function SecondaryDxFull(thisOrderID: string) : boolean;
 | 
|---|
 | 868 | var
 | 
|---|
 | 869 |   i: integer;
 | 
|---|
 | 870 |   thisRec: TBADxRecord;
 | 
|---|
 | 871 | begin
 | 
|---|
 | 872 |   Result := false;
 | 
|---|
 | 873 | 
 | 
|---|
 | 874 |      try
 | 
|---|
 | 875 |         for i := 0 to tempDxList.Count - 1 do
 | 
|---|
 | 876 |            begin
 | 
|---|
 | 877 |            thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 878 | 
 | 
|---|
 | 879 |            if Assigned(thisRec) then
 | 
|---|
 | 880 |                if thisRec.FOrderID = thisOrderID then
 | 
|---|
 | 881 |                   begin
 | 
|---|
 | 882 |                   if (thisRec.FBADxCode <> UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 883 |                      if (thisRec.FBASecDx1 <> UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 884 |                         if (thisRec.FBASecDx2 <> UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 885 |                            if (thisRec.FBASecDx3 <> UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 886 |                               Result := true;
 | 
|---|
 | 887 |                   end;
 | 
|---|
 | 888 |            end;
 | 
|---|
 | 889 |      except
 | 
|---|
 | 890 |         on EListError do
 | 
|---|
 | 891 |            begin
 | 
|---|
 | 892 |            {$ifdef debug}ShowMessage('EListError in UBAGlobals.SecondaryDxFull()');{$endif}
 | 
|---|
 | 893 |            raise;
 | 
|---|
 | 894 |            end;
 | 
|---|
 | 895 |      end;
 | 
|---|
 | 896 | end;
 | 
|---|
 | 897 | 
 | 
|---|
 | 898 | procedure AddSecondaryDx(thisOrderID: string; thisDxCode: string);
 | 
|---|
 | 899 | // Add a Secondary Dx to the first open slot in DxRec, if there IS an open slot
 | 
|---|
 | 900 | var
 | 
|---|
 | 901 |   thisRec: TBADxRecord;
 | 
|---|
 | 902 |   i: integer;
 | 
|---|
 | 903 | begin
 | 
|---|
 | 904 | 
 | 
|---|
 | 905 |   try
 | 
|---|
 | 906 |      for i := 0 to tempDxList.Count - 1 do
 | 
|---|
 | 907 |         begin
 | 
|---|
 | 908 |         thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 909 | 
 | 
|---|
 | 910 |         if thisRec.FOrderID = thisOrderID then
 | 
|---|
 | 911 |            begin
 | 
|---|
 | 912 |            if (thisRec.FBASecDx1 = UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 913 |               thisRec.FBASecDx1 := thisDxCode
 | 
|---|
 | 914 |            else
 | 
|---|
 | 915 |               if (thisRec.FBASecDx2 = UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 916 |                  thisRec.FBASecDx2 := thisDxCode
 | 
|---|
 | 917 |            else
 | 
|---|
 | 918 |               if (thisRec.FBASecDx3 = UBAConst.DXREC_INIT_FIELD_VAL) then
 | 
|---|
 | 919 |                  thisRec.FBASecDx3 := thisDxCode;
 | 
|---|
 | 920 |            end
 | 
|---|
 | 921 |         end;
 | 
|---|
 | 922 |   except
 | 
|---|
 | 923 |      on EListError do
 | 
|---|
 | 924 |         begin
 | 
|---|
 | 925 |         {$ifdef debug}ShowMessage('EListError in UBAGlobals.AddSecondaryDx()');{$endif}
 | 
|---|
 | 926 |         raise;
 | 
|---|
 | 927 |         end;
 | 
|---|
 | 928 |   end;
 | 
|---|
 | 929 | end;
 | 
|---|
 | 930 | 
 | 
|---|
 | 931 | procedure InitializeConsultOrderRec(var thisDxRec: TBAConsultOrderRec);
 | 
|---|
 | 932 | begin
 | 
|---|
 | 933 |   with thisDxRec do
 | 
|---|
 | 934 |   begin
 | 
|---|
 | 935 |      FBAOrderID   := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 936 |      FBADxCode    := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 937 |      FBASecDx1    := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 938 |      FBASecDx2    := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 939 |      FBASecDx3    := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 940 |      FBATreatmentFactors:= UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 941 |   end;
 | 
|---|
 | 942 | end;
 | 
|---|
 | 943 | 
 | 
|---|
 | 944 | 
 | 
|---|
 | 945 | procedure InitializeNewDxRec(var thisDxRec: TBADxRecord);
 | 
|---|
 | 946 | begin
 | 
|---|
 | 947 |   with thisDxRec do
 | 
|---|
 | 948 |      begin
 | 
|---|
 | 949 |      FExistingRecordID := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 950 |      FOrderID := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 951 |      FBADxCode := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 952 |      FBASecDx1 := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 953 |      FBASecDx2 := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 954 |      FBASecDx3 := UBAConst.DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 955 |    end;
 | 
|---|
 | 956 | end;
 | 
|---|
 | 957 | 
 | 
|---|
 | 958 | procedure InitializeUnsignedOrderRec(var thisUnsignedRec: TBAUnsignedBillingRec);
 | 
|---|
 | 959 | begin
 | 
|---|
 | 960 |     with thisUnsignedRec do
 | 
|---|
 | 961 |     begin
 | 
|---|
 | 962 |        FBAOrderID    := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 963 |        FBASTSFlags   := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 964 |        FBADxCode     := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 965 |        FBASecDx1     := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 966 |        FBASecDx2     := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 967 |        FBASecDx3     := UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 968 |   end;
 | 
|---|
 | 969 | end;
 | 
|---|
 | 970 | 
 | 
|---|
 | 971 | procedure InitializeTFactorsInRec(var thisTFactorsRecIn: TBATreatmentFactorsInRec);
 | 
|---|
 | 972 | begin
 | 
|---|
 | 973 |     with thisTFactorsRecIn do
 | 
|---|
 | 974 |     begin
 | 
|---|
 | 975 |        FBAOrderID     :=  UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 976 |        FBAEligible    :=  UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 977 |        FBATFactors    :=  UNSIGNED_REC_INIT_FIELD_VAL;
 | 
|---|
 | 978 |     end;
 | 
|---|
 | 979 | end;
 | 
|---|
 | 980 | constructor TBAGlobals.Create;
 | 
|---|
 | 981 | begin
 | 
|---|
 | 982 |   inherited Create;
 | 
|---|
 | 983 | end;
 | 
|---|
 | 984 | // This procedure is called from uPCE.pas only --  do not delete.....
 | 
|---|
 | 985 | procedure TBAGlobals.AddBAPCEDiag(DiagStr:string);
 | 
|---|
 | 986 | begin
 | 
|---|
 | 987 |   if (BAPCEDiagList.Count <= 0) then
 | 
|---|
 | 988 |     BAPCEDiagList.Add('^Encounter Diagnoses');
 | 
|---|
 | 989 | 
 | 
|---|
 | 990 |   BAPCEDiagList.Add(DiagStr);
 | 
|---|
 | 991 | end;
 | 
|---|
 | 992 | 
 | 
|---|
 | 993 | procedure TBAGlobals.ClearBAPCEDiagList;
 | 
|---|
 | 994 | begin
 | 
|---|
 | 995 | 
 | 
|---|
 | 996 |    BAPCEDiagList.Clear;
 | 
|---|
 | 997 | end;
 | 
|---|
 | 998 | 
 | 
|---|
 | 999 | constructor TBAPLRec.Create;
 | 
|---|
 | 1000 | begin
 | 
|---|
 | 1001 |   inherited Create;
 | 
|---|
 | 1002 | end;
 | 
|---|
 | 1003 | 
 | 
|---|
 | 1004 | function TBAPLRec.BuildProblemListDxEntry(pDxCode:string): TStringList;
 | 
|---|
 | 1005 | // StringList used to store DX Codes selected from Encounter Form
 | 
|---|
 | 1006 | var
 | 
|---|
| [460] | 1007 |   BADxIEN: string;
 | 
|---|
| [459] | 1008 |   BAProviderStr, BAProviderName : string;
 | 
|---|
 | 1009 |   AList: TStringList;
 | 
|---|
 | 1010 | begin
 | 
|---|
 | 1011 | // Build Problem List record to be saved for selection.
 | 
|---|
 | 1012 |   PLlist     := TStringList.Create;
 | 
|---|
 | 1013 |   AList      := TStringList.Create;
 | 
|---|
 | 1014 |   AList.Clear;
 | 
|---|
 | 1015 |   PLlist.Clear;
 | 
|---|
 | 1016 |   BALocation := Encounter.Location;
 | 
|---|
 | 1017 |   BAProviderStr := IntToStr(Encounter.Provider);
 | 
|---|
 | 1018 |   BAProviderName := Encounter.ProviderName;
 | 
|---|
 | 1019 |   BADxIEN :=  sCallV('ORWDBA7 GETIEN9', [Piece(pDxCode,U,1)]);
 | 
|---|
 | 1020 |   BAPLPt.LoadPatientParams(AList);
 | 
|---|
 | 1021 | 
 | 
|---|
 | 1022 |   //BAPLPt.PtVAMC
 | 
|---|
 | 1023 |   PLlist.Add('GMPFLD(.01)='+'"' +BADxIEN+ '^'+Piece(pDxCode,U,1)+'"');
 | 
|---|
 | 1024 |   PLlist.Add('GMPFLD(.03)=' +'"'+'0^' +'"');
 | 
|---|
 | 1025 |   PLlist.Add('GMPFLD(.05)=' + '"' +'^'+Piece(pDxCode,U,2)+ '"');
 | 
|---|
 | 1026 |   PLlist.Add('GMPFLD(.08)=' + '"'+ '^'+FloatToStr(FMToday)+'"');
 | 
|---|
 | 1027 |   PLlist.Add('GMPFLD(.12)=' + '"' + 'A^ACTIVE'+ '"');
 | 
|---|
 | 1028 |   PLlist.Add('GMPFLD(.13)=' + '"' + '^'+ '"');
 | 
|---|
 | 1029 |   PLlist.Add('GMPFLD(1.01)=' + '"'+ Piece(pDxCode,U,2) + '"');
 | 
|---|
 | 1030 |   PLlist.Add('GMPFLD(1.02)=' + '"'+'P' + '"');
 | 
|---|
 | 1031 |   PLlist.Add('GMPFLD(1.03)=' + '"'+ BAProviderStr + '^'+ BAProviderName + '"');
 | 
|---|
 | 1032 |   PLlist.Add('GMPFLD(1.04)=' + '"'+ BAProviderStr + '^' + BAProviderName + '"');
 | 
|---|
 | 1033 |   PLlist.Add('GMPFLD(1.05)=' + '"'+ BAProviderStr + '^' + BAProviderName + '"');
 | 
|---|
 | 1034 |   PLlist.Add('GMPFLD(1.08)=' +'"' + IntToStr(BALocation) + '^' + Encounter.LocationName + '"');
 | 
|---|
 | 1035 |   PLlist.Add('GMPFLD(1.09)=' + '"'+ FloatToStr(FMToday) +'"');
 | 
|---|
 | 1036 |   PLlist.Add('GMPFLD(10,0)=' + '"'+'0'+ '"');
 | 
|---|
 | 1037 |   Result := PLlist;
 | 
|---|
 | 1038 |   
 | 
|---|
 | 1039 | end;
 | 
|---|
 | 1040 | 
 | 
|---|
 | 1041 | function TBAPLRec.FMToDateTime(FMDateTime: string): TDateTime;
 | 
|---|
 | 1042 | var
 | 
|---|
 | 1043 |   x, Year: string;
 | 
|---|
 | 1044 | begin
 | 
|---|
 | 1045 |   { Note: TDateTime cannot store month only or year only dates }
 | 
|---|
 | 1046 |   x := FMDateTime + '0000000';
 | 
|---|
 | 1047 |   if Length(x) > 12 then x := Copy(x, 1, 12);
 | 
|---|
 | 1048 |   if StrToInt(Copy(x, 9, 4)) > 2359 then x := Copy(x,1,7) + '.2359';
 | 
|---|
 | 1049 |   Year := IntToStr(17 + StrToInt(Copy(x,1,1))) + Copy(x,2,2);
 | 
|---|
 | 1050 |   x := Copy(x,4,2) + '/' + Copy(x,6,2) + '/' + Year + ' ' + Copy(x,9,2) + ':' + Copy(x,11,2);
 | 
|---|
 | 1051 |   Result := StrToDateTime(x);
 | 
|---|
 | 1052 | end;
 | 
|---|
 | 1053 | 
 | 
|---|
 | 1054 | {-------------------------- TPLPt Class ----------------------}
 | 
|---|
 | 1055 | constructor TBAPLPT.Create(Alist:TStringList);
 | 
|---|
 | 1056 | var
 | 
|---|
 | 1057 |   i: integer;
 | 
|---|
 | 1058 | begin
 | 
|---|
 | 1059 |   for i := 0 to AList.Count - 1 do
 | 
|---|
 | 1060 |     case i of
 | 
|---|
 | 1061 |       0: PtVAMC             := Copy(Alist[i],1,999);
 | 
|---|
 | 1062 |       1: PtDead             := AList[i];
 | 
|---|
 | 1063 |       2: PtServiceConnected := (AList[i] = '1');
 | 
|---|
 | 1064 |       3: PtAgentOrange      := (AList[i] = '1');
 | 
|---|
 | 1065 |       4: PtRadiation        := (AList[i] = '1');
 | 
|---|
 | 1066 |       5: PtEnvironmental    := (AList[i] = '1');
 | 
|---|
 | 1067 |       6: PtBID              := Alist[i];
 | 
|---|
 | 1068 |       7: PtHNC              := (AList[i] = '1');
 | 
|---|
 | 1069 |       8: PtMST              := (AList[i] = '1');
 | 
|---|
 | 1070 |     end;
 | 
|---|
 | 1071 | end;
 | 
|---|
 | 1072 | 
 | 
|---|
 | 1073 | function TBAPLPt.GetGMPDFN(dfn:string;name:string):string;
 | 
|---|
 | 1074 | begin
 | 
|---|
 | 1075 |   Result := dfn + u + name + u + PtBID + u + PtDead;
 | 
|---|
 | 1076 | end;
 | 
|---|
 | 1077 | 
 | 
|---|
 | 1078 | procedure TBAPLPt.LoadPatientParams(AList:TstringList);
 | 
|---|
 | 1079 | begin
 | 
|---|
 | 1080 |   AList.Assign(rpcInitPt(Patient.DFN));
 | 
|---|
 | 1081 |   BAPLPt := TBAPLPt.create(Alist);
 | 
|---|
 | 1082 | end;
 | 
|---|
 | 1083 | 
 | 
|---|
 | 1084 | function TBAPLPt.rpcInitPt(const PatientDFN: string): TStrings ;  //*DFN*
 | 
|---|
 | 1085 | begin
 | 
|---|
 | 1086 |    CallV('ORQQPL INIT PT',[PatientDFN]);
 | 
|---|
 | 1087 |    Result := RPCBrokerV.Results;
 | 
|---|
 | 1088 | end ;
 | 
|---|
 | 1089 | 
 | 
|---|
 | 1090 | function tempDxNodeExists(thisOrderID: string) : boolean;
 | 
|---|
 | 1091 | // Returns true if a node with the specified Order ID exists, false otherwise.
 | 
|---|
 | 1092 | var
 | 
|---|
 | 1093 |   i: integer;
 | 
|---|
 | 1094 |   thisRec: TBADxRecord;
 | 
|---|
 | 1095 | begin
 | 
|---|
 | 1096 |   Result := false;
 | 
|---|
 | 1097 |   if Assigned(tempDxList) then
 | 
|---|
 | 1098 |      try
 | 
|---|
 | 1099 |         for i := 0 to (tempDxList.Count - 1) do
 | 
|---|
 | 1100 |            begin
 | 
|---|
 | 1101 |             thisRec := TBADxRecord(tempDxList.Items[i]);
 | 
|---|
 | 1102 | 
 | 
|---|
 | 1103 |             if Assigned(thisRec) then
 | 
|---|
 | 1104 |               if (thisRec.FOrderID = thisOrderID) then
 | 
|---|
 | 1105 |                  begin
 | 
|---|
 | 1106 |                  Result := true;
 | 
|---|
 | 1107 |                  Break;
 | 
|---|
 | 1108 |                  end;
 | 
|---|
 | 1109 |             end;
 | 
|---|
 | 1110 |      except
 | 
|---|
 | 1111 |         on EListError do
 | 
|---|
 | 1112 |            begin
 | 
|---|
 | 1113 |            {$ifdef debug}ShowMessage('EListError in UBAGlobals.tempDxNodeExists()');{$endif}
 | 
|---|
 | 1114 |            raise;
 | 
|---|
 | 1115 |            end;
 | 
|---|
 | 1116 |      end;
 | 
|---|
 | 1117 | end;
 | 
|---|
 | 1118 |  // HDS00003380
 | 
|---|
 | 1119 | function IsUserNurseProvider(pUserID: int64):boolean;
 | 
|---|
 | 1120 | begin
 | 
|---|
 | 1121 |    Result := False;
 | 
|---|
 | 1122 |    if BILLING_AWARE then
 | 
|---|
 | 1123 |    begin
 | 
|---|
 | 1124 |       if (pUserID <> 0) and PersonHasKey(pUserID, 'PROVIDER') then
 | 
|---|
 | 1125 |          if (uCore.User.OrderRole = OR_NURSE)  then
 | 
|---|
 | 1126 |             Result := True;
 | 
|---|
 | 1127 |    end;
 | 
|---|
 | 1128 | end;
 | 
|---|
 | 1129 | 
 | 
|---|
 | 1130 | function GetPatientTFactors(pOrderList:TStringList):String;
 | 
|---|
 | 1131 | begin
 | 
|---|
 | 1132 |    Result := '';
 | 
|---|
 | 1133 |    Result := sCallV('ORWDBA1 SCLST',[Patient.DFN,pOrderList]);
 | 
|---|
 | 1134 | end;
 | 
|---|
 | 1135 | 
 | 
|---|
 | 1136 | 
 | 
|---|
 | 1137 | Initialization
 | 
|---|
 | 1138 |   BAPrimaryDxChanged := False;
 | 
|---|
 | 1139 |   BAFWarningShown    := False;
 | 
|---|
 | 1140 |   BAPersonalDX       := False;
 | 
|---|
 | 1141 |   BAHoldPrimaryDx      :=  DXREC_INIT_FIELD_VAL;
 | 
|---|
 | 1142 |   NonBillableOrderList := TStringList.Create;
 | 
|---|
 | 1143 |   BAPCEDiagList        := TStringList.Create;
 | 
|---|
 | 1144 |   OrderListSCEI        := TStringList.Create;
 | 
|---|
 | 1145 |   BAOrderList          := TStringList.Create;
 | 
|---|
 | 1146 |   UnSignedOrders       := TStringList.Create;
 | 
|---|
 | 1147 |   BAOrderIDList        := TStringList.Create;
 | 
|---|
 | 1148 |   BAUnSignedOrders     := TStringList.Create;
 | 
|---|
 | 1149 |   BATFHints            := TStringList.Create;
 | 
|---|
 | 1150 |   BAFactorsRec         := TBAFactorsRec.Create;
 | 
|---|
 | 1151 |   BAFactorsInRec       := TBATreatmentFactorsInRec.Create;
 | 
|---|
 | 1152 |   BASelectedList       := TStringList.Create;
 | 
|---|
 | 1153 |   PLFactorsIndexes     := TStringList.Create;
 | 
|---|
 | 1154 |   BAtmpOrderList       := TStringList.Create;
 | 
|---|
 | 1155 |   BACopiedOrderFlags   := TStringList.Create; //BAPHII 1.3.2
 | 
|---|
 | 1156 |   OrderIDList          := TStringList.Create;
 | 
|---|
 | 1157 |   BAConsultDxList      := TStringList.Create;
 | 
|---|
 | 1158 |   BAConsultPLFlags     := TStringList.Create;
 | 
|---|
 | 1159 |   BANurseConsultOrders := TStringList.Create;
 | 
|---|
 | 1160 |   BADeltedOrders       := TStringList.Create;
 | 
|---|
 | 1161 |  // BAConsultOrdersRequireDx := TStringList.Create;
 | 
|---|
 | 1162 |   BAConsultDxList.Clear;
 | 
|---|
 | 1163 |   NonBillableOrderList.Clear;
 | 
|---|
 | 1164 |   OrderListSCEI.Clear;
 | 
|---|
 | 1165 |   UnSignedOrders.Clear;
 | 
|---|
 | 1166 |   BAOrderIDList.Clear;
 | 
|---|
 | 1167 |   BAUnSignedOrders.Clear;
 | 
|---|
 | 1168 |   BATFHints.Clear;
 | 
|---|
 | 1169 |   PLFactorsIndexes.Clear;
 | 
|---|
 | 1170 |   BASelectedList.Clear;
 | 
|---|
 | 1171 |   BAtmpOrderList.Clear;
 | 
|---|
 | 1172 |   OrderIDList.Clear;
 | 
|---|
 | 1173 |   BAConsultPLFlags.Clear;
 | 
|---|
 | 1174 |   BAPCEDiagList.Clear;
 | 
|---|
 | 1175 |   BANurseConsultOrders.Clear;
 | 
|---|
 | 1176 |   BADeltedOrders.Clear;
 | 
|---|
 | 1177 |   //BAConsultOrdersRequireDx.Clear;
 | 
|---|
 | 1178 |  
 | 
|---|
 | 1179 | end.
 | 
|---|
 | 1180 | 
 | 
|---|
 | 1181 | 
 | 
|---|
 | 1182 | 
 | 
|---|