| 1 | ORY94A ;SLC/MKB -- post-install for OR*3*94 cont;07:47 AM  7 Jun 2001
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**94**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ; -- Shell to check delayed med orders for inactive OI's
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  N ORODG,ORGRP,ORNOW,ORPOI,ORPDD,ORPIN,ORPFT,ORPST,ORPID,ORPAD,ORQDLG,OR0,ORDIALOG,ORIT,ORDRUG,ORPSOI,ORP,ORI,ORXX
 | 
|---|
| 7 |  S ORODG=+$O(^ORD(100.98,"B","PHARMACY",0)) D DG^ORCHANG1(ORODG,"BILD",.ORGRP)
 | 
|---|
| 8 |  S ORODG=+$O(^ORD(100.98,"B","O RX",0)),ORNOW=$$NOW^XLFDT
 | 
|---|
| 9 |  S ORPOI=+$$PTR("ORDERABLE ITEM"),ORPDD=+$$PTR("DISPENSE DRUG")
 | 
|---|
| 10 |  S ORPIN=+$$PTR("INSTRUCTIONS"),ORPFT=+$$PTR("FREE TEXT")
 | 
|---|
| 11 |  S ORPST=+$$PTR("STRENGTH"),ORPID=+$$PTR("DOSE"),ORPAD=+$$PTR("ADDITIVE")
 | 
|---|
| 12 |  ; -- delayed orders conversion only
 | 
|---|
| 13 |  D QO3,BULLETIN
 | 
|---|
| 14 |  Q
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | QO3 ; -- Update inactive OI's in delayed orders, if possible
 | 
|---|
| 17 |  N ORVP,OREVT,ORIFN,OR0,OR3,ORTS,ORITM,ORPSITM,ORNEWOI
 | 
|---|
| 18 |  S ORVP=$G(^XTMP("OR94","PAT")) ;find where left off, if restarted
 | 
|---|
| 19 |  F  S ORVP=$O(^OR(100,"AEVNT",ORVP)) Q:ORVP=""  D
 | 
|---|
| 20 |  . S OREVT="" F  S OREVT=$O(^OR(100,"AEVNT",ORVP,OREVT)) Q:OREVT=""  D
 | 
|---|
| 21 |  .. S ORIFN=0 F  S ORIFN=$O(^OR(100,"AEVNT",ORVP,OREVT,ORIFN)) Q:ORIFN'>0  D
 | 
|---|
| 22 |  ... S OR0=$G(^OR(100,ORIFN,0)),OR3=$G(^(3)),ORTS=+$P(OR0,U,13)
 | 
|---|
| 23 |  ... Q:'$D(ORGRP(+$P(OR0,U,11)))  Q:$P(OR3,U,3)'=10  ;PS, still delayed
 | 
|---|
| 24 |  ... S ORDRUG=$$VALUE^ORMPS2("DRUG"),ORI=0
 | 
|---|
| 25 |  ... F  S ORI=$O(^OR(100,ORIFN,4.5,"ID","ORDERABLE",ORI)) Q:ORI'>0  D
 | 
|---|
| 26 |  .... S ORITM=+$G(^OR(100,ORIFN,4.5,ORI,1)) Q:ORITM'>0
 | 
|---|
| 27 |  .... S ORPSITM=+$P($G(^ORD(101.43,ORITM,0)),U,2)
 | 
|---|
| 28 |  .... S ORNEWOI=$$EN^PSSQORD(ORPSITM,ORDRUG)
 | 
|---|
| 29 |  .... I ORNEWOI>0,$P(ORNEWOI,U,2)!($P(ORNEWOI,U,3)>ORNOW) S ORNEWOI=+$O(^ORD(101.43,"ID",+ORNEWOI_";99PSP",0)) I ORNEWOI D 100 Q
 | 
|---|
| 30 |  .... S ^XTMP("ORDER",ORVP,OREVT_";"_ORTS,ORIFN)="" ;unconverted
 | 
|---|
| 31 |  . S ^XTMP("OR94","PAT")=ORVP
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | 100 ; -- update orderable item ptr in order
 | 
|---|
| 35 |  N I S ^OR(100,ORIFN,4.5,ORI,1)=ORNEWOI,ORXX=1
 | 
|---|
| 36 |  S I=$O(^OR(100,ORIFN,.1,"B",ORITM,0)) Q:I'>0
 | 
|---|
| 37 |  K ^OR(100,ORIFN,.1,"B",ORITM,I)
 | 
|---|
| 38 |  S ^OR(100,ORIFN,.1,I,0)=ORNEWOI,^OR(100,ORIFN,.1,"B",ORNEWOI,I)=""
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | PTR(X) ; -- Return ptr to prompt OR GTX X
 | 
|---|
| 42 |  Q +$O(^ORD(101.41,"AB","OR GTX "_X,0))
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | BULLETIN        ; -- Send bulletin containing qo's we couldn't convert
 | 
|---|
| 45 |  N ORNOW,ORNOW90,XMSUB,XMTEXT,XMDUZ,XMY,XMZ,XMMG,I,J,K,L,X,TS,ORD0,DIFROM
 | 
|---|
| 46 |  S ORNOW=$$NOW^XLFDT,ORNOW90=$$FMADD^XLFDT(ORNOW,90)
 | 
|---|
| 47 |  S XMDUZ="PATCH OR*3*94 CONVERSION",XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
 | 
|---|
| 48 |  I '$G(DUZ) S I=$G(^XTMP("OR94","DUZ")) S:I XMY(I)=""
 | 
|---|
| 49 |  S ^TMP("ORTXT",$J,1)="The quick order conversion of patch OR*3*94 has completed."
 | 
|---|
| 50 | B1 S J=1 I $O(^XTMP("ORIT",0)) D
 | 
|---|
| 51 |  . S ^XTMP("ORIT",0)=ORNOW90_U_ORNOW_"^CPRS/POE Inactive Orderables conversion"
 | 
|---|
| 52 |  . S J=J+1,^TMP("ORTXT",$J,J)="   "
 | 
|---|
| 53 |  . S J=J+1,^TMP("ORTXT",$J,J)="The following quick orders have inactive orderable items that were"
 | 
|---|
| 54 |  . S J=J+1,^TMP("ORTXT",$J,J)="unable to be automatically replaced with active ones:"
 | 
|---|
| 55 |  . S I=0 F  S I=$O(^XTMP("ORIT",I)) Q:I'>0  D
 | 
|---|
| 56 |  .. S ORD0=$G(^ORD(101.41,+I,0))
 | 
|---|
| 57 |  .. S J=J+1,^TMP("ORTXT",$J,J)="   "_$P(ORD0,U)_"  ("_$P(ORD0,U,2)_")"
 | 
|---|
| 58 | B2 I $O(^XTMP("ORPSO",0)) D
 | 
|---|
| 59 |  . S ^XTMP("ORPSO",0)=ORNOW90_U_ORNOW_"^CPRS/POE Outpt Dose conversion"
 | 
|---|
| 60 |  . S J=J+1,^TMP("ORTXT",$J,J)="   "
 | 
|---|
| 61 |  . S J=J+1,^TMP("ORTXT",$J,J)="The following Outpatient Pharmacy quick orders have instructions that"
 | 
|---|
| 62 |  . S J=J+1,^TMP("ORTXT",$J,J)="were unable to be re-formatted:"
 | 
|---|
| 63 |  . S I=0 F  S I=$O(^XTMP("ORPSO",I)) Q:I'>0  D
 | 
|---|
| 64 |  .. S ORD0=$G(^ORD(101.41,+I,0))
 | 
|---|
| 65 |  .. S J=J+1,^TMP("ORTXT",$J,J)="   "_$P(ORD0,U)_"  ("_$P(ORD0,U,2)_")"
 | 
|---|
| 66 | B3 I $O(^XTMP("ORDER",0)) D
 | 
|---|
| 67 |  . S ^XTMP("ORDER",0)=ORNOW90_U_ORNOW_"^CPRS/POE Delayed Orders conversion"
 | 
|---|
| 68 |  . S J=J+1,^TMP("ORTXT",$J,J)="   "
 | 
|---|
| 69 |  . S J=J+1,^TMP("ORTXT",$J,J)="The following patients have delayed orders with inactive orderable items"
 | 
|---|
| 70 |  . S J=J+1,^TMP("ORTXT",$J,J)="that were unable to be automatically replaced with active ones:"
 | 
|---|
| 71 |  . S I="" F  S I=$O(^XTMP("ORDER",I)) Q:I=""  D  ;pt
 | 
|---|
| 72 |  .. S K="" F  S K=$O(^XTMP("ORDER",I,K)) Q:K=""  D  ;event;TS
 | 
|---|
| 73 |  ... S X=$P(K,";"),TS=+$P(K,";",2) I X="D" S X="Discharge"
 | 
|---|
| 74 |  ... E  S X=$S(X="A":"Admission",X="T":"Transfer",1:"")_$S(TS:" to "_$P($G(^DIC(45.7,TS,0)),U),1:"")
 | 
|---|
| 75 |  ... S J=J+1,^TMP("ORTXT",$J,J)="   "_$P($G(^DPT(+I,0)),U)_" - "_X_":"
 | 
|---|
| 76 |  ... S L=0 F  S L=+$O(^XTMP("ORDER",I,K,L)) Q:L'>0  S J=J+1,^TMP("ORTXT",$J,J)="     "_$E($G(^OR(100,L,8,1,.1,1,0)),1,64)_"..."
 | 
|---|
| 77 |  S XMSUB="PATCH OR*3*94 CONVERSION COMPLETED"
 | 
|---|
| 78 |  S XMTEXT="^TMP(""ORTXT"","_$J_"," D ^XMD
 | 
|---|
| 79 |  Q
 | 
|---|