[613] | 1 | ORQPTQ11 ; SLC/CLA - Functs which return patient lists and sources pt 1B ;12/15/97 [ 08/04/97 3:32 PM ] [6/6/03 2:36pm]
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**82,85,109,132,173,253**;Dec 17, 1997
|
---|
| 3 | ;
|
---|
| 4 | ; SLC/PKS - Modified to deal with "Combination" lists - 3/2000.
|
---|
| 5 | ; SLC/PKS - Additions for "Restricted Pt. Lists" - 11/2001.
|
---|
| 6 | ;
|
---|
| 7 | DEFSRC(Y) ; return current user's default list source
|
---|
| 8 | Q:'$D(DUZ)
|
---|
| 9 | N FROM,API,ORSRV
|
---|
| 10 | S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 11 | S FROM=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT LIST SOURCE",1,"Q")
|
---|
| 12 | Q:'$L($G(FROM))
|
---|
| 13 | I FROM="T" S Y=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT TEAM",1,"B")_"^Team"
|
---|
| 14 | I FROM="W" S Y=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT WARD",1,"B")_"^Ward"
|
---|
| 15 | I FROM="P" S Y=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT PROVIDER",1,"B")_"^Primary Provider"
|
---|
| 16 | I FROM="S" S Y=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT SPECIALTY",1,"B")_"^Specialty"
|
---|
| 17 | I FROM="C" D
|
---|
| 18 | .S API="ORLP DEFAULT CLINIC "_$$UP^XLFSTR($$DOW^XLFDT(DT))
|
---|
| 19 | .S Y=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),API,1,"B")_"^"_$$DOW^XLFDT(DT)_" Clinic"
|
---|
| 20 | I FROM="M" S Y="^Combination"
|
---|
| 21 | Q
|
---|
| 22 | FDEFSRC(ORDUZ) ; extrinsic function return user's (ORDUZ) default list source
|
---|
| 23 | Q:'$D(ORDUZ) "^^Error: No user identified"
|
---|
| 24 | N FROM,API,RESULT,ORSRV
|
---|
| 25 | S ORSRV=$G(^VA(200,ORDUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 26 | S FROM=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT LIST SOURCE",1,"Q")
|
---|
| 27 | Q:'$L($G(FROM)) "^^No default list source specified"
|
---|
| 28 | I FROM="T" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT TEAM",1,"B")_"^Team"
|
---|
| 29 | I FROM="W" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT WARD",1,"B")_"^Ward"
|
---|
| 30 | I FROM="P" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT PROVIDER",1,"B")_"^Primary Provider"
|
---|
| 31 | I FROM="S" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT SPECIALTY",1,"B")_"^Specialty"
|
---|
| 32 | I FROM="C" D
|
---|
| 33 | .S API="ORLP DEFAULT CLINIC "_$$UP^XLFSTR($$DOW^XLFDT(DT))
|
---|
| 34 | .S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),API,1,"B")_"^"_$$DOW^XLFDT(DT)_" Clinic"
|
---|
| 35 | I FROM="M" S RESULT="^Combination"
|
---|
| 36 | Q RESULT
|
---|
| 37 | LISTSRC(ORDUZ,TYPE) ; extrinsic function return user's (ORDUZ) list source
|
---|
| 38 | ; for list type team, ward, primary provider, specialty, clinic, combination (TYPE)
|
---|
| 39 | Q:'$D(ORDUZ) "^^Error: No user identified"
|
---|
| 40 | Q:'$D(TYPE) "^^Error: No list type identified"
|
---|
| 41 | N API,RESULT,ORSRV
|
---|
| 42 | S ORSRV=$G(^VA(200,ORDUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 43 | I TYPE="T" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT TEAM",1,"B")_"^Team"
|
---|
| 44 | I TYPE="W" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT WARD",1,"B")_"^Ward"
|
---|
| 45 | I TYPE="P" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT PROVIDER",1,"B")_"^Primary Provider"
|
---|
| 46 | I TYPE="S" S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),"ORLP DEFAULT SPECIALTY",1,"B")_"^Specialty"
|
---|
| 47 | I TYPE="C" D
|
---|
| 48 | .S API="ORLP DEFAULT CLINIC "_$$UP^XLFSTR($$DOW^XLFDT(DT))
|
---|
| 49 | .S RESULT=$$GET^XPAR("USR.`"_ORDUZ_"^SRV.`"_+$G(ORSRV),API,1,"B")_"^"_$$DOW^XLFDT(DT)_" Clinic"
|
---|
| 50 | I TYPE="M" S RESULT="Combination"
|
---|
| 51 | I $P(RESULT,U)="" S RESULT=U_RESULT
|
---|
| 52 | Q RESULT
|
---|
| 53 | DEFLIST(Y) ; return current user's default patient list
|
---|
| 54 | I $$BROKER^XWBLIB S Y=$NA(^TMP("OR",$J,"PATIENTS")) ; GUI = global.
|
---|
| 55 | I '$$BROKER^XWBLIB S ^TMP("OR",$J,"PATIENTS",0)=""
|
---|
| 56 | Q:'$D(DUZ)
|
---|
| 57 | N FROM,IEN,BEG,END,API,ORSRV,ORQDAT,ORQCNT,ORGUI
|
---|
| 58 | S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U) ; Get S/S.
|
---|
| 59 | S FROM=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT LIST SOURCE",1,"Q")
|
---|
| 60 | Q:'$L($G(FROM))
|
---|
| 61 | I FROM="T" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT TEAM",1,"Q") D:+$G(IEN)>0 TEAMPTS^ORQPTQ1(.Y,IEN)
|
---|
| 62 | I FROM="W" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT WARD",1,"Q") D:+$G(IEN)>0 BYWARD^ORWPT(.Y,IEN)
|
---|
| 63 | I FROM="P" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT PROVIDER",1,"Q") D:+$G(IEN)>0 PROVPTS^ORQPTQ2(.Y,IEN)
|
---|
| 64 | I FROM="S" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),"ORLP DEFAULT SPECIALTY",1,"Q") D:+$G(IEN)>0 SPECPTS^ORQPTQ2(.Y,IEN)
|
---|
| 65 | I FROM="C" D
|
---|
| 66 | .S API="ORLP DEFAULT CLINIC "_$$UP^XLFSTR($$DOW^XLFDT(DT)),IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),API,1,"Q") I +$G(IEN)>0 D
|
---|
| 67 | ..S BEG=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"E"))
|
---|
| 68 | ..I BEG="T+0" S BEG=$$FMTE^XLFDT(DT,BEG)
|
---|
| 69 | ..S END=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"E"))
|
---|
| 70 | ..I END="T+0" S END=$$FMTE^XLFDT(DT,END)
|
---|
| 71 | ..D CLINPTS^ORQPTQ2(.Y,+$G(IEN),BEG,END)
|
---|
| 72 | I FROM="M" D
|
---|
| 73 | .S IEN=$D(^OR(100.24,DUZ,0)) I +$G(IEN)>0 S IEN=DUZ D
|
---|
| 74 | ..S BEG=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"E"))
|
---|
| 75 | ..I BEG="T+0" S BEG=$$FMTE^XLFDT(DT,BEG)
|
---|
| 76 | ..S END=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"E"))
|
---|
| 77 | ..I END="T+0" S END=$$FMTE^XLFDT(DT,END)
|
---|
| 78 | ..D COMBPTS^ORQPTQ6(0,+$G(IEN),BEG,END) ; "0"= GUI RPC call.
|
---|
| 79 | I ($$BROKER^XWBLIB)&(FROM'="M") D ; Combinations already written to global.
|
---|
| 80 | .S ORQDAT="",ORQCNT=1
|
---|
| 81 | .F S ORQDAT=$G(Y(ORQCNT)) Q:ORQDAT="" D
|
---|
| 82 | ..S ^TMP("OR",$J,"PATIENTS",ORQCNT,0)=ORQDAT
|
---|
| 83 | ..S ORQCNT=ORQCNT+1
|
---|
| 84 | I ('$$BROKER^XWBLIB) S Y=FROM_";"_+$G(IEN)_";"_$G(BEG)_";"_$G(END) ; MKB 10/13/95
|
---|
| 85 | Q
|
---|
| 86 | DEFSORT(Y) ; Return user's default sort.
|
---|
| 87 | ; SLC/PKS - 4/6/2001
|
---|
| 88 | ;
|
---|
| 89 | N ORSORT,ORSECT,ORPARAM
|
---|
| 90 | ;
|
---|
| 91 | I ('$D(DUZ)) S Y="Unable to determine DUZ." Q
|
---|
| 92 | S ORSECT=$G(^VA(200,DUZ,5))
|
---|
| 93 | I +ORSECT>0 S ORSECT=$P(ORSECT,U)
|
---|
| 94 | S Y="A" ; Default of "Alpha" sort.
|
---|
| 95 | S ORPARAM="ORLP DEFAULT LIST ORDER"
|
---|
| 96 | S ORSORT=$$GET^XPAR("USR^SRV.`"_$G(ORSECT)_"^DIV^SYS^PKG",ORPARAM,1,"I")
|
---|
| 97 | I (ORSORT'="") S Y=ORSORT
|
---|
| 98 | ;
|
---|
| 99 | Q
|
---|
| 100 | ;
|
---|
| 101 | PNAMWRIT(ORROOT,ORDFN) ; Write patient name to ^TMP global.
|
---|
| 102 | ;
|
---|
| 103 | ; Variables used:
|
---|
| 104 | ;
|
---|
| 105 | ; ORDFN = Passed patient DFN.
|
---|
| 106 | ; ORNAME = Patient name.
|
---|
| 107 | ; ORROOT = ^TMP root passed by calling code.
|
---|
| 108 | ; ORWRITE = Holder for ^TMP node for writing.
|
---|
| 109 | ;
|
---|
| 110 | N ORNAME,ORWRITE
|
---|
| 111 | S ORROOT=ORROOT_"," ; Add necessary comma.
|
---|
| 112 | ;
|
---|
| 113 | S ORNAME="" ; Initializae.
|
---|
| 114 | S ORNAME=$G(^DPT(ORDFN,0)) ; Get zero node pt. data.
|
---|
| 115 | S ORNAME=$P(ORNAME,U) ; Extract pt. name only.
|
---|
| 116 | I ORNAME="" Q 0 ; Problem - punt.
|
---|
| 117 | ;
|
---|
| 118 | ; Create naked reference string for writing to ^TMP:
|
---|
| 119 | S ORWRITE=ORROOT_""""_ORNAME_""""_","_ORDFN_")"
|
---|
| 120 | S @ORWRITE=ORDFN_U_ORNAME ; Write to ^TMP.
|
---|
| 121 | ;
|
---|
| 122 | Q 1
|
---|
| 123 | ;
|
---|
| 124 | RPLMAKE(Y,ORTL) ; Make global restricted pt. array from Team List.
|
---|
| 125 | ;
|
---|
| 126 | ; Variables used:
|
---|
| 127 | ;
|
---|
| 128 | ; ORDFN = Holder for patient DFN.
|
---|
| 129 | ; ORJ = Holds $J value.
|
---|
| 130 | ; ORREAD = Holder for ^TMP root to kill.
|
---|
| 131 | ; ORRET = Returned value from function call.
|
---|
| 132 | ; ORROOT = ^TMP root to pass.
|
---|
| 133 | ; ORTL = Team List IEN.
|
---|
| 134 | ; ORX = Working variable used in $ORDER statement.
|
---|
| 135 | ; Y = Returned value (same as ORJ).
|
---|
| 136 | ;
|
---|
| 137 | N ORDFN,ORJ,ORREAD,ORRET,ORROOT,ORX
|
---|
| 138 | ;
|
---|
| 139 | I ORTL="" S Y="" Q ; No Team List IEN passed.
|
---|
| 140 | I $G(^OR(100.21,ORTL,0))="" S Y="" Q ; No such Team List.
|
---|
| 141 | ;
|
---|
| 142 | S (ORJ,Y)=$J ; Assign returned value.
|
---|
| 143 | S ORROOT="^TMP("_"""ORRPL"""_"," ; Initial setting.
|
---|
| 144 | S ORROOT=ORROOT_ORJ_","_"""B""" ; Add job number, "B."
|
---|
| 145 | S ORREAD=ORROOT_")" ; Assign "kill" root.
|
---|
| 146 | K @ORREAD ; Kill old, if any.
|
---|
| 147 | ;
|
---|
| 148 | ; From Team List B x-ref, obtain patients, create new ^TMP entries:
|
---|
| 149 | S ORX="" ; Initialize.
|
---|
| 150 | F S ORX=$O(^OR(100.21,ORTL,10,"B",ORX)) Q:ORX="" D
|
---|
| 151 | .S ORDFN=$P(ORX,";") ; Extract patient DFN.
|
---|
| 152 | .S ORRET=$$PNAMWRIT(ORROOT,ORDFN) ; Call that writes to ^TMP.
|
---|
| 153 | ;
|
---|
| 154 | Q
|
---|
| 155 | ;
|
---|
| 156 | RPLREAD(Y,ORJ,ORFROM,ORDIR) ; Read disk-based patient array from TMP.
|
---|
| 157 | ;
|
---|
| 158 | ; Variables used:
|
---|
| 159 | ;
|
---|
| 160 | ; ORCNT = Counter variable.
|
---|
| 161 | ; ORDIR = Direction to move through list.
|
---|
| 162 | ; ORFROM = Starting point from which to move through list.
|
---|
| 163 | ; ORI = Counter variable.
|
---|
| 164 | ; ORIEN = Record IEN holder.
|
---|
| 165 | ; ORJ = Job number to use in ^TMP global root.
|
---|
| 166 | ; ORROOT = ^TMP global file root.
|
---|
| 167 | ; ORZ = Temporary value holder.
|
---|
| 168 | ; Y = Returned array.
|
---|
| 169 | ;
|
---|
| 170 | N ORCNT,ORI,ORIEN,ORROOT,ORZ
|
---|
| 171 | ;
|
---|
| 172 | I $P(ORFROM,U,2)'="" S ORFROM=$P(ORFROM,U,2)
|
---|
| 173 | ;
|
---|
| 174 | S ORROOT="^TMP("_"""ORRPL"""_","_ORJ ; Initial setting.
|
---|
| 175 | S ORROOT=ORROOT_","_"""B""" ; Add final text.
|
---|
| 176 | ;
|
---|
| 177 | ; Check for existence of data:
|
---|
| 178 | I '$D(@(ORROOT_")")) S Y(0)="No data available." Q
|
---|
| 179 | ;
|
---|
| 180 | S ORROOT=ORROOT_"," ; Add comma.
|
---|
| 181 | S ORCNT=44 ; Initialize to maximum.
|
---|
| 182 | S ORI=0 ; Initialize.
|
---|
| 183 | ;
|
---|
| 184 | ; Loop through ^TMP entries for data to return:
|
---|
| 185 | F S ORFROM=$O(@(ORROOT_""""_ORFROM_""""_")"),ORDIR) Q:ORFROM="" D Q:ORI=ORCNT
|
---|
| 186 | .;
|
---|
| 187 | .; Sub-loop for entries up to ORCNT maximum:
|
---|
| 188 | .S ORIEN=0 ; Initialize.
|
---|
| 189 | .F S ORIEN=$O(@(ORROOT_""""_ORFROM_""""_","_ORIEN_")")) Q:'ORIEN D Q:ORI=ORCNT
|
---|
| 190 | ..S ORI=ORI+1 ; Increment counter.
|
---|
| 191 | ..;
|
---|
| 192 | ..; Assign return array:
|
---|
| 193 | ..S Y(ORI)=@(ORROOT_""""_ORFROM_""""_","_ORIEN_")")
|
---|
| 194 | ;
|
---|
| 195 | Q
|
---|
| 196 | ;
|
---|
| 197 | RPLCLEAN(Y,ORJ) ; Kill global data using passed global root value.
|
---|
| 198 | ;
|
---|
| 199 | ; Variables used:
|
---|
| 200 | ;
|
---|
| 201 | ; ORJ = Job number to use in ^TMP global root.
|
---|
| 202 | ; ORROOT = Root of ^TMP global to kill.
|
---|
| 203 | ; Y = Returned RPC value.
|
---|
| 204 | ;
|
---|
| 205 | N ORROOT
|
---|
| 206 | ;
|
---|
| 207 | S Y=1 ; Initialize.
|
---|
| 208 | S ORROOT="^TMP("_"""ORRPL"""_"," ; Initial setting.
|
---|
| 209 | S ORROOT=ORROOT_ORJ_","_"""B"""_")" ; Add rest.
|
---|
| 210 | K @ORROOT ; Kill global data.
|
---|
| 211 | ;
|
---|
| 212 | Q
|
---|
| 213 | ;
|
---|