ROUTINE XQOR*48,56*: Difference between revisions

From VistApedia
Jump to navigationJump to search
Created page with "ROUTINE XQOR == Listing == === XQOR === XQOR ; SLC/KCM - Prepare to Unwind Options ;5/24/94 17:58 ; ;;8.0;KERNEL;**48,56**;Jul 10, 1995 S DIC=19,DIC(0)="AEMQ"..."
 
;
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
[[ROUTINE XQOR]]
[[ROUTINE XQOR]]
[[ROUTINE XQOR*48,56,437*]] includes VA/VOE patch 437
== Listing ==
== Listing ==
=== XQOR ===
=== XQOR ===
Line 7: Line 8:
     S DIC=19,DIC(0)="AEMQ" D ^DIC K DIC Q:Y<0  S X=+Y_";DIC(19,"
     S DIC=19,DIC(0)="AEMQ" D ^DIC K DIC Q:Y<0  S X=+Y_";DIC(19,"


    EN ;Process options/protocols from top
=== EN ===
EN  ;Process options/protocols from top


     ;From: Anywhere  Entry: X,{DIC,XQORFLG}  Exit: none
     ;From: Anywhere  Entry: X,{DIC,XQORFLG}  Exit: none
Line 54: Line 56:


=== EX ===
=== EX ===
    EX K XQORNEST(XQORS),XQORFLG,XQORNOD,XQORY,^TMP("XQORS",$J,XQORS) S XQORS=XQORS-1,XQORNEST=XQORS ;pop
EX K XQORNEST(XQORS),XQORFLG,XQORNOD,XQORY,^TMP("XQORS",$J,XQORS) S XQORS=XQORS-1,XQORNEST=XQORS ;pop
 
     I XQORS=0 K XQORNEST,XQORS,^TMP("XQORS",$J),XQORSPEW
     I XQORS=0 K XQORNEST,XQORS,^TMP("XQORS",$J),XQORSPEW
    Q


    Q
=== EN1 ===
=== EN1 ===
    EN1 ;Process items on option/protocol only (i.e., skip initial actions)
EN1 ;Process items on option/protocol only (i.e., skip initial actions)
 
     ;From: Anywhere  Entry: X,DIC  Exit: none
     ;From: Anywhere  Entry: X,DIC  Exit: none
     S ORITMO=1 G EN
     S ORITMO=1 G EN
     Q
     Q


=== XQ ===
=== XQ ===
    XQ ;From: Menuman  Entry: XQOR  Exit: XQOR
XQ ;From: Menuman  Entry: XQOR  Exit: XQOR
 
     S X=+XQOR_";DIC(19," I $D(^DD(19,0,"VR")),^("VR")<5.9 G EN
     S X=+XQOR_";DIC(19," I $D(^DD(19,0,"VR")),^("VR")<5.9 G EN
     G EN1
     G EN1


=== MSG ===
=== MSG ===
    MSG(X,XQORMSG) ;Event point for HL7 messages
MSG(X,XQORMSG) ;Event point for HL7 messages
    ; @in : X
    ; @in : XQORMSG == ?HL7 Message?


    ; 101== PROTOCOL File
     N DIC S DIC=101
     N DIC S DIC=101
 
    ; if we don't have an HL7 stack initialize it
     I '$D(XQORHSTK) N XQORHSTK S XQORHSTK=-1 K ^TMP("XQORHSTK",$J)
     I '$D(XQORHSTK) N XQORHSTK S XQORHSTK=-1 K ^TMP("XQORHSTK",$J)


    ; push onto stack, kill off top of stack, save XQORMSG as top of stack
     S XQORHSTK=XQORHSTK+1
     S XQORHSTK=XQORHSTK+1
     K ^TMP("XQORHSTK",$J,XQORHSTK) M ^TMP("XQORHSTK",$J,XQORHSTK)=XQORMSG
     K ^TMP("XQORHSTK",$J,XQORHSTK) M ^TMP("XQORHSTK",$J,XQORHSTK)=XQORMSG



Latest revision as of 23:14, 13 December 2020

ROUTINE XQOR
ROUTINE XQOR*48,56,437* includes VA/VOE patch 437

Listing

XQOR

XQOR ; SLC/KCM - Prepare to Unwind Options ;5/24/94  17:58 ;
    ;;8.0;KERNEL;**48,56**;Jul 10, 1995
    S DIC=19,DIC(0)="AEMQ" D ^DIC K DIC Q:Y<0  S X=+Y_";DIC(19,"

EN

EN  ;Process options/protocols from top
    ;From: Anywhere  Entry: X,{DIC,XQORFLG}  Exit: none
    Q:$D(X)[0  K XQORPOP,XQORQUIT
    I '$D(XQORS) S XQORS=0 K ^TMP("XQORS",$J)
    S XQORS=XQORS+1 ;push
    I $D(XQOR("HIJACK")) S X=XQOR("HIJACK"),DIC=101 K XQOR("HIJACK")
    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
    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
    S XQORNEST(XQORS)=^TMP("XQORS",$J,XQORS,"VPT"),XQORNEST=XQORS
    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
    I $L($P(@(^TMP("XQORS",$J,XQORS,"REF")_"0)"),"^",3)) W !!,$P(^(0),"^",3),! D READ^XQOR4 G EX
    D C19^XQOR4 G:Y<0 EX
    S ^TMP("XQORS",$J,0,"FILE")=";"_$P(^TMP("XQORS",$J,XQORS,"VPT"),";",2),^TMP("XQORS",$J,XQORS,"INP")=""
    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")
    I XQORS>1,$D(XQORFLG("PI")) K XQORFLG("PI") S ^TMP("XQORS",$J,XQORS,"INP")=^TMP("XQORS",$J,XQORS-1,"INP")
    S XQORNOD=^TMP("XQORS",$J,XQORS,"VPT"),XQORNOD(0)=^TMP("XQORS",$J,XQORS,"INP")
    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))
    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
    I ^TMP("XQORS",$J,0,"FILE")=";DIC(19,",$P(^TMP("XQORS",$J,XQORS,"FLG"),"^")="M" S $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",2)=1
    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
    I $D(ORITMO) S $P(^TMP("XQORS",$J,XQORS,"FLG"),"^",6)=1 K ORITMO G REDO^XQOR1
    I $P(^TMP("XQORS",$J,XQORS,"FLG"),"^")="D" N XQORDLG
    G LOOP^XQOR1

EX

EX  K XQORNEST(XQORS),XQORFLG,XQORNOD,XQORY,^TMP("XQORS",$J,XQORS) S XQORS=XQORS-1,XQORNEST=XQORS ;pop
    I XQORS=0 K XQORNEST,XQORS,^TMP("XQORS",$J),XQORSPEW
    Q

EN1

EN1 ;Process items on option/protocol only (i.e., skip initial actions)
    ;From: Anywhere  Entry: X,DIC  Exit: none
    S ORITMO=1 G EN
    Q

XQ

XQ  ;From: Menuman  Entry: XQOR  Exit: XQOR
    S X=+XQOR_";DIC(19," I $D(^DD(19,0,"VR")),^("VR")<5.9 G EN
    G EN1

MSG

MSG(X,XQORMSG) ;Event point for HL7 messages
    ; @in : X 
    ; @in : XQORMSG == ?HL7 Message?
    ; 101== PROTOCOL File
    N DIC S DIC=101
    ; if we don't have an HL7 stack initialize it
    I '$D(XQORHSTK) N XQORHSTK S XQORHSTK=-1 K ^TMP("XQORHSTK",$J)
    ; push onto stack, kill off top of stack, save XQORMSG as top of stack
    S XQORHSTK=XQORHSTK+1
    K ^TMP("XQORHSTK",$J,XQORHSTK) M ^TMP("XQORHSTK",$J,XQORHSTK)=XQORMSG
    D EN^XQOR
    S XQORHSTK=XQORHSTK-1
    I XQORHSTK>-1 K XQORMSG M XQORMSG=^TMP("XQORHSTK",$J,XQORHSTK)
    I XQORHSTK=-1 K ^TMP("XQORHSTK",$J)
    Q