ALPBPARM ;SFVAMC/JC - Parameter Definitions ;05/02/2003 15:24
;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004
N DEF,OPR,ZLNK
N ALPBSCRN,ALPBPARM,ALPBDIVE,ALPBDIVI,ALPBDIVP,ALPBINST,LNK,ERR,DIC,DIE,DA,DR,DIR
D Q3
S DIR(0)="Y",DIR("B")="YES" D ^DIR
I $D(DTOUT)!($D(DUOUT)) G OUT
S DEF=Y K DA,DIR,Y
I DEF=1 S ALPBPARM="PSB BKUP DEFAULT"
;Associate HL7 Logical Links with division(s)
I $G(ALPBPARM)']"" S ALPBPARM="PSB BKUP MACHINES"
S DIR(0)="S^A:Add a Logical Link;D:Delete a Logical Link"
S DIR("A")="OPERATION",DIR("B")="ADD"
D ^DIR
I $D(DTOUT)!($D(DUOUT)) G OUT
S OPR=Y K DA,DIR,Y
I DEF=1 D DLINKS G OUT
DIV ;division
N ALPBDIVP,ALPBDIVI,ALPBDIVE,ALPBINST
S ALPBDIVP=""
;note-parameter file requires institutions instead of divisions
;in DIV class
D Q1 S DIR(0)="PO^40.8:EMZ" D ^DIR
Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))
S ALPBDIVI=+Y ;INTERNAL MEDICAL CENTER DIVISION
S ALPBDIVE=$P(Y,U,2) ;EXTERNAL MED CTR DIVISION
S ALPBINST=$P(Y(0),U,7) ;INSTITUTION FILE POINTER
I $G(ALPBINST)']"" W !,"Medical Ctr Divisions must be associated with an institution." G OUT
S ALPBDIVP="DIV.`"_ALPBINST ;PARAMETER FILE REFERENCE
I $G(ALPBDIVP)']"" W !,"Division information is required." G OUT
K DA,DIR,Y
D LINKS G DIV
Q
DLINKS ;What logical links for the DEFAULT parmeter?
K Y S X="BAR CODE MED ADMIN",DIC="^DIC(9.4,",DIC(0)="X",D="B" D IX^DIC
S ALPBPKG=+$P($G(Y),U,1)
I '$G(ALPBPKG) W !,"BAR CODE MED ADMIN MISSING FROM PACKAGE FILE." Q
S ALPBPKG="PKG.`"_ALPBPKG
K ZLNK
D GET(.ZLNK)
I '$D(ZLNK) W !,"No DEFAULT links defined for this package." Q:OPR="D"
W !,"The following DEFAULT links are associated with this package:"
S X="" F S X=$O(ZLNK("LINKS",X)) Q:X<1 D
. W !,$P(ZLNK("LINKS",X),U,2)
. I OPR="D" S ALPSCRN($P(ZLNK("LINKS",X),U,2),X)=ZLNK("LINKS",X)
F D Q:$G(DUOUT)!($G(DTOUT))!($G(DIRUT))
. D Q2
. I OPR="D" S DIR("S")="I $D(ALPSCRN($P(^HLCS(870,+Y,0),U,1)))"
. S DIR("A")="Select WorkStation Link "
. S DIR(0)="PO^870:EMZ" D ^DIR
. I $G(DUOUT)!($G(DTOUT))!($G(DIRUT)) K DA,DIR,Y Q
. I Y>0 S RESULT=$$SET(ALPBPKG,$P(Y,U,2))
. I $G(RESULT)'<1 W !,RESULT
. K DA,DIR,Y
K ZLNK
Q
LINKS ;What logical links for a division?
W !,"The Institution associated with this division is ",$$NS^XUAF4(ALPBINST)
D GET(.LNK,ALPBDIVE,1)
I '$D(LNK),$G(OPR)="D" W !,"No links defined for this division." Q
W !,"The following links are associated with this division:"
S X="" F S X=$O(LNK("LINKS",X)) Q:X<1 D
. W !,$P(LNK("LINKS",X),U,2)
. I OPR="D" S ALPSCRN($P(LNK("LINKS",X),U,2),X)=LNK("LINKS",X)
K LNK
F D Q:$G(DUOUT)!($G(DTOUT))!($G(DIRUT))
. D Q2
. I OPR="D" S DIR("S")="I $D(ALPSCRN($P(^HLCS(870,+Y,0),U,1)))"
. S DIR("A")="Select WorkStation Link "
. S DIR(0)="PO^870:EMZ" D ^DIR
. I $G(DUOUT)!($G(DTOUT))!($G(DIRUT)) K DA,DIR,Y Q
. I Y>0 S RESULT=$$SET(ALPBDIVP,$P(Y,U,2))
. I $G(RESULT)'<1 W !,RESULT
. K DA,DIR,Y,RESULT
Q
SET(ALPBDIVP,LINK) ;function to set or delete parameter for logical link
;and returns error response or zero
I OPR="A" D EN^XPAR(ALPBDIVP,ALPBPARM,LINK,LINK,.ERR) I ERR=0 W "...Added"
I OPR="D" D DEL^XPAR(ALPBDIVP,ALPBPARM,LINK,.ERR) I ERR=0 W "...Deleted" I $D(ALPSCRN(LINK)) K ALPSCRN(LINK)
Q ERR
GET(HLL,DIV,FLG,PR) ;Return HLL("LINKS") array for a given patient division
;HLL-HLL("links") array - pass by reference
;DIV- DIVISION (OPTIONAL)
;FLG-1=DON'T RETURN DEFAULT IF DIV IS EMPTY (OPTIONAL)
;PR-SUBSCRIBER PROTOCOL TO INCLUDE WITH THE HLL ARRAY (DEF=BCBU ORM RECV)
;or a default group if div null
I $G(PR)="" S PR="PSB BCBU ORM RECV"
I +$G(FLG)'=1 S FLG=0
N LST S LST=""
I $G(DIV)="" D G OUT
. K Y S X="BAR CODE MED ADMIN",DIC="^DIC(9.4,",DIC(0)="X",D="B" D IX^DIC
. S ALPBPKG=+$P($G(Y),U,1)
. Q:'ALPBPKG S ALPBPKG="PKG.`"_ALPBPKG
. D GETLST^XPAR(.LST,ALPBPKG,"PSB BKUP DEFAULT","E",.ERR)
. D GET1
N INST S INST=$$DV(DIV)
I INST']"" W !,"Unknown Institiution-please review Medical Ctr Division File." G OUT
D GETLST^XPAR(.LST,"DIV.`"_INST,"PSB BKUP MACHINES","E",.ERR)
I $O(LST(0))<1!(ERR) D
. Q:+FLG=1
. D GET(.HLL,"") ;Try to use default list if no results.
GET1 ;
I $O(LST(0)),ERR=0 N X S X=0 F S X=$O(LST(X)) Q:X<1 D
. Q:$P(LST(X),U,2)']""
. N LNK870 S LNK870=$P(LST(X),U,2) Q:$E(LNK870,1,2)="VA" ;don't init hospital
. S HLL("LINKS",X)=PR_U_$P(LST(X),U,2)
Q
DV(DV) ;take internal or external division and return institution
I +DV>0 S X="`"_DV
N Y,DIC,DA
S DIC=40.8,DIC(0)="MQZ",X=DV D ^DIC
I Y'<1 Q $P(Y(0),U,7)
Q ""
Q1 ;division help
S DIR("?")=" "
S DIR("?",1)="If you are associating different workstations with different"
S DIR("?",2)="divisions, you must choose a division first, then you will be asked"
S DIR("?",3)="to enter HL7 Logical Links that correspond to this division."
Q
Q2 ;Link help
S DIR("?")=" "
S DIR("?",1)="Each of the workstations you use for BCMA backups will"
S DIR("?",2)="have a fixed TCP/IP address assigned and an HL7 Logical"
S DIR("?",3)="Link associated with it. Now your workstations must be"
S DIR("?",4)="associated with each division you have defined. If you are not a multi-"
S DIR("?",5)="divisional facility, all workstations will be associated"
S DIR("?",6)="with only one facility."
Q
Q3 ;Ask Default
W !,"Do you want all backup data to go to the same group of"
W !,"backup devices regardless of the patient's division?"
Q
OUT ;EXIT
Q
ALPBPARM ;SFVAMC/JC - Parameter Definitions ;05/02/2003 15:24
+1 ;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004
+2 NEW DEF,OPR,ZLNK
+3 NEW ALPBSCRN,ALPBPARM,ALPBDIVE,ALPBDIVI,ALPBDIVP,ALPBINST,LNK,ERR,DIC,DIE,DA,DR,DIR
+4 DO Q3
+5 SET DIR(0)="Y"
SET DIR("B")="YES"
DO ^DIR
+6 IF $DATA(DTOUT)!($DATA(DUOUT))
GOTO OUT
+7 SET DEF=Y
KILL DA,DIR,Y
+8 IF DEF=1
SET ALPBPARM="PSB BKUP DEFAULT"
+9 ;Associate HL7 Logical Links with division(s)
+10 IF $GET(ALPBPARM)']""
SET ALPBPARM="PSB BKUP MACHINES"
+11 SET DIR(0)="S^A:Add a Logical Link;D:Delete a Logical Link"
+12 SET DIR("A")="OPERATION"
SET DIR("B")="ADD"
+13 DO ^DIR
+14 IF $DATA(DTOUT)!($DATA(DUOUT))
GOTO OUT
+15 SET OPR=Y
KILL DA,DIR,Y
+16 IF DEF=1
DO DLINKS
GOTO OUT
DIV ;division
+1 NEW ALPBDIVP,ALPBDIVI,ALPBDIVE,ALPBINST
+2 SET ALPBDIVP=""
+3 ;note-parameter file requires institutions instead of divisions
+4 ;in DIV class
+5 DO Q1
SET DIR(0)="PO^40.8:EMZ"
DO ^DIR
+6 IF $DATA(DTOUT)!($DATA(DUOUT))!($DATA(DIRUT))
QUIT
+7 ;INTERNAL MEDICAL CENTER DIVISION
SET ALPBDIVI=+Y
+8 ;EXTERNAL MED CTR DIVISION
SET ALPBDIVE=$PIECE(Y,U,2)
+9 ;INSTITUTION FILE POINTER
SET ALPBINST=$PIECE(Y(0),U,7)
+10 IF $GET(ALPBINST)']""
WRITE !,"Medical Ctr Divisions must be associated with an institution."
GOTO OUT
+11 ;PARAMETER FILE REFERENCE
SET ALPBDIVP="DIV.`"_ALPBINST
+12 IF $GET(ALPBDIVP)']""
WRITE !,"Division information is required."
GOTO OUT
+13 KILL DA,DIR,Y
+14 DO LINKS
GOTO DIV
+15 QUIT
DLINKS ;What logical links for the DEFAULT parmeter?
+1 KILL Y
SET X="BAR CODE MED ADMIN"
SET DIC="^DIC(9.4,"
SET DIC(0)="X"
SET D="B"
DO IX^DIC
+2 SET ALPBPKG=+$PIECE($GET(Y),U,1)
+3 IF '$GET(ALPBPKG)
WRITE !,"BAR CODE MED ADMIN MISSING FROM PACKAGE FILE."
QUIT
+4 SET ALPBPKG="PKG.`"_ALPBPKG
+5 KILL ZLNK
+6 DO GET(.ZLNK)
+7 IF '$DATA(ZLNK)
WRITE !,"No DEFAULT links defined for this package."
IF OPR="D"
QUIT
+8 WRITE !,"The following DEFAULT links are associated with this package:"
+9 SET X=""
FOR
SET X=$ORDER(ZLNK("LINKS",X))
IF X<1
QUIT
Begin DoDot:1
+10 WRITE !,$PIECE(ZLNK("LINKS",X),U,2)
+11 IF OPR="D"
SET ALPSCRN($PIECE(ZLNK("LINKS",X),U,2),X)=ZLNK("LINKS",X)
End DoDot:1
+12 FOR
Begin DoDot:1
+13 DO Q2
+14 IF OPR="D"
SET DIR("S")="I $D(ALPSCRN($P(^HLCS(870,+Y,0),U,1)))"
+15 SET DIR("A")="Select WorkStation Link "
+16 SET DIR(0)="PO^870:EMZ"
DO ^DIR
+17 IF $GET">GET">GET">GET(DUOUT)!($GET">GET">GET">GET(DTOUT))!($GET">GET">GET">GET(DIRUT))
KILL DA,DIR,Y
QUIT
+18 IF Y>0
SET RESULT=$$SET(ALPBPKG,$PIECE(Y,U,2))
+19 IF $GET(RESULT)'<1
WRITE !,RESULT
+20 KILL DA,DIR,Y
End DoDot:1
IF $GET">GET">GET">GET(DUOUT)!($GET">GET">GET">GET(DTOUT))!($GET">GET">GET">GET(DIRUT))
QUIT
+21 KILL ZLNK
+22 QUIT
LINKS ;What logical links for a division?
+1 WRITE !,"The Institution associated with this division is ",$$NS^XUAF4(ALPBINST)
+2 DO GET(.LNK,ALPBDIVE,1)
+3 IF '$DATA(LNK)
IF $GET(OPR)="D"
WRITE !,"No links defined for this division."
QUIT
+4 WRITE !,"The following links are associated with this division:"
+5 SET X=""
FOR
SET X=$ORDER(LNK("LINKS",X))
IF X<1
QUIT
Begin DoDot:1
+6 WRITE !,$PIECE(LNK("LINKS",X),U,2)
+7 IF OPR="D"
SET ALPSCRN($PIECE(LNK("LINKS",X),U,2),X)=LNK("LINKS",X)
End DoDot:1
+8 KILL LNK
+9 FOR
Begin DoDot:1
+10 DO Q2
+11 IF OPR="D"
SET DIR("S")="I $D(ALPSCRN($P(^HLCS(870,+Y,0),U,1)))"
+12 SET DIR("A")="Select WorkStation Link "
+13 SET DIR(0)="PO^870:EMZ"
DO ^DIR
+14 IF $GET">GET">GET">GET(DUOUT)!($GET">GET">GET">GET(DTOUT))!($GET">GET">GET">GET(DIRUT))
KILL DA,DIR,Y
QUIT
+15 IF Y>0
SET RESULT=$$SET(ALPBDIVP,$PIECE(Y,U,2))
+16 IF $GET(RESULT)'<1
WRITE !,RESULT
+17 KILL DA,DIR,Y,RESULT
End DoDot:1
IF $GET">GET">GET">GET(DUOUT)!($GET">GET">GET">GET(DTOUT))!($GET">GET">GET">GET(DIRUT))
QUIT
+18 QUIT
SET(ALPBDIVP,LINK) ;function to set or delete parameter for logical link
+1 ;and returns error response or zero
+2 IF OPR="A"
DO EN^XPAR(ALPBDIVP,ALPBPARM,LINK,LINK,.ERR)
IF ERR=0
WRITE "...Added"
+3 IF OPR="D"
DO DEL^XPAR(ALPBDIVP,ALPBPARM,LINK,.ERR)
IF ERR=0
WRITE "...Deleted"
IF $DATA(ALPSCRN(LINK))
KILL ALPSCRN(LINK)
+4 QUIT ERR
GET(HLL,DIV,FLG,PR) ;Return HLL("LINKS") array for a given patient division
+1 ;HLL-HLL("links") array - pass by reference
+2 ;DIV- DIVISION (OPTIONAL)
+3 ;FLG-1=DON'T RETURN DEFAULT IF DIV IS EMPTY (OPTIONAL)
+4 ;PR-SUBSCRIBER PROTOCOL TO INCLUDE WITH THE HLL ARRAY (DEF=BCBU ORM RECV)
+5 ;or a default group if div null
+6 IF $GET(PR)=""
SET PR="PSB BCBU ORM RECV"
+7 IF +$GET(FLG)'=1
SET FLG=0
+8 NEW LST
SET LST=""
+9 IF $GET(DIV)=""
Begin DoDot:1
+10 KILL Y
SET X="BAR CODE MED ADMIN"
SET DIC="^DIC(9.4,"
SET DIC(0)="X"
SET D="B"
DO IX^DIC
+11 SET ALPBPKG=+$PIECE($GET(Y),U,1)
+12 IF 'ALPBPKG
QUIT
SET ALPBPKG="PKG.`"_ALPBPKG
+13 DO GETLST^XPAR(.LST,ALPBPKG,"PSB BKUP DEFAULT","E",.ERR)
+14 DO GET1
End DoDot:1
GOTO OUT
+15 NEW INST
SET INST=$$DV(DIV)
+16 IF INST']""
WRITE !,"Unknown Institiution-please review Medical Ctr Division File."
GOTO OUT
+17 DO GETLST^XPAR(.LST,"DIV.`"_INST,"PSB BKUP MACHINES","E",.ERR)
+18 IF $ORDER(LST(0))<1!(ERR)
Begin DoDot:1
+19 IF +FLG=1
QUIT
+20 ;Try to use default list if no results.
DO GET(.HLL,"")
End DoDot:1
GET1 ;
+1 IF $ORDER(LST(0))
IF ERR=0
NEW X
SET X=0
FOR
SET X=$ORDER(LST(X))
IF X<1
QUIT
Begin DoDot:1
+2 IF $PIECE(LST(X),U,2)']""
QUIT
+3 ;don't init hospital
NEW LNK870
SET LNK870=$PIECE(LST(X),U,2)
IF $EXTRACT(LNK870,1,2)="VA"
QUIT
+4 SET HLL("LINKS",X)=PR_U_$PIECE(LST(X),U,2)
End DoDot:1
+5 QUIT
DV(DV) ;take internal or external division and return institution
+1 IF +DV>0
SET X="`"_DV
+2 NEW Y,DIC,DA
+3 SET DIC=40.8
SET DIC(0)="MQZ"
SET X=DV
DO ^DIC
+4 IF Y'<1
QUIT $PIECE(Y(0),U,7)
+5 QUIT ""
Q1 ;division help
+1 SET DIR("?")=" "
+2 SET DIR("?",1)="If you are associating different workstations with different"
+3 SET DIR("?",2)="divisions, you must choose a division first, then you will be asked"
+4 SET DIR("?",3)="to enter HL7 Logical Links that correspond to this division."
+5 QUIT
Q2 ;Link help
+1 SET DIR("?")=" "
+2 SET DIR("?",1)="Each of the workstations you use for BCMA backups will"
+3 SET DIR("?",2)="have a fixed TCP/IP address assigned and an HL7 Logical"
+4 SET DIR("?",3)="Link associated with it. Now your workstations must be"
+5 SET DIR("?",4)="associated with each division you have defined. If you are not a multi-"
+6 SET DIR("?",5)="divisional facility, all workstations will be associated"
+7 SET DIR("?",6)="with only one facility."
+8 QUIT
Q3 ;Ask Default
+1 WRITE !,"Do you want all backup data to go to the same group of"
+2 WRITE !,"backup devices regardless of the patient's division?"
+3 QUIT
OUT ;EXIT
+1 QUIT