| 1 | OCXSEND1 ;SLC/RJS,CLA - BUILD RULE TRANSPORTER ROUTINES (Get List of Objects to Transport) ;2/01/01  09:06 | 
|---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,105**;Dec 17,1997 | 
|---|
| 3 | ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998 | 
|---|
| 4 | ; | 
|---|
| 5 | S ; | 
|---|
| 6 | ; | 
|---|
| 7 | N OCXFILE,OCXD0 | 
|---|
| 8 | ; | 
|---|
| 9 | F  S OCXFILE=$$GETFILE Q:'OCXFILE  I (OCXFILE>1) F  D ADDON Q:'$$GETREC(OCXFILE) | 
|---|
| 10 | ; | 
|---|
| 11 | Q | 
|---|
| 12 | ; | 
|---|
| 13 | GETREC(OCXFILE) ; | 
|---|
| 14 | ; | 
|---|
| 15 | N OCXDIAG,OCXD0,OCXD1,OCXX,OCXADD,OCXSCR | 
|---|
| 16 | S OCXDIAG="Select an"_$S($O(^TMP("OCXSEND",$J,"LIST",+OCXFILE,0)):"other",1:"") | 
|---|
| 17 | S OCXDIAG=OCXDIAG_" "_$P(OCXFILE,U,2)_": " | 
|---|
| 18 | S OCXID="I $D(^TMP(""OCXSEND"",$J,"_(+OCXFILE)_",""B"",$P(^(0),U,1))) W ""  ***** Already selected for transport. *****""" | 
|---|
| 19 | S:(+OCXFILE=860.8) OCXID="W:$L($P(^(0),U,2)) ?35,""$$"",$P(^(0),U,2),""() "" "_OCXID | 
|---|
| 20 | S OCXSCR="" | 
|---|
| 21 | W !!,OCXDIAG R OCXX:DTIME E  W "  <timeout>",$C(7) Q 0 | 
|---|
| 22 | Q:(OCXX[U) 0 Q:'$L(OCXX) 0 | 
|---|
| 23 | S OCXADD=1 I ($E(OCXX,1)="-") S OCXX=$E(OCXX,2,$L(OCXX)),OCXADD=0 | 
|---|
| 24 | ; | 
|---|
| 25 | I (OCXX="?") D | 
|---|
| 26 | .I '$O(^TMP("OCXSEND",$J,"LIST",+OCXFILE,0)) W !!,"None Selected for transport" | 
|---|
| 27 | .E  W !!,"Already selected for transport:" D | 
|---|
| 28 | ..S OCXD0="" F  S OCXD0=$O(^TMP("OCXSEND",$J,"LIST",+OCXFILE,"B",OCXD0)) Q:'$L(OCXD0)  D | 
|---|
| 29 | ...W !,?5,OCXD0 | 
|---|
| 30 | ...I (+OCXFILE=860.8) D | 
|---|
| 31 | ....S OCXD1=$O(^TMP("OCXSEND",$J,"LIST",+OCXFILE,"B",OCXD0,0)) Q:'OCXD1 | 
|---|
| 32 | ....W:$L($P($G(^OCXS(860.8,+OCXD1,0)),U,2)) "  $$",$P($G(^OCXS(860.8,+OCXD1,0)),U,2),"()" | 
|---|
| 33 | .W !!,"Press <Enter> to continue..." R OCXD0:DTIME E  Q | 
|---|
| 34 | .S OCXSCR="I '$D(^TMP(""OCXSEND"",$J,"_(+OCXFILE)_",""B"",$P(^(0),U,1)))" | 
|---|
| 35 | .S OCXX="??" | 
|---|
| 36 | ; | 
|---|
| 37 | I (OCXX["*") D  Q 1 | 
|---|
| 38 | .N OCXPAT,OCXCNT,OCXLEN,OCXNAME | 
|---|
| 39 | .S OCXPAT="" | 
|---|
| 40 | .F  Q:(OCXX'["**")  S OCXX=$P(OCXX,"**",1)_"*"_$P(OCXX,"**",2,999) | 
|---|
| 41 | .S OCXLEN=$L(OCXX,"*") | 
|---|
| 42 | .F OCXCNT=1:1:OCXLEN D | 
|---|
| 43 | ..S:$L($P(OCXX,"*",1)) OCXPAT=OCXPAT_"1"""_$P(OCXX,"*",1)_"""" | 
|---|
| 44 | ..S:(OCXX["*") OCXPAT=OCXPAT_".E" | 
|---|
| 45 | ..S OCXX=$P(OCXX,"*",2,999) | 
|---|
| 46 | .S OCXD0=0 F  S OCXD0=$O(^OCXS(+OCXFILE,OCXD0)) Q:'OCXD0  D | 
|---|
| 47 | ..S OCXNAME=$P($G(^OCXS(+OCXFILE,OCXD0,0)),U,1) | 
|---|
| 48 | ..X "I OCXNAME?"_OCXPAT E  Q | 
|---|
| 49 | ..I OCXADD D ADDREC(+OCXFILE,OCXD0) | 
|---|
| 50 | ..I 'OCXADD D DELREC(+OCXFILE,OCXD0) | 
|---|
| 51 | ; | 
|---|
| 52 | S OCXD0=$$DIC(+OCXFILE,"EMQ",OCXDIAG,OCXX,OCXSCR,OCXID) | 
|---|
| 53 | I OCXD0 H 1 D | 
|---|
| 54 | .I OCXADD D ADDREC(OCXFILE,OCXD0) | 
|---|
| 55 | .I 'OCXADD D DELREC(OCXFILE,OCXD0) | 
|---|
| 56 | ; | 
|---|
| 57 | Q 1 | 
|---|
| 58 | ; | 
|---|
| 59 | ADDON ; | 
|---|
| 60 | ; | 
|---|
| 61 | I $O(^TMP("OCXSEND",$J,"LIST",0)) D | 
|---|
| 62 | .S OCXD0=0 F  S OCXD0=$O(^OCXS(860.9,OCXD0)) Q:'OCXD0  D | 
|---|
| 63 | ..I $D(^OCXS(860.9,OCXD0,0)) D CHECK^OCXSENDB(860.9,OCXD0) | 
|---|
| 64 | .D CHECK^OCXSENDB(860.8,"FILE") | 
|---|
| 65 | .D CHECK^OCXSENDB(860.8,"GETDATA") | 
|---|
| 66 | .D CHECK^OCXSENDB(860.8,"DT2INT") | 
|---|
| 67 | .D CHECK^OCXSENDB(860.8,"INT2DT") | 
|---|
| 68 | .D CHECK^OCXSENDB(860.8,"LIST") | 
|---|
| 69 | .D CHECK^OCXSENDB(860.8,"CLIST") | 
|---|
| 70 | .D CHECK^OCXSENDB(860.8,"EQTERM") | 
|---|
| 71 | .D CHECK^OCXSENDB(860.8,"NEWRULE") | 
|---|
| 72 | .D CHECK^OCXSENDB(860.8,"POINTER") | 
|---|
| 73 | .D CHECK^OCXSENDB(860.4,"PATIENT IEN") | 
|---|
| 74 | ; | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | ADDREC(FILE,REC) ; | 
|---|
| 78 | ; | 
|---|
| 79 | N LLAB | 
|---|
| 80 | S FILE=+FILE,REC=+REC | 
|---|
| 81 | Q:'$D(^OCXS(FILE,REC)) | 
|---|
| 82 | Q:$D(^TMP("OCXSEND",$J,"LIST",FILE,REC)) | 
|---|
| 83 | S ^TMP("OCXSEND",$J,"LIST",FILE,REC)=$P($G(^OCXS(FILE,REC,0)),U,1) | 
|---|
| 84 | S ^TMP("OCXSEND",$J,"LIST",FILE,"B",$P($G(^OCXS(FILE,REC,0)),U,1),REC)="" | 
|---|
| 85 | W !,$P(^OCXS(FILE,0),U,1)," --> ",$P($G(^OCXS(FILE,REC,0)),U,1)," added to list." | 
|---|
| 86 | ; | 
|---|
| 87 | S LLAB=$TR(FILE,".","")_"^OCXSENDB" | 
|---|
| 88 | X "I $L($T("_LLAB_"))" E  Q | 
|---|
| 89 | D @LLAB | 
|---|
| 90 | Q | 
|---|
| 91 | ; | 
|---|
| 92 | DELREC(FILE,REC) ; | 
|---|
| 93 | ; | 
|---|
| 94 | N OCXNAME | 
|---|
| 95 | S OCXNAME=$G(^TMP("OCXSEND",$J,"LIST",+FILE,+REC)) Q:'$L(OCXNAME) | 
|---|
| 96 | K ^TMP("OCXSEND",$J,"LIST",+FILE,+REC) | 
|---|
| 97 | K ^TMP("OCXSEND",$J,"LIST",+FILE,"B",OCXNAME,+REC) | 
|---|
| 98 | W !,OCXNAME," removed from list." | 
|---|
| 99 | Q | 
|---|
| 100 | ; | 
|---|
| 101 | GETFILE() ; | 
|---|
| 102 | ; | 
|---|
| 103 | N OCXDIAG,OCXD0,OCXX,OCXADD | 
|---|
| 104 | S OCXDIAG="Select a"_$S($O(^TMP("OCXSEND",$J,"LIST",0)):"nother",1:"")_" File: " | 
|---|
| 105 | S OCXSCR="I $D(^OCXS(+$P(^(0),U,2),0)),$O(^OCXS(+$P(^(0),U,2),0))" | 
|---|
| 106 | S OCXID="N OCXCNT S OCXCNT=$$CNT^OCXSEND1(+$P(^(0),U,2)) I OCXCNT W ?50,$J(OCXCNT,5),"" selected for transport.""" | 
|---|
| 107 | W !!,OCXDIAG R OCXX:DTIME E  W "  <timeout>",$C(7) Q 0 | 
|---|
| 108 | Q:(OCXX[U) 0 Q:'$L(OCXX) 0 | 
|---|
| 109 | ; | 
|---|
| 110 | I (OCXX="?") S OCXX="??" | 
|---|
| 111 | ; | 
|---|
| 112 | S OCXD0=$$DIC(1,"EMQ",OCXDIAG,OCXX,OCXSCR,OCXID) | 
|---|
| 113 | ; | 
|---|
| 114 | Q:OCXD0 OCXD0 Q:$L(OCXX) 1 Q 0 | 
|---|
| 115 | ; | 
|---|
| 116 | CNT(OCXFILE) ; | 
|---|
| 117 | ; | 
|---|
| 118 | N CNT,OCXD0 | 
|---|
| 119 | S OCXD0=0 F CNT=0:1 S OCXD0=$O(^TMP("OCXSEND",$J,"LIST",OCXFILE,OCXD0)) Q:'OCXD0 | 
|---|
| 120 | Q CNT | 
|---|
| 121 | ; | 
|---|
| 122 | DIC(OCXDIC,OCXDIC0,OCXDICA,OCXX,OCXDICS,OCXW) ; | 
|---|
| 123 | ; | 
|---|
| 124 | N DIC,X,Y | 
|---|
| 125 | S DIC=$G(OCXDIC) Q:'$L(DIC) -1 | 
|---|
| 126 | S DIC(0)=$G(OCXDIC0) S:$L($G(OCXX)) X=OCXX | 
|---|
| 127 | S:$L($G(OCXDICS)) DIC("S")=OCXDICS | 
|---|
| 128 | S:$L($G(OCXDICA)) DIC("A")=OCXDICA | 
|---|
| 129 | S:$L($G(OCXW)) DIC("W")=OCXW | 
|---|
| 130 | D ^DIC Q:(Y<1) 0 Q Y | 
|---|
| 131 | ; | 
|---|