1 | XQOR ; SLC/KCM - Prepare to Unwind Options ;5/24/94 17:58 ;
|
---|
2 | ;;8.0;KERNEL;**48,56**;Jul 10, 1995
|
---|
3 | S DIC=19,DIC(0)="AEMQ" D ^DIC K DIC Q:Y<0 S X=+Y_";DIC(19,"
|
---|
4 | EN ;Process options/protocols from top
|
---|
5 | ;From: Anywhere Entry: X,{DIC,XQORFLG} Exit: none
|
---|
6 | Q:$D(X)[0 K XQORPOP,XQORQUIT
|
---|
7 | I '$D(XQORS) S XQORS=0 K ^TMP("XQORS",$J)
|
---|
8 | S XQORS=XQORS+1 ;push
|
---|
9 | I $D(XQOR("HIJACK")) S X=XQOR("HIJACK"),DIC=101 K XQOR("HIJACK")
|
---|
10 | I X?1.N1";ORD(101,"!(X?1.N1";DIC(19,") S ^TMP("XQORS",$J,XQORS,"REF")="^"_$P(X,";",2)_+X_",",^TMP("XQORS",$J,XQORS,"VPT")=X
|
---|
11 | E S:$D(DIC)[0 DIC=19 S DIC(0)="N" D ^DIC S:Y>0 ^TMP("XQORS",$J,XQORS,"REF")=DIC_+Y_",",^TMP("XQORS",$J,XQORS,"VPT")=+Y_";"_$P(DIC,"^",2) K DIC G:Y<0 EX
|
---|
12 | S XQORNEST(XQORS)=^TMP("XQORS",$J,XQORS,"VPT"),XQORNEST=XQORS
|
---|
13 | G:'$D(@(^TMP("XQORS",$J,XQORS,"REF")_"0)")) EX S ^TMP("XQORS",$J,XQORS,"FLG")=$P(^(0),"^",4)_"^^" G:$P(^TMP("XQORS",$J,XQORS,"FLG"),"^")'?1A EX
|
---|
14 | I $L($P(@(^TMP("XQORS",$J,XQORS,"REF")_"0)"),"^",3)) W !!,$P(^(0),"^",3),! D READ^XQOR4 G EX
|
---|
15 | D C19^XQOR4 G:Y<0 EX
|
---|
16 | S ^TMP("XQORS",$J,0,"FILE")=";"_$P(^TMP("XQORS",$J,XQORS,"VPT"),";",2),^TMP("XQORS",$J,XQORS,"INP")=""
|
---|
17 | I XQORS>1,$D(^TMP("XQORS",$J,XQORS-1,"ITM")),$D(^TMP("XQORS",$J,XQORS-1,"ITM",^TMP("XQORS",$J,XQORS-1,"ITM"),"IN")) S ^TMP("XQORS",$J,XQORS,"INP")=^TMP("XQORS",$J,XQORS-1,"ITM",^TMP("XQORS",$J,XQORS-1,"ITM"),"IN")
|
---|
18 | I XQORS>1,$D(XQORFLG("PI")) K XQORFLG("PI") S ^TMP("XQORS",$J,XQORS,"INP")=^TMP("XQORS",$J,XQORS-1,"INP")
|
---|
19 | S XQORNOD=^TMP("XQORS",$J,XQORS,"VPT"),XQORNOD(0)=^TMP("XQORS",$J,XQORS,"INP")
|
---|
20 | I XQORS>1,$D(^TMP("XQORS",$J,XQORS-1,"FLG")) S X=^TMP("XQORS",$J,XQORS-1,"FLG"),$P(^TMP("XQORS",$J,XQORS,"FLG"),"^",3)=$S($L($P(X,"^",5)):$P(X,"^",5),1:$P(X,"^",3))
|
---|
21 | I ^TMP("XQORS",$J,0,"FILE")=";ORD(101,",$D(@(^TMP("XQORS",$J,XQORS,"REF")_"4)")) S:$P(^(4),"^",3)="Y" $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",2)=1
|
---|
22 | I ^TMP("XQORS",$J,0,"FILE")=";DIC(19,",$P(^TMP("XQORS",$J,XQORS,"FLG"),"^")="M" S $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",2)=1
|
---|
23 | I $D(XQORFLG) S:$D(XQORFLG("PS")) $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",2)=+XQORFLG("PS") S:$D(XQORFLG("SH")) $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",3)=+XQORFLG("SH") K XQORFLG
|
---|
24 | I $D(ORITMO) S $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",6)=1 K ORITMO G REDO^XQOR1
|
---|
25 | I $P(^TMP("XQORS",$J,XQORS,"FLG"),"^")="D" N XQORDLG
|
---|
26 | G LOOP^XQOR1
|
---|
27 | EX K XQORNEST(XQORS),XQORFLG,XQORNOD,XQORY,^TMP("XQORS",$J,XQORS) S XQORS=XQORS-1,XQORNEST=XQORS ;pop
|
---|
28 | I XQORS=0 K XQORNEST,XQORS,^TMP("XQORS",$J),XQORSPEW
|
---|
29 | Q
|
---|
30 | EN1 ;Process items on option/protocol only (i.e., skip initial actions)
|
---|
31 | ;From: Anywhere Entry: X,DIC Exit: none
|
---|
32 | S ORITMO=1 G EN
|
---|
33 | Q
|
---|
34 | XQ ;From: Menuman Entry: XQOR Exit: XQOR
|
---|
35 | S X=+XQOR_";DIC(19," I $D(^DD(19,0,"VR")),^("VR")<5.9 G EN
|
---|
36 | G EN1
|
---|
37 | MSG(X,XQORMSG) ;Event point for HL7 messages
|
---|
38 | N DIC S DIC=101
|
---|
39 | I '$D(XQORHSTK) N XQORHSTK S XQORHSTK=-1 K ^TMP("XQORHSTK",$J)
|
---|
40 | S XQORHSTK=XQORHSTK+1
|
---|
41 | K ^TMP("XQORHSTK",$J,XQORHSTK) M ^TMP("XQORHSTK",$J,XQORHSTK)=XQORMSG
|
---|
42 | D EN^XQOR
|
---|
43 | S XQORHSTK=XQORHSTK-1
|
---|
44 | I XQORHSTK>-1 K XQORMSG M XQORMSG=^TMP("XQORHSTK",$J,XQORHSTK)
|
---|
45 | I XQORHSTK=-1 K ^TMP("XQORHSTK",$J)
|
---|
46 | Q
|
---|