| 1 | PSOORFI4 ;BIR/SAB-CPRS order checks and display con't ; 6/28/07 7:36am | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**46,74,78,99,117,131,207,258,274**;DEC 1997;Build 8 | 
|---|
| 3 | ;External reference to ^PS(51.2 supported by DBIA 2226 | 
|---|
| 4 | ;External reference to ^PS(50.607 supported by DBIA 2221 | 
|---|
| 5 | ;External reference ^PS(55 supported by DBIA 2228 | 
|---|
| 6 | ;External reference to ^PS(50.7 is supported by DBIA 2223 | 
|---|
| 7 | ;External reference to $$PDA^PPPPDA1 is supported by DBIA 1374 | 
|---|
| 8 | ; | 
|---|
| 9 | ORCHK D ORCHK^PSOORNE6 | 
|---|
| 10 | Q | 
|---|
| 11 | INST ;displays patient instructions | 
|---|
| 12 | I $O(PSONEW("SIG",0)) G INST1 | 
|---|
| 13 | S INST=0 F  S INST=$O(^PS(52.41,ORD,"INS1",INST)) Q:'INST  S (MIG,PSONEW("SIG",INST))=^PS(52.41,ORD,"INS1",INST,0) D | 
|---|
| 14 | .F SG=1:1:$L(MIG," ") S:$L(^TMP("PSOPO",$J,IEN,0)_" "_$P(MIG," ",SG))>80 IEN=IEN+1,$P(^TMP("PSOPO",$J,IEN,0)," ",20)=" " S ^TMP("PSOPO",$J,IEN,0)=$G(^TMP("PSOPO",$J,IEN,0))_" "_$P(MIG," ",SG) | 
|---|
| 15 | I $P($G(^PS(55,PSODFN,"LAN")),"^"),$O(^PS(52.41,ORD,"INS1",0)) D | 
|---|
| 16 | .I $G(^PS(50.7,PSODRUG("OI"),"INS1"))]"" S (X,PSONEW("SINS"))=^PS(50.7,PSODRUG("OI"),"INS1") D SSIG^PSOHELP | 
|---|
| 17 | .I $G(SINS1)]"" S PSONEW("SINS")=$E(SINS1,2,250) | 
|---|
| 18 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" Other Pat Instruct: "_$S($G(PSONEW("SINS"))]"":PSONEW("SINS"),1:"") | 
|---|
| 19 | K INST,TY,MIG,SG,SINS1 | 
|---|
| 20 | Q | 
|---|
| 21 | INST1 ; | 
|---|
| 22 | S INS=0 F  S INS=$O(PSONEW("SIG",INS)) Q:'INS  S MIG=PSONEW("SIG",INS) D | 
|---|
| 23 | .F SG=1:1:$L(MIG," ") S:$L(^TMP("PSOPO",$J,IEN,0)_" "_$P(MIG," ",SG))>80 IEN=IEN+1,$P(^TMP("PSOPO",$J,IEN,0)," ",20)=" " S ^TMP("PSOPO",$J,IEN,0)=$G(^TMP("PSOPO",$J,IEN,0))_" "_$P(MIG," ",SG) | 
|---|
| 24 | K INST,TY,MIG,SG | 
|---|
| 25 | I $P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" Other Pat Instruct: "_$S($G(PSONEW("SINS"))]"":PSONEW("SINS"),1:"") | 
|---|
| 26 | Q | 
|---|
| 27 | PROVCOM ; | 
|---|
| 28 | I $G(PKI1)=1,'$G(PSORX("VERIFY")) D REA^PSOPKIV1 Q:$G(PSORX("DFLG")) | 
|---|
| 29 | I $O(PRC(0)),'$G(PSOPRC) D  D KV^PSOVER1 | 
|---|
| 30 | .D EN^DDIOL("Provider Comments: ","","!") | 
|---|
| 31 | .F I=0:0 S I=$O(PRC(I)) Q:'I  D EN^DDIOL(PRC(I),"","!") | 
|---|
| 32 | .D KV^PSOVER1 S DIR(0)="Y",DIR("A")="Copy Provider Comments into the Patient Instructions",DIR("B")="No" | 
|---|
| 33 | .D ^DIR Q:'Y!($D(DIRUT)) | 
|---|
| 34 | .S PSOPRC=1,NI=0 F I=0:0 S I=$O(PSONEW("SIG",I)) Q:'I  S NI=I | 
|---|
| 35 | .S NC=0 F I=0:0 S I=$O(PRC(I)) Q:'I  S NC=NC+1 | 
|---|
| 36 | .I NI'>1,NC=1,($L($G(PSONEW("SIG",NI)))+$L(PRC(1)))'>250 D  Q | 
|---|
| 37 | ..S X=PRC(1) D SIGONE^PSOHELP | 
|---|
| 38 | ..S PSONEW("SIG",1)=$G(PSONEW("SIG",NI))_INS1 K INS1,X | 
|---|
| 39 | ..S:$E(PSONEW("SIG",1))=" " PSONEW("SIG",1)=$E(PSONEW("SIG",1),2,250) S PSONEW("INS")=PSONEW("SIG",1) D EN^PSOFSIG(.PSONEW,1) K NI,NC | 
|---|
| 40 | .F I=0:0 S I=$O(PRC(I)) Q:'I  S NI=NI+1,(PSONEW("INS",NI),X)=PRC(I) D SIGONE^PSOHELP S PSONEW("SIG",NI)=INS1 K INS1 | 
|---|
| 41 | .I $E(PSONEW("SIG",1))=" " S PSONEW("SIG",1)=$E(PSONEW("SIG",1),2,250) | 
|---|
| 42 | .D EN^PSOFSIG(.PSONEW,1) K NI,NC,X | 
|---|
| 43 | Q | 
|---|
| 44 | DOSE ;displays dosing info for pending orders.  called from psoorfi1 | 
|---|
| 45 | K II,UNITS S DS=1 | 
|---|
| 46 | I '$O(^PS(52.41,ORD,1,0)) S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" (3)        *Dosage:" G DOSEX | 
|---|
| 47 | F I=0:0 S I=$O(^PS(52.41,ORD,1,I)) Q:'I  S DOSE=$G(^PS(52.41,ORD,1,I,1)),DOSE1=$G(^(2)) D  D DOSE1 | 
|---|
| 48 | .S II=$G(II)+1 K PSONEW("UNITS",II) | 
|---|
| 49 | .S PSONEW("DOSE",II)=$P(DOSE1,"^"),PSONEW("DOSE ORDERED",II)=$P(DOSE1,"^",2),PSONEW("UNITS",II)=$P(DOSE,"^",9),PSONEW("NOUN",II)=$P(DOSE,"^",5) | 
|---|
| 50 | .S:$P(DOSE,"^",9) UNITS=$P(^PS(50.607,$P(DOSE,"^",9),0),"^") | 
|---|
| 51 | .S PSONEW("VERB",II)=$P(DOSE,"^",10),PSONEW("ROUTE",II)=$P(DOSE,"^",8) | 
|---|
| 52 | .S:$P(DOSE,"^",8) ROUTE=$P(^PS(51.2,$P(DOSE,"^",8),0),"^") | 
|---|
| 53 | .S PSONEW("SCHEDULE",II)=$P(DOSE,"^"),PSONEW("DURATION",II)=$P(DOSE,"^",2) | 
|---|
| 54 | .S DOENT=$G(DOENT)+1 I $P(DOSE,"^",6)]"" S PSONEW("CONJUNCTION",II)=$S($P(DOSE,"^",6)="S":"T",$P(DOSE,"^",6)="X":"X",1:"A") | 
|---|
| 55 | .I 'PSONEW("DOSE ORDERED",II),$G(PSONEW("VERB",II))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               Verb: "_$G(PSONEW("VERB",II)) | 
|---|
| 56 | .S:$G(DS) IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" (3)" | 
|---|
| 57 | DOSEX S PSONEW("ENT")=+$G(II) K DOSE,DOSE1,II,I,UNITS,ROUTE,DG | 
|---|
| 58 | Q | 
|---|
| 59 | DOSE1 I $G(DS)=1 S ^TMP("PSOPO",$J,IEN,0)=^TMP("PSOPO",$J,IEN,0)_"        *Dosage:" D FMD^PSOORFI3 G DU | 
|---|
| 60 | S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="            *Dosage:" D FMD^PSOORFI3 | 
|---|
| 61 | DU I 'PSONEW("DOSE ORDERED",I),$P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" *Oth. Lang. Dosage: "_$G(PSONEW("ODOSE",I)) | 
|---|
| 62 | I PSONEW("DOSE ORDERED",II),$G(PSONEW("VERB",II))]"" D | 
|---|
| 63 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               Verb: "_$G(PSONEW("VERB",II)) | 
|---|
| 64 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     Dispense Units: "_$S($E(PSONEW("DOSE ORDERED",II),1)=".":"0",1:"")_PSONEW("DOSE ORDERED",II) | 
|---|
| 65 | I PSONEW("NOUN",II)]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               Noun: "_PSONEW("NOUN",II) | 
|---|
| 66 | I $G(ROUTE)]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="             *Route: "_$G(ROUTE) | 
|---|
| 67 | S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="          *Schedule: "_PSONEW("SCHEDULE",II) | 
|---|
| 68 | I $G(PSONEW("DURATION",II))]"" D | 
|---|
| 69 | .S PSONEW("DURATION",II)=$S($E(PSONEW("DURATION",II),1)'?.N:$E(PSONEW("DURATION",II),2,99)_$E(PSONEW("DURATION",II),1),1:PSONEW("DURATION",II)) | 
|---|
| 70 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="          *Duration: "_PSONEW("DURATION",II)_" ("_$S(PSONEW("DURATION",II)["M":"MINUTES",PSONEW("DURATION",II)["H":"HOURS",PSONEW("DURATION",II)["L":"MONTHS",PSONEW("DURATION",II)["W":"WEEKS",1:"DAYS")_")" | 
|---|
| 71 | I $G(PSONEW("CONJUNCTION",II))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="       *Conjunction: "_$S(PSONEW("CONJUNCTION",II)="T":"THEN",PSONEW("CONJUNCTION",II)="X":"EXCEPT",1:"AND") | 
|---|
| 72 | Q | 
|---|
| 73 | DOSE2 ;displays pending order after edits.  called from psoornew | 
|---|
| 74 | I '$O(PSONEW("DOSE",0))!($O(PSONEW("DOSE",0))="") S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" (3)        *Dosage:" Q | 
|---|
| 75 | S DS=1 | 
|---|
| 76 | F I=1:1:PSONEW("ENT") Q:'I  D  D DOSE3 K COJ | 
|---|
| 77 | .S:$G(PSONEW("UNITS",I))]"" UNITS=$P(^PS(50.607,PSONEW("UNITS",I),0),"^") | 
|---|
| 78 | .I $G(PSONEW("ROUTE",I))]"",$G(^PS(51.2,PSONEW("ROUTE",I),0))]"" S ROUTE=$P(^PS(51.2,PSONEW("ROUTE",I),0),"^") | 
|---|
| 79 | .S DUR=$G(PSONEW("DURATION",I)) S:$G(PSONEW("CONJUNCTION",I))]"" COJ=PSONEW("CONJUNCTION",I) | 
|---|
| 80 | .S NOUN=$G(PSONEW("NOUN",I)),VERB=$G(PSONEW("VERB",I)) | 
|---|
| 81 | .I '$G(PSONEW("DOSE ORDERED",I)),$G(PSONEW("VERB",I))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               Verb: "_$G(PSONEW("VERB",I)) | 
|---|
| 82 | .S:$G(DS) IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" (3)" | 
|---|
| 83 | K I,UNITS,ROUTE,DUR,COJ,VERB,NOUN,DG | 
|---|
| 84 | Q | 
|---|
| 85 | DOSE3 I $G(DS)=1 S II=I,^TMP("PSOPO",$J,IEN,0)=^TMP("PSOPO",$J,IEN,0)_"        *Dosage:" D FMD^PSOORFI3 G DO | 
|---|
| 86 | S II=I,IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="            *Dosage:" D FMD^PSOORFI3 | 
|---|
| 87 | DO I '$G(PSONEW("DOSE ORDERED",I)),$P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" *Oth. Lang. Dosage: "_$G(PSONEW("ODOSE",I)) | 
|---|
| 88 | I $G(PSONEW("DOSE ORDERED",I)),$G(PSONEW("VERB",I))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               Verb: "_$G(PSONEW("VERB",I)) | 
|---|
| 89 | I $G(PSONEW("DOSE ORDERED",I)) S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     Dispense Units: "_$S($E(PSONEW("DOSE ORDERED",I),1)=".":"0",1:"")_PSONEW("DOSE ORDERED",I) | 
|---|
| 90 | I $G(PSONEW("NOUN",I))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="               NOUN: "_PSONEW("NOUN",I) | 
|---|
| 91 | I $G(ROUTE)]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="             *Route: "_$G(ROUTE) | 
|---|
| 92 | S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="          *Schedule: "_PSONEW("SCHEDULE",I) | 
|---|
| 93 | I $G(PSONEW("DURATION",I))]"" D | 
|---|
| 94 | .S PSONEW("DURATION",I)=$S($E(PSONEW("DURATION",I),1)'?.N:$E(PSONEW("DURATION",I),2,99)_$E(PSONEW("DURATION",I),1),1:PSONEW("DURATION",I)) | 
|---|
| 95 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="          *Duration: "_PSONEW("DURATION",I)_" ("_$S(PSONEW("DURATION",I)["M":"MINUTES",PSONEW("DURATION",I)["H":"HOURS",PSONEW("DURATION",I)["L":"MONTHS",PSONEW("DURATION",I)["W":"WEEKS",1:"DAYS")_")" | 
|---|
| 96 | I $G(PSONEW("CONJUNCTION",I))]"" S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="       *Conjunction: "_$S(PSONEW("CONJUNCTION",I)="T":"THEN",PSONEW("CONJUNCTION",I)="X":"EXCEPT",1:"AND") | 
|---|
| 97 | Q | 
|---|
| 98 | OBX ;formats obx section | 
|---|
| 99 | N COM,II | 
|---|
| 100 | D:$G(PKI1) L1^PSOPKIV1 | 
|---|
| 101 | I $O(^PS(52.41,ORD,"OBX",0)) S (T,IEN)=0,IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="Order Checks:" F  S T=$O(^PS(52.41,ORD,"OBX",T)) Q:'T  D  S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)=" " | 
|---|
| 102 | .S COM=$G(^PS(52.41,ORD,"OBX",T,0)) | 
|---|
| 103 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     " F II=1:1:$L(COM," ") D | 
|---|
| 104 | ..I $L(^TMP("PSOPO",$J,IEN,0)_" "_$P(COM," ",II))>80 S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     " | 
|---|
| 105 | ..S ^TMP("PSOPO",$J,IEN,0)=^TMP("PSOPO",$J,IEN,0)_" "_$P(COM," ",II) | 
|---|
| 106 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     Overriding Provider: "_$G(^PS(52.41,ORD,"OBX",T,1)) | 
|---|
| 107 | .S IEN=IEN+1,^TMP("PSOPO",$J,IEN,0)="     Overriding Reason:" | 
|---|
| 108 | .F T1=0:0 S T1=$O(^PS(52.41,ORD,"OBX",T,2,T1)) Q:'T1  D | 
|---|
| 109 | ..S MIG=^PS(52.41,ORD,"OBX",T,2,T1,0) | 
|---|
| 110 | ..F SG=1:1:$L(MIG," ") S:$L(^TMP("PSOPO",$J,IEN,0)_" "_$P(MIG," ",SG))>80 IEN=IEN+1,$P(^TMP("PSOPO",$J,IEN,0)," ",23)=" " S ^TMP("PSOPO",$J,IEN,0)=$G(^TMP("PSOPO",$J,IEN,0))_" "_$P(MIG," ",SG) | 
|---|
| 111 | Q | 
|---|
| 112 | PP S PSODFN=PAT D NOW^%DTC S TM=$E(%,1,12),TM1=$P(TM,".",2),X="PPPPDA1" | 
|---|
| 113 | X ^%ZOSF("TEST") S:$T X=$$PDA^PPPPDA1(PSODFN) | 
|---|
| 114 | Q | 
|---|
| 115 | SPL K PSOFIN S POERR("QFLG")=0 S PSONOLCK=1,PSOPTLOK=PAT | 
|---|
| 116 | Q | 
|---|
| 117 | CLQTY ; | 
|---|
| 118 | K PSONEW("QTY") | 
|---|
| 119 | D QTY^PSOSIG(.PSONEW) | 
|---|
| 120 | S:'$G(PSONEW("QTY")) PSONEW("QTY")=0 | 
|---|
| 121 | Q | 
|---|
| 122 | PQTY ; | 
|---|
| 123 | S ^TMP("PSOPO",$J,IEN,0)=^TMP("PSOPO",$J,IEN,0)_", days supply of "_+$P(OR0,"^",22)_" and a qty of "_+$P(OR0,"^",10) | 
|---|
| 124 | Q | 
|---|
| 125 | REF Q:$G(PSODRUG("DEA"))']"" | 
|---|
| 126 | S CS=0 F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)=""  I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S CS=1 | 
|---|
| 127 | S PTRF=PSONEW("# OF REFILLS"),PSDAYS=PSONEW("DAYS SUPPLY") | 
|---|
| 128 | I CS D | 
|---|
| 129 | .S PSOX1=$S(PTRF>5:5,1:PTRF),PSOX=$S(PSOX1=5:5,1:PSOX1) | 
|---|
| 130 | .S PSOX=$S('PSOX:0,PSDAYS=90:1,1:PSOX),PSDY1=$S(PSDAYS<60:5,PSDAYS'<60&(PSDAYS'>89):2,PSDAYS=90:1,1:0) | 
|---|
| 131 | E  D | 
|---|
| 132 | .S PSOX1=PTRF,PSOX=$S(PSOX1=11:11,1:PSOX1),PSOX=$S('PSOX:0,PSDAYS=90:3,1:PSOX) | 
|---|
| 133 | .S PSDY1=$S(PSDAYS<60:11,PSDAYS'<60&(PSDAYS'>89):5,PSDAYS=90:3,1:0) | 
|---|
| 134 | S PSONEW("# OF REFILLS")=$S(PSONEW("# OF REFILLS")>PSDY1:PSDY1,1:PSONEW("# OF REFILLS")) | 
|---|
| 135 | Q | 
|---|