| 1 | PSJIPST3 ;BIR/MLM-CONVERT PSJ 4.5 QUICK ORDERS FOR USE IN OE/RR 3.0 ; 15 May 98 / 10:56 AM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**3,5**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN(PROTIEN)        ;
 | 
|---|
| 5 |  ; THIS CALL NOT USED ANYMORE... IT IS IN ^PSSQOC
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | GTPC ; Set up TMP for provider comments
 | 
|---|
| 9 |  I $O(^PS(57.1,+PSJQOPTR,2,0))  D
 | 
|---|
| 10 |  .S CNT=0 F X=0:0 S X=$O(^PS(57.1,+PSJQOPTR,2,X)) Q:'X  D
 | 
|---|
| 11 |  ..S Y=$G(^PS(57.1,PSJQOPTR,2,X,0)) S:Y]"" CNT=CNT+1,^TMP("PSJQO",$J,"PC",CNT,0)=Y
 | 
|---|
| 12 |  .S:$O(^TMP("PSJQO",$J,"PC",0)) ^TMP("PSJQO",$J,"PC",0)=CNT_U_CNT
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | 111 ; Order Set Conversion
 | 
|---|
| 15 | CONVOS ;Convert Order Sets in ^PS(53.2,
 | 
|---|
| 16 |  D MES^XPDUTL(" ") D MES^XPDUTL("Converting Unit Dose Order Sets......")
 | 
|---|
| 17 |  N PSJNUM,PSJNUM2,PSJND,S,PSJCC,FLAG,PSJOCNT,PSJ50P7
 | 
|---|
| 18 |  S S="PSJOS" K ^TMP(S,$J)
 | 
|---|
| 19 |  F PSJNUM=0:0 S PSJNUM=$O(^PS(53.2,PSJNUM)) Q:'PSJNUM  D
 | 
|---|
| 20 |  .Q:'$O(^PS(53.2,PSJNUM,1,0))
 | 
|---|
| 21 |  .S ^TMP(S,$J,PSJNUM,0)=$P(^PS(53.2,PSJNUM,0),"^")
 | 
|---|
| 22 |  .F PSJNUM2=0:0 S PSJNUM2=$O(^PS(53.2,PSJNUM,1,PSJNUM2)) Q:'PSJNUM2  D
 | 
|---|
| 23 |  ..S ^TMP(S,$J,PSJNUM,1,PSJNUM2,0)=^PS(53.2,PSJNUM,1,PSJNUM2,0)
 | 
|---|
| 24 |  ..S ^TMP(S,$J,PSJNUM,1,PSJNUM2,1)=$G(^PS(53.2,PSJNUM,1,PSJNUM2,1))
 | 
|---|
| 25 |  ..F PSJND=0:0 S PSJND=$O(^PS(53.2,PSJNUM,1,PSJNUM2,2,PSJND)) Q:'PSJND  D
 | 
|---|
| 26 |  ...S ^TMP(S,$J,PSJNUM,1,PSJNUM2,2,PSJND,0)=^PS(53.2,PSJNUM,1,PSJNUM2,2,PSJND,0)
 | 
|---|
| 27 |  ..I '$$CHECK(PSJNUM,PSJNUM2,S) S ^TMP(S,$J,"BAD",PSJNUM)=1
 | 
|---|
| 28 |  ..E  S ^TMP(S,$J,PSJNUM,2,PSJNUM2,"50.7PT")=PSJ50P7
 | 
|---|
| 29 |  D CONVERT D:$D(^TMP(S,$J)) MAILMESS(PSJOCNT) K ^TMP(S,$J)
 | 
|---|
| 30 |  D NOW^%DTC S $P(^PS(59.7,1,20.5),U,4)=%
 | 
|---|
| 31 |  D MES^XPDUTL("                                      .....finished") W !
 | 
|---|
| 32 |  D SDCON ; queue up conversion of Order sets to OERR quick orders
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | CONVERT ;
 | 
|---|
| 35 |  N PSJNUM,PSJNUM2,PSJND,PSJT,M1,L1,M2,L2
 | 
|---|
| 36 |  F PSJNUM=0:0 S PSJNUM=$O(^TMP(S,$J,PSJNUM)) Q:'PSJNUM  D
 | 
|---|
| 37 |  .Q:$D(^TMP(S,$J,"BAD",PSJNUM))  ; doesn't convert the bad ones
 | 
|---|
| 38 |  .S PSJOCNT=$S('$D(PSJOCNT):1,1:PSJOCNT+1)
 | 
|---|
| 39 |  .S M1=^PS(53.2,PSJNUM,1,0),L1=$L(M1),M1=$E(M1,(L1-3),L1)
 | 
|---|
| 40 |  .S ^PS(53.2,PSJNUM,2,0)="^53.22PA"_M1
 | 
|---|
| 41 |  .F PSJNUM2=0:0 S PSJNUM2=$O(^TMP(S,$J,PSJNUM,1,PSJNUM2)) Q:'PSJNUM2  D
 | 
|---|
| 42 |  ..S ^PS(53.2,PSJNUM,2,PSJNUM2,0)=^TMP(S,$J,PSJNUM,1,PSJNUM2,0)
 | 
|---|
| 43 |  ..S $P(^PS(53.2,PSJNUM,2,PSJNUM2,0),"^")=^TMP(S,$J,PSJNUM,2,PSJNUM2,"50.7PT")
 | 
|---|
| 44 |  ..S PSJT=$S($L(^TMP(S,$J,PSJNUM,1,PSJNUM2,1)):1,1:0)
 | 
|---|
| 45 |  ..I PSJT S ^PS(53.2,PSJNUM,2,PSJNUM2,1)=$G(^TMP(S,$J,PSJNUM,1,PSJNUM2,1))
 | 
|---|
| 46 |  ..F PSJND=0:0 S PSJND=$O(^TMP(S,$J,PSJNUM,1,PSJNUM2,2,PSJND)) Q:'PSJND  D
 | 
|---|
| 47 |  ...S ^PS(53.2,PSJNUM,2,PSJNUM2,2,PSJND,0)=^TMP(S,$J,PSJNUM,1,PSJNUM2,2,PSJND,0)
 | 
|---|
| 48 |  ..I $D(^PS(53.2,PSJNUM,1,PSJNUM2,2,0)) D   ;if no disp. drug don't set
 | 
|---|
| 49 |  ...S M2=^PS(53.2,PSJNUM,1,PSJNUM2,2,0),L2=$L(M2),M2=$E(M2,(L2-3),L2)
 | 
|---|
| 50 |  ...S ^PS(53.2,PSJNUM,2,PSJNUM2,2,0)="^53.23P"_M2
 | 
|---|
| 51 |  S DIK="^PS(53.2," D IXALL^DIK
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | CHECK(PSJNUM,PSJNUM2,S) ; check to see if different Orderable Items
 | 
|---|
| 54 |  N PSJFIRST,PSJCC,PSDRUG S FLAG=1
 | 
|---|
| 55 |  F PSJCC=0:0 S PSJCC=$O(^TMP(S,$J,PSJNUM,1,PSJNUM2,2,PSJCC)) Q:'PSJCC  D
 | 
|---|
| 56 |  .Q:'FLAG
 | 
|---|
| 57 |  .S PSDRUG=$P(^TMP(S,$J,PSJNUM,1,PSJNUM2,2,PSJCC,0),"^")
 | 
|---|
| 58 |  .S PSJ50P7=+$P($G(^PSDRUG(PSDRUG,2)),"^")
 | 
|---|
| 59 |  .I '$D(PSJFIRST) S PSJFIRST=PSJ50P7,FLAG=1
 | 
|---|
| 60 |  .E  S FLAG=(PSJFIRST=PSJ50P7)
 | 
|---|
| 61 |  .S:PSJ50P7=0 FLAG=0 ; sets flag to quit if drug has no Ord Item
 | 
|---|
| 62 |  Q FLAG
 | 
|---|
| 63 | MAILMESS(C) ;  send mail msg for Order Set conversion
 | 
|---|
| 64 |  K XMY N LOOP,CNT S XMSUB="Inpatient Medications ORDER SETS conversion"
 | 
|---|
| 65 |  S XMDUZ="INPATIENT MEDICATIONS Version 5.0 Install",XMTEXT="PSJTEXT1("
 | 
|---|
| 66 |  F LOOP=0:0 S LOOP=$O(^XUSEC("PSJU MGR",LOOP)) Q:'LOOP  D
 | 
|---|
| 67 |  .S XMY(LOOP)=""
 | 
|---|
| 68 |  S XMY(DUZ)=""
 | 
|---|
| 69 |  S PSJTEXT1(1,0)="The conversion of the Unit Dose Order sets has completed."
 | 
|---|
| 70 |  S PSJTEXT1(2,0)="A total of "_C_" order sets were converted."
 | 
|---|
| 71 |  I $D(^TMP(S,$J,"BAD")) D
 | 
|---|
| 72 |  .S (PSJTEXT1(3,0),PSJTEXT1(8,0))=""
 | 
|---|
| 73 |  .S PSJTEXT1(5,0)="The following Order Sets contained drugs that have"
 | 
|---|
| 74 |  .S PSJTEXT1(5,0)=PSJTEXT1(5,0)_" more than one Dispense drug,"
 | 
|---|
| 75 |  .S PSJTEXT1(6,0)="or dispense drugs that are inactive."
 | 
|---|
| 76 |  .S PSJTEXT1(7,0)="These Dispense drugs are not linked to the same Ordera"
 | 
|---|
| 77 |  .S PSJTEXT1(7,0)=PSJTEXT1(7,0)_"ble item."
 | 
|---|
| 78 |  .S PSJTEXT1(8,0)="Please REENTER these Order Sets through the menu option."
 | 
|---|
| 79 |  .F LOOP=0:0 S LOOP=$O(^TMP(S,$J,"BAD",LOOP)) Q:'LOOP  D
 | 
|---|
| 80 |  ..S CNT=$S('$D(CNT):1,1:CNT+1)
 | 
|---|
| 81 |  ..S PSJTEXT1(CNT+9,0)=" ** "_$P($G(^PS(53.2,LOOP,0)),"^")_" needs to be reentered"
 | 
|---|
| 82 |  N DIFROM D ^XMD K XMSUB,XMDUZ,XMTEXT,PSJTEXT1
 | 
|---|
| 83 |  Q
 | 
|---|
| 84 | BADNAMES ;
 | 
|---|
| 85 |  D NOW^%DTC S $P(^PS(59.7,1,20.5),U,2)=%
 | 
|---|
| 86 |  I '$O(^XTMP("PSJ NEW PERSON",0)) K ^XTMP("PSJ NEW PERSON") Q
 | 
|---|
| 87 |  ;   fill in ^XTMP zero node
 | 
|---|
| 88 |  N PSJDATE1,PSJDATE2
 | 
|---|
| 89 |  D NOW^%DTC S PSJDATE1=X,X1=X,X2=7 D C^%DTC S PSJDATE2=X
 | 
|---|
| 90 |  S ^XTMP("PSJ NEW PERSON",0)=PSJDATE2_"^"_PSJDATE1_"^"_"List of changed User Names in IV orders"
 | 
|---|
| 91 |  S ^XTMP("PSJ NEW1",0)=PSJDATE2_"^"_PSJDATE1_"^"_"List of changed User Names in IV orders"
 | 
|---|
| 92 |  S Y=PSJDATE2 X ^DD("DD") S PSJDATE2=Y
 | 
|---|
| 93 |  K XMY S XMSUB="Changed user names in IV file"
 | 
|---|
| 94 |  S XMDUZ="INPATIENT MEDICATIONS Version 5.0 Install",XMTEXT="PSJTEXT1("
 | 
|---|
| 95 |  F LOOP=0:0 S LOOP=$O(^XUSEC("PSJI MGR",LOOP)) Q:'LOOP  D
 | 
|---|
| 96 |  .S XMY(LOOP)=""
 | 
|---|
| 97 |  S PSJTEXT1(1,0)="The following names were found in IV orders and don't have exact matches in"
 | 
|---|
| 98 |  S PSJTEXT1(2,0)="the NEW PERSON FILE."
 | 
|---|
| 99 |  S PSJTEXT1(3,0)=""
 | 
|---|
| 100 |  N CNT S LOOP=0 F  S LOOP=$O(^XTMP("PSJ NEW PERSON",LOOP)) Q:LOOP=""  D
 | 
|---|
| 101 |  .S CNT=$S('$D(CNT):1,1:CNT+1)
 | 
|---|
| 102 |  .S PSJTEXT1((CNT+4),0)=" "_LOOP
 | 
|---|
| 103 |  S PSJTEXT1((CNT+5),0)=" "
 | 
|---|
| 104 |  S PSJTEXT1((CNT+6),0)="This message is sent to all the Inpatient pharmacists."
 | 
|---|
| 105 |  S PSJTEXT1((CNT+7),0)="This job should most likely be handled by the Pharmacy Service ADP coordinator."
 | 
|---|
| 106 |  S PSJTEXT1((CNT+8),0)="It is VERY IMPORTANT that these names be corrected.  Please have IRM assign"
 | 
|---|
| 107 |  S PSJTEXT1((CNT+9),0)="someone the Inpatient Medications option, PSJI 200, ""Correct changed User"
 | 
|---|
| 108 |  S PSJTEXT1((CNT+10),0)="Names in IV orders"". Then run this option to correct the names."
 | 
|---|
| 109 |  S PSJTEXT1((CNT+11),0)="This correction should be done as soon as possible, or at the latest "
 | 
|---|
| 110 |  S PSJTEXT1((CNT+12),0)="by "_PSJDATE2_"."
 | 
|---|
| 111 |  N DIFROM D ^XMD K XMSUB,XMDUZ,XMTEXT,PSJTEXT1
 | 
|---|
| 112 |  ; PSJ*5*5 cleanup jobs
 | 
|---|
| 113 |  D BADN^PSJ005
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 | SDCON ;    begin convertion of S. Order Sets to OERR quick orders
 | 
|---|
| 117 |  S ZTDTH=$H,ZTIO="",ZTRTN="SDOT^PSJIPST3",ZTDESC="Conversion of Unit Dose Order sets to OERR Quick Orders" D ^%ZTLOAD
 | 
|---|
| 118 |  I $D(ZTSK) D MES^XPDUTL(" Job to convert Unit Dose Order Sets to OERR Quick Orders is queued. TASK #"_$G(ZTSK))
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 | SDOT ;
 | 
|---|
| 121 |  S PS="PSJQOS" F PSJ1=0:0 S PSJ1=$O(^PS(53.2,PSJ1)) Q:'PSJ1  D
 | 
|---|
| 122 |  . Q:'$D(^PS(53.2,PSJ1,2))  K ^TMP(PS) S ^TMP(PS,$J,"NM")=^PS(53.2,PSJ1,0)
 | 
|---|
| 123 |  . F PSJ2=0:0 S PSJ2=$O(^PS(53.2,PSJ1,2,PSJ2)) Q:'PSJ2  D
 | 
|---|
| 124 |  .. S $P(^TMP(PS,$J,PSJ2,1),"^")=$P($G(^PS(53.2,PSJ1,2,PSJ2,0)),"^")
 | 
|---|
| 125 |  .. S $P(^TMP(PS,$J,PSJ2,1),"^",2)=$P($G(^PS(53.2,PSJ1,2,PSJ2,0)),"^",3)
 | 
|---|
| 126 |  .. S $P(^TMP(PS,$J,PSJ2,1),"^",3)=$P($G(^PS(53.2,PSJ1,2,PSJ2,0)),"^",5)
 | 
|---|
| 127 |  .. S $P(^TMP(PS,$J,PSJ2,1),"^",4)=$P($G(^PS(53.2,PSJ1,2,PSJ2,0)),"^",9)
 | 
|---|
| 128 |  .. S ^TMP(PS,$J,PSJ2,2)=$G(^PS(53.2,PSJ1,2,PSJ2,1)) K CNTT
 | 
|---|
| 129 |  .. F PSJDS=0:0 S PSJDS=$O(^PS(53.2,PSJ1,2,PSJ2,2,PSJDS)) Q:'PSJDS  D
 | 
|---|
| 130 |  ... Q:$D(CNTT)
 | 
|---|
| 131 |  ... S $P(^TMP(PS,$J,PSJ2,3),"^")=$P($G(^PS(53.2,PSJ1,2,PSJ2,2,PSJDS,0)),"^")
 | 
|---|
| 132 |  ... S $P(^TMP(PS,$J,PSJ2,3),"^",2)=$P($G(^PS(53.2,PSJ1,2,PSJ2,2,PSJDS,0)),"^",2),CNTT=1
 | 
|---|
| 133 |  . D PSJQOS^ORCONV3 ;  call to OERR to process each Order Set
 | 
|---|
| 134 |  K CNTT,^TMP(PS),PS,PSJ1,PSJ2,PSJDS Q
 | 
|---|