[613] | 1 | PSBMLLKU ;BIRMINGHAM/TEJ-BCMA RPC LOOKUP UTLILITIES ;Mar 2004
|
---|
| 2 | ;;3.0;BAR CODE MED ADMIN;**3,9,11,20,13,38,32**;Mar 2004;Build 32
|
---|
| 3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Reference/IA
|
---|
| 6 | ; EN^PSJBCMA1/2829
|
---|
| 7 | ; $$DOB^DPTLK1/3266
|
---|
| 8 | ; $$SSN^DPTLK1/3267
|
---|
| 9 | ; ^DPT/10035
|
---|
| 10 | ; ^XUSEC/10076
|
---|
| 11 | ; File 52.6/436
|
---|
| 12 | ; File 52.7/437
|
---|
| 13 | ; File 50/221
|
---|
| 14 | ; File 211.4/1409
|
---|
| 15 | ;
|
---|
| 16 | RPC(RESULTS,PSBREC) ; Remote Procedure Call Entry Point.
|
---|
| 17 | ;
|
---|
| 18 | S RESULTS="" D @(PSBREC(0)_"(.RESULTS,.PSBREC)") Q
|
---|
| 19 | Q
|
---|
| 20 | ;
|
---|
| 21 | ADMLKUP(RESULTS,PSBREC) ;
|
---|
| 22 | ; Lookup ADMinistrations per DFN and search DATE
|
---|
| 23 | ; input - PSBREC(1) DFN
|
---|
| 24 | ; PSBREC(2) Search DATE
|
---|
| 25 | ;
|
---|
| 26 | ; outpt - RESULTS (array)
|
---|
| 27 | ; (Administrations returned will be dated = to Search Date
|
---|
| 28 | ;
|
---|
| 29 | ;
|
---|
| 30 | K RESULTS
|
---|
| 31 | S DFN=PSBREC(1),PSBSRCH=$G(PSBREC(2)) I $G(PSBSRCH)']"" D NOW^%DTC S PSBSRCH=$P(%,".")
|
---|
| 32 | S PSBDT=PSBSRCH,PSBCNT=0 S:PSBSRCH'["." PSBSRCH=PSBSRCH+.9
|
---|
| 33 | S RESULTS(0)=1,RESULTS(1)="-1^No Meds Found!"
|
---|
| 34 | F S PSBSRCH=$O(^PSB(53.79,"AADT",DFN,PSBSRCH),-1) Q:'PSBSRCH!(PSBSRCH<PSBDT) D
|
---|
| 35 | .S PSBIEN=""
|
---|
| 36 | .F S PSBIEN=$O(^PSB(53.79,"AADT",DFN,PSBSRCH,PSBIEN),-1) Q:'PSBIEN D:'$D(^PSB(53.79,PSBIEN)) KILLAADT Q:'$D(^PSB(53.79,PSBIEN)) D:$$CHKKEY(PSBIEN)
|
---|
| 37 | ..L +^PSB(53.79,PSBIEN):1
|
---|
| 38 | ..I L -^PSB(53.79,PSBIEN)
|
---|
| 39 | ..E Q
|
---|
| 40 | ..S PSBXORDN=$$GET1^DIQ(53.79,PSBIEN_",",.11) Q:'$D(^PSB(53.79,"AORDX",DFN,PSBXORDN,PSBSRCH))
|
---|
| 41 | ..Q:($$GET1^DIQ(53.79,PSBIEN_",",.06,"I")>PSBSRCH)
|
---|
| 42 | ..Q:($$GET1^DIQ(53.79,PSBIEN_",",.09,"I")="N")
|
---|
| 43 | ..S PSBCNT=PSBCNT+1,RESULTS(PSBCNT)=PSBIEN
|
---|
| 44 | ..S $P(RESULTS(PSBCNT),U,2)=PSBSRCH
|
---|
| 45 | ..S $P(RESULTS(PSBCNT),U,3)=$$GET1^DIQ(53.79,PSBIEN_",",.08)
|
---|
| 46 | ..S:$$GET1^DIQ(53.79,PSBIEN_",",.26) $P(RESULTS(PSBCNT),U,4)=$$GET1^DIQ(53.79,PSBIEN_",",.26)
|
---|
| 47 | ..S $P(RESULTS(PSBCNT),U,5)=$S($$GET1^DIQ(53.79,PSBIEN_",",.09,"I")']"":"U",1:$$GET1^DIQ(53.79,PSBIEN_",",.09,"I"))
|
---|
| 48 | ..D ; Get order information
|
---|
| 49 | ...K ^TMP("PSJ1",$J) D EN^PSJBCMA1(DFN,PSBXORDN,1)
|
---|
| 50 | ...S $P(RESULTS(PSBCNT),U,3)=$P(^TMP("PSJ1",$J,2),U,2) ;OItem_" "_Dosage Form
|
---|
| 51 | ...S $P(RESULTS(PSBCNT),U,6)=$P(^TMP("PSJ1",$J,4),U) ;Sched Type
|
---|
| 52 | ...K ^TMP("PSJ1",$J)
|
---|
| 53 | ..S $P(RESULTS(PSBCNT),U,7)=$$GET1^DIQ(53.79,PSBIEN_",",.06,"I")
|
---|
| 54 | ..S $P(RESULTS(PSBCNT),U,8)=$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY:INITIAL")
|
---|
| 55 | ..S:$D(^PSB(53.79,PSBIEN,.2)) $P(RESULTS(PSBCNT),U,9)=$P(^PSB(53.79,PSBIEN,.2),U),$P(RESULTS(PSBCNT),U,10)=$P(^PSB(53.79,PSBIEN,.2),U,2)
|
---|
| 56 | S:+$G(RESULTS(1))>0 $P(RESULTS(0),U)=PSBCNT
|
---|
| 57 | Q
|
---|
| 58 | ;
|
---|
| 59 | CHKKEY(PSBIENX) ;
|
---|
| 60 | I '(($D(^XUSEC("PSB MANAGER",DUZ)))!($$GET1^DIQ(53.79,+PSBIENX,.07,"I")=DUZ)) Q 0
|
---|
| 61 | Q 1
|
---|
| 62 | ;
|
---|
| 63 | PTLKUP(RESULTS,PSBREC) ; Patient lookup handled separately for security
|
---|
| 64 | ; input - PSBREC (array) User entered patient lookup data
|
---|
| 65 | ;
|
---|
| 66 | ; outpt - RESULTS (array)
|
---|
| 67 | ; (Person(s) in PATIENT File (#2) meeting search criteria)
|
---|
| 68 | ;
|
---|
| 69 | ;
|
---|
| 70 | K RESULTS
|
---|
| 71 | S PSBDATA=$E(PSBREC(1),1,60)
|
---|
| 72 | S PSBDATA1=PSBDATA
|
---|
| 73 | N PSBINDX S PSBINDX="" K ^TMP("DILIST",$J)
|
---|
| 74 | I $E(PSBDATA,$L(PSBDATA)-10,60)=" [MAS WARD]" S PSBINDX="CN" S PSBDATA=$P(PSBDATA," [MAS WARD]")
|
---|
| 75 | I $E(PSBDATA,$L(PSBDATA)-11,60)=" [NURS UNIT]" S PSBINDX="CN" S PSBDATA=$P(PSBDATA," [NURS UNIT]") D
|
---|
| 76 | .K PSBPT S PSBPT(0)=0
|
---|
| 77 | .S PSBZ=0 F S PSBZ=$O(^NURSF(211.4,PSBZ)) Q:PSBZ'?.N I $$GET1^DIQ(211.4,PSBZ_",",.01)=PSBDATA S PSBY=PSBZ Q
|
---|
| 78 | .K PSBDATA S PSBDATA=""
|
---|
| 79 | .S PSBX=0 F S PSBX=$O(^NURSF(211.4,PSBY,3,PSBX)) Q:PSBX="" S PSBDATA(PSBX)=$$GET1^DIQ(42,$P(^NURSF(211.4,PSBY,3,PSBX,0),U)_",",.01)
|
---|
| 80 | I PSBINDX="" S PSBINDX=$S(PSBDATA?9N.1P:"SSN",PSBDATA?4N.1P:"BS5^BS",1:PSBINDX)
|
---|
| 81 | I ($O(PSBDATA(""))'>0) D FIND^DIC(2,"","@;.01;.02;.03;.09","MP",PSBDATA,200,PSBINDX)
|
---|
| 82 | I ($O(PSBDATA(""))>0) D
|
---|
| 83 | .S PSBX="",PSBY=1 F S PSBX=$O(PSBDATA(PSBX)) Q:PSBX="" D K ^TMP("DILIST",$J) Q:$P(PSBPT(0),U,3)=1
|
---|
| 84 | ..D FIND^DIC(2,"","@;.01;.02;.03;.09","MP",PSBDATA(PSBX),200,PSBINDX)
|
---|
| 85 | ..S PSBZ=0 F S PSBZ=$O(^TMP("DILIST",$J,PSBZ)) Q:PSBZ="" S PSBPT(PSBY,0)=^TMP("DILIST",$J,PSBZ,0),PSBPT(0)=PSBY,PSBY=PSBY+1 I PSBY>200 S $P(PSBPT(0),U,3)=1
|
---|
| 86 | K:+$G(PSBPT(0))=0 PSBPT
|
---|
| 87 | I $D(PSBPT) M ^TMP("DILIST",$J)=PSBPT
|
---|
| 88 | I $P($G(^TMP("DILIST",$J,0)),U,3) D Q
|
---|
| 89 | .S RESULTS(0)=1,RESULTS(1)="-1^Too many patients found matching '"_PSBDATA1_"'. Please be more specific."
|
---|
| 90 | I $D(^TMP("DILIST",$J,0)) D
|
---|
| 91 | .F PSBXX=0:0 S PSBXX=$O(^TMP("DILIST",$J,PSBXX)) Q:'PSBXX D
|
---|
| 92 | ..S RESULTS(PSBXX)=$$PTREC(+^TMP("DILIST",$J,PSBXX,0))
|
---|
| 93 | I '$D(RESULTS) S RESULTS(0)=1,RESULTS(1)="-1^No patients matching '"_PSBDATA1_"'"
|
---|
| 94 | E S RESULTS(0)=+$O(RESULTS(""),-1)
|
---|
| 95 | Q
|
---|
| 96 | ;
|
---|
| 97 | PTREC(DFN) ;
|
---|
| 98 | ; Extrinsic to return a Pt Rec in standard list format
|
---|
| 99 | N PSBXX
|
---|
| 100 | S PSBXX=$G(^DPT(DFN,0))
|
---|
| 101 | S PSBXX=DFN_U_$P(PSBXX,U,1)_U_$P(PSBXX,U,2)_U_$P(PSBXX,U,3)_U_$P(PSBXX,U,9)
|
---|
| 102 | S $P(PSBXX,U,6)=$$GET1^DIQ(2,DFN_",",.1)
|
---|
| 103 | S $P(PSBXX,U,7)=$$GET1^DIQ(2,DFN_",",.101)
|
---|
| 104 | S $P(PSBXX,U,10)=$$DOB^DPTLK1(DFN)
|
---|
| 105 | S $P(PSBXX,U,11)=$$SSN^DPTLK1(DFN)
|
---|
| 106 | Q PSBXX
|
---|
| 107 | ;
|
---|
| 108 | SELECTAD(RESULTS,PSBREC) ; Select Administration
|
---|
| 109 | ;
|
---|
| 110 | ; Process the SELECTed ADministration
|
---|
| 111 | ; input - PSBREC(1) = PSB Med Log File (#53.79) IEN
|
---|
| 112 | ;
|
---|
| 113 | ;
|
---|
| 114 | ; outpt - RESULTS (array)
|
---|
| 115 | ; (Administration data that can be subsequently updated via GUI MED LOG EDIT)
|
---|
| 116 | ;
|
---|
| 117 | ;
|
---|
| 118 | K RESULTS,PSBXIV,PSBPTCHX
|
---|
| 119 | N PSBIEN,PSBCNT,PSBX S PSBIEN=PSBREC(1),PSBCNT=2
|
---|
| 120 | ; Construct form data Patient^SSN^Med^BagID^AdminStat^AdminD/T^InjctSt^PRNReas^PRNEff^DisDrg^UntsGiven^Unt^
|
---|
| 121 | S RESULTS(0)=0
|
---|
| 122 | D:$$CHKKEY(PSBIEN)
|
---|
| 123 | .L +^PSB(53.79,PSBIEN):1
|
---|
| 124 | .E I $P(^PSB(53.79,PSBIEN,0),U,9)]"" S PSBCNT=1,RESULTS(1)="-1^ This administration is being modified by another process at this moment." L -^PSB(53.79,PSBIEN) Q
|
---|
| 125 | .S $P(RESULTS(1),U)=PSBIEN
|
---|
| 126 | .S $P(RESULTS(1),U,2)=$$GET1^DIQ(53.79,PSBIEN_",",.01,"I")
|
---|
| 127 | .S $P(RESULTS(1),U,3)=$$GET1^DIQ(53.79,PSBIEN_",",.01)
|
---|
| 128 | .S $P(RESULTS(1),U,4)=$$GET1^DIQ(2,$P(RESULTS(1),U,2)_",",.09)
|
---|
| 129 | .S $P(RESULTS(1),U,5)=$$GET1^DIQ(53.79,PSBIEN_",",.08,"I")_"~"_$$GET1^DIQ(53.79,PSBIEN_",",.08)
|
---|
| 130 | .S $P(RESULTS(1),U,6)=$$GET1^DIQ(53.79,PSBIEN_",",.26)
|
---|
| 131 | .S $P(RESULTS(1),U,7)=$S($$GET1^DIQ(53.79,PSBIEN_",",.09,"I")']"":"U",1:$$GET1^DIQ(53.79,PSBIEN_",",.09,"I"))
|
---|
| 132 | .;
|
---|
| 133 | .D:($P(RESULTS(1),U,7)'="N")&($P(RESULTS(1),U,7)]"") SELSTTUS(.RESULTS) ; Amend RESULTS(1) data...
|
---|
| 134 | .S Y=$E($$GET1^DIQ(53.79,PSBIEN_",",.06,"I"),1,12) D DD^%DT
|
---|
| 135 | .S $P(RESULTS(1),U,8)=Y
|
---|
| 136 | .S $P(RESULTS(1),U,9)=$$GET1^DIQ(53.79,PSBIEN_",",.06,"I")
|
---|
| 137 | .S $P(RESULTS(1),U,10)=$$GET1^DIQ(53.79,PSBIEN_",",.16)
|
---|
| 138 | .S $P(RESULTS(1),U,16)=0
|
---|
| 139 | .S $P(RESULTS(2),U)=$$GET1^DIQ(53.79,PSBIEN_",",.21),$P(RESULTS(2),U,2)=$$GET1^DIQ(53.79,PSBIEN_",",.22)
|
---|
| 140 | .; Determine if there are any active IVs/Patchs per order
|
---|
| 141 | .D:$G(PSBPTCHX)
|
---|
| 142 | ..S PSBX="",PSBX="^PSB(53.79,""APATCH"","_$P(RESULTS(1),U,2)_")"
|
---|
| 143 | ..F S PSBX=$Q(@PSBX) Q:PSBX="" Q:$QS(PSBX,3)'=$P(RESULTS(1),U,2) D Q:$P(RESULTS(1),U,16)
|
---|
| 144 | ...S PSBXX=$QS(PSBX,5),PSBXXX=$S(($P(^PSB(53.79,PSBXX,0),U,9)="G")&(PSBXX'=PSBIEN):1,1:0)
|
---|
| 145 | ...I PSBXXX&($P(^PSB(53.79,PSBXX,.1),U)=$P(RESULTS(1),U,15)) S $P(RESULTS(1),U,16)=1
|
---|
| 146 | .D:$G(PSBXIV)
|
---|
| 147 | ..S PSBX="",PSBX="^PSB(53.79,""AUID"","_$P(RESULTS(1),U,2)_")"
|
---|
| 148 | ..F S PSBX=$Q(@PSBX) Q:PSBX="" Q:$QS(PSBX,3)'=$P(RESULTS(1),U,2) Q:$QS(PSBX,4)>$P(RESULTS(1),U,15) D Q:$P(RESULTS(1),U,16)
|
---|
| 149 | ...Q:$QS(PSBX,4)'=$P(RESULTS(1),U,15)
|
---|
| 150 | ...S PSBXX=$QS(PSBX,6) S:(PSBXX'=PSBIEN) $P(RESULTS(1),U,16)=$S($P(^PSB(53.79,PSBXX,0),U,9)="I":1,$P(^PSB(53.79,PSBXX,0),U,9)="S":1,1:0)
|
---|
| 151 | .;
|
---|
| 152 | .; LOOP - Place DD in RESULTS
|
---|
| 153 | .S PSBX=0 F S PSBX=$O(^PSB(53.79,PSBIEN,.5,PSBX)) Q:'(+PSBX) D
|
---|
| 154 | ..S PSBCNT=PSBCNT+1
|
---|
| 155 | ..S RESULTS(PSBCNT)="DD^"_$P(^PSB(53.79,PSBIEN,.5,PSBX,0),U)_"^"_$$GET1^DIQ(50,$P(^PSB(53.79,PSBIEN,.5,PSBX,0),U)_",",.01)
|
---|
| 156 | ..S $P(RESULTS(PSBCNT),U,4)=$P(^PSB(53.79,PSBIEN,.5,PSBX,0),U,2)_"^"_$P(^PSB(53.79,PSBIEN,.5,PSBX,0),U,3)_"^"_$P(^PSB(53.79,PSBIEN,.5,PSBX,0),U,4)
|
---|
| 157 | ..S:$P(RESULTS(PSBCNT),U,4)?1"."1.N $P(RESULTS(PSBCNT),U,4)=0_+$P(RESULTS(PSBCNT),U,4)
|
---|
| 158 | ..S:$P(RESULTS(PSBCNT),U,5)?1"."1.N $P(RESULTS(PSBCNT),U,5)=0_+$P(RESULTS(PSBCNT),U,5)
|
---|
| 159 | .; LOOP - Place ADD in RESULTS
|
---|
| 160 | .S PSBX=0 F S PSBX=$O(^PSB(53.79,PSBIEN,.6,PSBX)) Q:'(+PSBX) D
|
---|
| 161 | ..S PSBCNT=PSBCNT+1
|
---|
| 162 | ..S RESULTS(PSBCNT)="ADD^"_$P(^PSB(53.79,PSBIEN,.6,PSBX,0),U)_"^"_$$GET1^DIQ(52.6,$P(^PSB(53.79,PSBIEN,.6,PSBX,0),U)_",",.01)
|
---|
| 163 | ..S $P(RESULTS(PSBCNT),U,4)=$P(^PSB(53.79,PSBIEN,.6,PSBX,0),U,2)_"^"_$P(^PSB(53.79,PSBIEN,.6,PSBX,0),U,3)_"^"_$P(^PSB(53.79,PSBIEN,.6,PSBX,0),U,4)
|
---|
| 164 | .; LOOP - Place SOL in RESULTS
|
---|
| 165 | .S PSBX=0 F S PSBX=$O(^PSB(53.79,PSBIEN,.7,PSBX)) Q:'(+PSBX) D
|
---|
| 166 | ..S PSBCNT=PSBCNT+1
|
---|
| 167 | ..S RESULTS(PSBCNT)="SOL^"_$P(^PSB(53.79,PSBIEN,.7,PSBX,0),U)_"^"_$$GET1^DIQ(52.7,$P(^PSB(53.79,PSBIEN,.7,PSBX,0),U)_",",.01)
|
---|
| 168 | ..S $P(RESULTS(PSBCNT),U,4)=$P(^PSB(53.79,PSBIEN,.7,PSBX,0),U,2)_"^"_$P(^PSB(53.79,PSBIEN,.7,PSBX,0),U,3)_"^"_$P(^PSB(53.79,PSBIEN,.7,PSBX,0),U,4)
|
---|
| 169 | .L -^PSB(53.79,PSBIEN)
|
---|
| 170 | S:PSBCNT>0 RESULTS(0)=PSBCNT
|
---|
| 171 | Q
|
---|
| 172 | ;
|
---|
| 173 | SELSTTUS(RESULTS) ;
|
---|
| 174 | ; Provide the SELectable STaTUS
|
---|
| 175 | ;
|
---|
| 176 | ; Get TAB, ScheduleType, Current Status, provide Selectable Staus(s) in ^8
|
---|
| 177 | N PSBORTYP,PSBIVTYP,PSBINTSY,PSBCHMTY,PSBIVPSH,PSBXTAB
|
---|
| 178 | K ^TMP("PSJ1",$J) D EN^PSJBCMA1($$GET1^DIQ(53.79,PSBIEN_",",.01,"I"),$$GET1^DIQ(53.79,PSBIEN_",",.11),1)
|
---|
| 179 | I ^TMP("PSJ1",$J,0)>0 D
|
---|
| 180 | .S PSBORTYP=$TR($P(^TMP("PSJ1",$J,0),U,3),"1234567890"),PSBIVTYP=$P(^TMP("PSJ1",$J,0),U,6)
|
---|
| 181 | .S PSBINTSY=$P(^TMP("PSJ1",$J,0),U,7),PSBCHMTY=$P(^TMP("PSJ1",$J,0),U,8),PSBIVPSH=+$P($G(^TMP("PSJ1",$J,1,0)),U,2)
|
---|
| 182 | .S:$$IVPTAB^PSBVDLU3(PSBORTYP,PSBIVTYP,PSBINTSY,PSBCHMTY,PSBIVPSH) PSBXTAB="PB"
|
---|
| 183 | .D:'$D(PSBXTAB)
|
---|
| 184 | ..I PSBORTYP="U" S PSBXTAB="UD"
|
---|
| 185 | ..I PSBORTYP="V" S PSBXTAB="IV"
|
---|
| 186 | ; Set Results(1) and other flags...
|
---|
| 187 | I ^TMP("PSJ1",$J,0)>0 D
|
---|
| 188 | .S $P(RESULTS(1),U,13)=$P(^TMP("PSJ1",$J,4),U)
|
---|
| 189 | .S $P(RESULTS(1),U,14)=$P(^TMP("PSJ1",$J,1),U,10)
|
---|
| 190 | .S $P(RESULTS(1),U,15)=$P(^TMP("PSJ1",$J,0),U,3)
|
---|
| 191 | .I (PSBXTAB="UD"),($P(^TMP("PSJ1",$J,2),U,6)="PATCH") S PSBPTCHX=1
|
---|
| 192 | .I PSBXTAB="IV" S PSBXIV=1
|
---|
| 193 | .S:$G(PSBXTAB)]"" $P(RESULTS(1),U,11)=$G(PSBXTAB)
|
---|
| 194 | K ^TMP("PSJ1",$J)
|
---|
| 195 | Q
|
---|
| 196 | ;
|
---|
| 197 | KILLAADT ;
|
---|
| 198 | ; Here because there is an errorant index entry via version 1.0/2.0
|
---|
| 199 | ; Cleansing!
|
---|
| 200 | ;
|
---|
| 201 | K ^PSB(53.79,"AADT",DFN,PSBSRCH,PSBIEN)
|
---|
| 202 | Q
|
---|
| 203 | ;
|
---|