| 1 | PSJLMUTL ;BIR/MLM-INPATIENT LISTMAN UTILITIES ;29 May 98 / 8:35 AM
|
---|
| 2 | ;;5.0; INPATIENT MEDICATIONS ;**7,67,58,85,111,160**;16 DEC 97;Build 12
|
---|
| 3 | ;
|
---|
| 4 | ; Reference to ^ORD(101 is supported by DBIA #872.
|
---|
| 5 | ; Reference to ^PS(50.606 is supported by DBIA #2174.
|
---|
| 6 | ; Reference to ^PS(50.7 is supported by DBIA #2180.
|
---|
| 7 | ; Reference to ^PS(55 is supported by DBIA #2191.
|
---|
| 8 | ; Reference to ^PSDRUG is supported by DBIA #2192.
|
---|
| 9 | ; Reference to ^GMRAPEM0 is supported by DBIA #190.
|
---|
| 10 | ; Reference to ^SDAMA203 is supported by DBIA #4133.
|
---|
| 11 | ; Reference to ^VSIT is supported by DBIA #1905.
|
---|
| 12 | ;
|
---|
| 13 | NEWALL(DFN) ; Enter Allergy info.
|
---|
| 14 | ;
|
---|
| 15 | D FULL^VALM1,EN2^GMRAPEM0
|
---|
| 16 | Q
|
---|
| 17 | DISALL(DFN) ; Display brief patient info list.
|
---|
| 18 | K ^TMP("PSJALL",$J) N PSJLN,X,Y,PSGALG,PSGRALG,PSGLDR,PSJGMRAL,PSJWHERE S PSJWHERE="PSJLMUTL"
|
---|
| 19 | D ATS^PSJMUTL(57,57,2)
|
---|
| 20 | I (PSJGMRAL=0) S ^TMP("PSJALL",$J,1,0)=" Allergies/Reactions: "_"NKA",PSJLN=2 G NARRATIV
|
---|
| 21 | I (PSJGMRAL="") S ^TMP("PSJALL",$J,1,0)=" Allergies/Reactions: No Allergy Assessment",PSJLN=2 G NARRATIV
|
---|
| 22 | I ($G(PSGVALG(1))="NKA")!((PSGVALG=0)&(PSGALG=0)) D
|
---|
| 23 | .S ^TMP("PSJALL",$J,1,0)=" Allergies: "_$G(PSGVALG(1)),PSJLN=2,X=1
|
---|
| 24 | I ($G(PSGVALG(1))'="NKA")&((PSGVALG>0)!(PSGALG>0)) D
|
---|
| 25 | .S ^TMP("PSJALL",$J,1,0)="Allergies - Verified: "_$G(PSGVALG(1)),PSJLN=2,X=1
|
---|
| 26 | .F S X=$O(PSGVALG(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGVALG(X),PSJLN=PSJLN+1
|
---|
| 27 | .S ^TMP("PSJALL",$J,PSJLN,0)=" Non-Verified: "_$S($G(PSGALG(1))=0:"",1:$G(PSGALG(1))),PSJLN=PSJLN+1,X=1
|
---|
| 28 | .F S X=$O(PSGALG(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGALG(X),PSJLN=PSJLN+1
|
---|
| 29 | D RAD^PSJMUTL
|
---|
| 30 | I ($G(PSGVADR(1))="NKA")!((PSGVADR=0)&(PSGADR=0)) D
|
---|
| 31 | .S ^TMP("PSJALL",$J,PSJLN,0)="",^TMP("PSJALL",$J,PSJLN+1,0)=" Adverse Reactions: "_$G(PSGADR(1)),PSJLN=PSJLN+2,X=1
|
---|
| 32 | I ($G(PSGVADR(1))'="NKA")&((PSGVADR>0)!(PSGADR>0)) D
|
---|
| 33 | .S ^TMP("PSJALL",$J,PSJLN,0)="",^TMP("PSJALL",$J,PSJLN+1,0)="Reactions - Verified: "_$G(PSGVADR(1)),PSJLN=PSJLN+2,X=1
|
---|
| 34 | .F S X=$O(PSGVADR(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGVADR(X),PSJLN=PSJLN+1
|
---|
| 35 | .S ^TMP("PSJALL",$J,PSJLN,0)=" Non-Verified: "_$G(PSGADR(1)),PSJLN=PSJLN+2,X=1
|
---|
| 36 | .F S X=$O(PSGADR(X)) Q:'X S ^TMP("PSJALL",$J,PSJLN,0)=" "_PSGADR(X),PSJLN=PSJLN+1
|
---|
| 37 | ;
|
---|
| 38 | NARRATIV ; print inpatient/outpatient narratives
|
---|
| 39 | N PSJCLHD
|
---|
| 40 | S ^TMP("PSJALL",$J,PSJLN,0)="" D SETNAR("PSJALL",$G(^PS(55,DFN,5.3)),"In")
|
---|
| 41 | S ^TMP("PSJALL",$J,PSJLN+1,0)="" D SETNAR("PSJALL",$G(^PS(55,DFN,1)),"Out")
|
---|
| 42 | D SDA S PSJLN=0 F X=0:0 S X=$O(^TMP("PSJALL",$J,X)) Q:'X S PSJLN=PSJLN+1
|
---|
| 43 | I '$G(PSJCLHD)!'$G(VALMCNT) S VALMCNT=PSJLN
|
---|
| 44 | Q
|
---|
| 45 | ;
|
---|
| 46 | SDA N PSJPAD,PSJCLIN,PSJCLINO,PSJAPD,PSJSCI,PSJCLOK,VAERR K ^TMP("PSJVSIT"),PSJDBUN S $P(PSJPAD," ",26)=" "
|
---|
| 47 | Q:'$$PATCH^XPDUTL("SD*5.3*285")
|
---|
| 48 | D NOW^%DTC S VASD("F")=$P(%,".")-1
|
---|
| 49 | D SDA^VADPT S:$G(VAERR)=2 (PSJCLHD,PSJDBUN)=2 I $O(^UTILITY("VASD",$J,"")) M PSJUTL=^UTILITY("VASD",$J) D
|
---|
| 50 | . S PSJSCDT0=0
|
---|
| 51 | . F S PSJSCDT0=$O(PSJUTL(PSJSCDT0)) Q:'PSJSCDT0 D
|
---|
| 52 | .. S PSJCLINO=$P($G(PSJUTL(PSJSCDT0,"E")),U,2),PSJCLIN=$P($G(PSJUTL(PSJSCDT0,"I")),U,2)
|
---|
| 53 | .. S PSJSCI=$G(PSJUTL(PSJSCDT0,"I")),PSJAPD=$$FMTE^XLFDT(+PSJSCI) Q:(PSJCLIN="")!(PSJAPD="")
|
---|
| 54 | .. S PSJCLOK=1 D SDAUTHCL^SDAMA203(PSJCLIN,.PSJCLOK) Q:(PSJCLOK<1)
|
---|
| 55 | .. S ^TMP("PSJVSIT",$J,+PSJSCI,PSJCLIN,"V")=$E(PSJCLINO_PSJPAD,1,25)_" "_$TR(PSJAPD,"@","/"),PSJCLHD=1
|
---|
| 56 | .. D ENC(DFN,PSJCLIN)
|
---|
| 57 | I $G(PSJCLHD) S PSJLN=PSJLN+1 S ^TMP("PSJALL",$J,PSJLN,0)="Clinic:"_$E(PSJPAD,1,20)_"Date/Time of Appointment:",PSJLN=PSJLN+1 I $G(PSJCLHD)=2 D
|
---|
| 58 | . S ^TMP("PSJALL",$J,PSJLN,0)=" Scheduling database is unavailable",PSJLN=PSJLN+1
|
---|
| 59 | N VDAT S VDAT=0 F S VDAT=$O(^TMP("PSJVSIT",$J,VDAT)) Q:'VDAT S VCLIN=0 F S VCLIN=$O(^TMP("PSJVSIT",$J,VDAT,VCLIN)) Q:'VCLIN D
|
---|
| 60 | . F VTYP="E","V" S VDATA=$G(^TMP("PSJVSIT",$J,VDAT,VCLIN,VTYP)) I VDATA]"" S ^TMP("PSJALL",$J,PSJLN,0)=VDATA,PSJLN=PSJLN+1
|
---|
| 61 | I $G(PSJCLHD) S VALMCNT=((PSJLN+11\11)*11),PSJX=$O(^TMP("PSJALL",$J,9999),-1) ; F I=PSJX:1:VALMCNT S ^TMP("PSJALL",$J,I,0)=""
|
---|
| 62 | K PSJUTL,PSJCLHD
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | ENC(SDPATDFN,SDCLIEN) ;
|
---|
| 66 | N SDFROM,DT,SUBVIS,VIS S SDSTART=$$FMADD^XLFDT($P(PSGDT,"."),-1),SDEND=$$FMADD^XLFDT($P(PSGDT,"."),+365) K ^TMP("VSIT",$J)
|
---|
| 67 | D SELECTED^VSIT(SDPATDFN,SDSTART,SDEND,SDCLIEN) N VIS S VIS=0 F S VIS=$O(^TMP("VSIT",$J,VIS)) Q:'VIS D
|
---|
| 68 | . S SUBVIS=0 F S SUBVIS=$O(^TMP("VSIT",$J,VIS,SUBVIS)) Q:'SUBVIS D
|
---|
| 69 | .. S PSJSCI=$P(^TMP("VSIT",$J,VIS,SUBVIS),U),PSJAPD=$$FMTE^XLFDT(PSJSCI,1) Q:PSJSCI<1!(PSJAPD="")
|
---|
| 70 | .. S ^TMP("PSJVSIT",$J,PSJSCI,PSJCLIN,"E")=$E(PSJCLINO_PSJPAD,1,25)_" "_$TR(PSJAPD,"@","/")_" *Encounter",PSJCLHD=1
|
---|
| 71 | Q
|
---|
| 72 | ;
|
---|
| 73 | SETNAR(SUB,NARR,TYPE) ; Set up Narrative info.
|
---|
| 74 | S NARR=TYPE_"patient Narrative: "_NARR,Y="" S:TYPE="In" NARR=" "_NARR
|
---|
| 75 | S START=1 F D Q:NARR=""
|
---|
| 76 | .I $L($P(NARR," "))>79 S PSJ=$E(NARR,START,START+79),NARR=$E(NARR,START+80,$L(NARR)) Q
|
---|
| 77 | .I $L(NARR)>79 S PSJ=$P(NARR," ",1,$L($E(NARR,1,80)," ")-1),NARR=$E($P(NARR,PSJ,2),2,$L(NARR)) D SET Q
|
---|
| 78 | .S PSJ=NARR,NARR="" D SET
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | SET ; Set ^TMP for narratives.
|
---|
| 82 | S ^TMP(SUB,$J,PSJLN,0)=PSJ,PSJLN=PSJLN+1
|
---|
| 83 | Q
|
---|
| 84 | ;
|
---|
| 85 | ACTIONS() ;
|
---|
| 86 | N DIC,X,Y
|
---|
| 87 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
| 88 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
| 89 | I Y="PSJU LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
| 90 | I Y="PSJU LM RENEW" Q $S(PSGACT["R":1,1:0)
|
---|
| 91 | I Y="PSJ LM HOLD" Q $S(PSGACT["H":1,1:0)
|
---|
| 92 | I Y="PSJU LM VERIFY" Q $S(PSGACT["V":1,1:0)
|
---|
| 93 | I Y="PSJ LM EDIT NEW" Q $S(PSGACT["E":1,1:0)
|
---|
| 94 | I Y="PSJ LM FLAG" Q $S(PSGACT["G":1,1:0)
|
---|
| 95 | Q 1
|
---|
| 96 | RNACT() ;
|
---|
| 97 | I '$G(PSJRNF),'$G(PSJIRNF) Q 0
|
---|
| 98 | NEW X S X=$G(^PS(53.1,+PSJORD,0))
|
---|
| 99 | S PSGACT=""
|
---|
| 100 | I $S(+$P(X,U,13):1,$G(PSJRNF)&($P(X,U,4)="U"):1,$G(PSJIRNF)&($P(X,U,4)'="U"):1,1:0) S PSGACT="BFDE"
|
---|
| 101 | NEW X,Y
|
---|
| 102 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
| 103 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
| 104 | I Y="PSJ LM BYPASS" Q $S(PSGACT["B":1,1:0)
|
---|
| 105 | I Y="PSJ LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
| 106 | I Y="PSJI LM DISCONTINUE" Q $S(PSGACT["D":1,1:0)
|
---|
| 107 | I Y="PSJI LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
| 108 | I Y="PSJI LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
| 109 | I Y="PSJ LM FLAG" Q 0
|
---|
| 110 | Q 1
|
---|
| 111 | ;
|
---|
| 112 | TECHACT() ; Allowable actions for IV technician (PSJI PHARM TECH)
|
---|
| 113 | Q:'$G(PSJITECH) 0
|
---|
| 114 | NEW X S X=$G(^PS(53.1,+PSJORD,0))
|
---|
| 115 | I $S(+$P(X,U,13):1,$P(X,U,4)'="U":1,1:0) S PSGACT="F"
|
---|
| 116 | N DIC,X,Y
|
---|
| 117 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
| 118 | I Y="PSJ LM DC" Q $S(PSGACT["D":1,1:0)
|
---|
| 119 | I Y="PSJ LM BYPASS" Q $S(PSGACT["B":1,1:0)
|
---|
| 120 | I Y="PSJ LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
| 121 | I Y="PSJI LM DISCONTINUE" Q $S(PSGACT["D":1,1:0)
|
---|
| 122 | I Y="PSJI LM EDIT" Q $S(PSGACT["E":1,1:0)
|
---|
| 123 | I Y="PSJI LM FINISH" Q $S(PSGACT["F":1,1:0)
|
---|
| 124 | I Y="PSJ LM FLAG" Q 0
|
---|
| 125 | Q 1
|
---|
| 126 | PATINFO() ; Determines if detailed allergy info can be displayed.
|
---|
| 127 | S Y=$P($G(^ORD(101,+$G(^ORD(101,DA(1),10,DA,0)),0)),U) I Y="" Q 0
|
---|
| 128 | I Y="PSJ LM SHOW PROFILE",$D(PSJLMPRO) Q 0
|
---|
| 129 | Q 1
|
---|
| 130 | HIDDEN(CHK) ; Determines if certain Hidden actions are to be available.
|
---|
| 131 | I CHK="JUMP",'$G(PSJPNV) D NA("Jump is only available through Non-Verified/Pending Orders option.") Q 0
|
---|
| 132 | I CHK="SPEED",'$D(PSJUDPRF) D NA("Speed options are only available from the Unit Dose Order Entry Profile.") Q 0
|
---|
| 133 | Q 1
|
---|
| 134 | ;
|
---|
| 135 | NA(TXT) ;
|
---|
| 136 | D FULL^VALM1 W !!,TXT,!! N DIR S DIR(0)="E" D ^DIR
|
---|
| 137 | Q
|
---|
| 138 | ;
|
---|
| 139 | UPR(DFN) ; UPDATE PATIENT SPECIFIC DATA IN 55
|
---|
| 140 | N DIE,DR S PSJC10=VALMCNT
|
---|
| 141 | S DA=DFN,DIE="^PS(55,",DR="62.2;62.01" D ^DIE,DISALL^PSJLMUTL(DFN)
|
---|
| 142 | S VALMCNT=PSJC10 K PSJC10
|
---|
| 143 | Q
|
---|
| 144 | ;
|
---|
| 145 | DETALL(DFN) ; Enter Detailed Allergy Display list.
|
---|
| 146 | D EN^VALM("PSJ LM ALLERGY DISPLAY")
|
---|
| 147 | Q
|
---|
| 148 | BRFALL(DFN) ;
|
---|
| 149 | D EN^VALM("PSJ LM BRIEF PATIENT INFO")
|
---|
| 150 | Q
|
---|
| 151 | PAUSE ;
|
---|
| 152 | N DIR S DIR(0)="E" D ^DIR
|
---|
| 153 | Q
|
---|
| 154 | DRUGNAME(DFN,ON) ; Find drug name to display
|
---|
| 155 | ;If order is in 55:
|
---|
| 156 | ;.If Dosage Ordered is found, returns OI_U_Dosage Ordered.
|
---|
| 157 | ;.If no Dosage Ordered, returns Dispense Drug only.
|
---|
| 158 | ;If order in 53.1:
|
---|
| 159 | ;.If Dosage Ordered, returns OI_U_Dosage Ordered.
|
---|
| 160 | ;.If Dispense Drug is found, returns Dispense Drug name_U_Instructions.
|
---|
| 161 | ;.If no dispense drug, returns OI_U_Instructions.
|
---|
| 162 | I ON["U" D Q DN
|
---|
| 163 | .S OIND=$G(^PS(55,DFN,5,+ON,.2))
|
---|
| 164 | .I $P(OIND,U,2)]"",($G(^PS(50.7,+OIND,0))]"") S DN=$$OINAME(OIND)_U_.2 Q
|
---|
| 165 | .S X=+$O(^PS(55,DFN,5,+ON,1,0)),X=$G(^PS(55,DFN,5,+ON,1,X,0)) I $P(X,U)]"" S DN=$$DDNAME(+X)_"^^"_$P(X,"^",2) Q ;$S($P(OIND,U,2)]"":.2,1:.3) Q
|
---|
| 166 | .S DN=$$OINAME(+OIND)_U_.3 Q
|
---|
| 167 | S OIND=$G(^PS(53.1,+ON,.2)) Q:$P(OIND,U,2)]"" $$OINAME(OIND)_U_.2
|
---|
| 168 | S X=+$O(^PS(53.1,+ON,1,0)) I X,'$O(^PS(53.1,+ON,1,X)) S X=$G(^PS(53.1,+ON,1,X,0)) I $P(X,U)]"" Q $$DDNAME(+X)_U_.3_$P(X,"^",2)
|
---|
| 169 | Q $$OINAME(OIND)_U_.3
|
---|
| 170 | ;
|
---|
| 171 | DDNAME(X) ;
|
---|
| 172 | Q $$FOUND($P($G(^PSDRUG(+X,0)),U),X,"PSDRUG(,")
|
---|
| 173 | ;
|
---|
| 174 | OINAME(ND) ; Return Orderable Item Name_" "_Dose Form_U_Dosage Ordered
|
---|
| 175 | N DF,DNME,X
|
---|
| 176 | S X=$G(^PS(50.7,+ND,0)),DNME="" S:X]"" DF=$P($G(^PS(50.606,+$P(X,U,2),0)),U),DNME=$P(X,U)_" "_DF
|
---|
| 177 | Q $$FOUND(DNME,+ND,"PS(50.7")
|
---|
| 178 | ;
|
---|
| 179 | FOUND(DNME,DN,FN) ;
|
---|
| 180 | Q $S(DNME]"":DNME,1:"NOT FOUND "_DN_";"_FN)
|
---|