- XQSET ;MJM/SEA - Rebuild display/user XUTL("XQO") ;05/09/2011
- ;;8.0;KERNEL;**28,82,155,569**;Jul 10, 1995;Build 4
- SET ;Rebuild the +XQDIC and "U"_DUZ nodes
- ;
- ;** P569 START CJM
- I XQDIC["U",$P(XQDIC,"U",2)'=DUZ D Q
- .D
- ..N DUZ
- ..S DUZ=$P(XQDIC,"U",2)
- ..D NEWSET
- .D
- ..N XQDIC
- ..S XQDIC="U"_DUZ
- ..D NEWSET
- D NEWSET
- Q
- ;
- NEWSET ;
- ;
- ; ** P569 END CJM
- ;
- K ^XUTL("XQO",XQDIC)
- I XQDIC=+XQDIC,'$D(^DIC(19,XQDIC,0)) Q
- F XQSI=0:0 S XQSI=$S(+XQDIC:$O(^DIC(19,XQDIC,10,XQSI)),1:$O(^VA(200,DUZ,203,XQSI))) Q:XQSI'>0 I $D(^(XQSI,0)) S XQSY=^(0) D SET1
- S XQSK=250,XQSD="",XQSM=1,XQSY=0,XQNO=0
- F XQSI=0:0 S XQSY=$O(XQST(XQSY)) Q:XQSY=""!($E(XQSY,1,4)="ZZZZ") D
- .S XQS0=+XQST(XQSY)
- .D DIS
- .S:(XQSK<$L(XQS0)) ^XUTL("XQO",XQDIC,0,XQSM)=XQSD,XQSD="",XQSK=250,XQSM=XQSM+1
- .I XQNO S XQNO=0 Q
- .S XQSD=XQSD_XQS0,XQSK=XQSK-$L(XQS0)
- .Q
- I XQDIC=+XQDIC,$D(^DIC(19,XQDIC,0))#2 S:'$D(^DIC(19,XQDIC,99)) ^DIC(19,XQDIC,99)=$H S %H=^DIC(19,XQDIC,99)
- I XQDIC'=+XQDIC S:'$D(^VA(200,DUZ,203.1)) ^VA(200,DUZ,203.1)=$H S %H=^VA(200,DUZ,203.1)
- S ^XUTL("XQO",XQDIC,0,XQSM)=XQSD,^XUTL("XQO",XQDIC,0)=XQSM_U_%H
- S XQSY=0 F XQSI=0:0 S XQSY=$O(XQST(XQSY)) Q:XQSY="" S %=XQST(XQSY),XQSK=$E(XQSY,5,99) D:$E(XQSK,1)=" " XBLK S:$L(XQSK) ^XUTL("XQO",XQDIC,XQSK)=%
- K %,%H,X,XQNO,XQSA,XQSB,XQSD,XQSDO,XQSI,XQSL,XQSK,XQS0,XQSOO,XQSPR,XQSN,XQST,XQSM,XQSX,XQSZ,XQSY
- Q
- ;
- SET1 Q:'$D(^DIC(19,+XQSY,0)) S XQS0=^(0),X=$S($D(^("U")):^("U"),1:"") I X="" S X=$E($P(XQS0,U,2),1,30) D UP S ^("U")=X
- S XQSOO=$P(XQS0,U,3),XQS0=$P(XQS0,U,1,2)_U_($S($P(XQS0,U,3)]"":1,1:""))_U_$P(XQS0,U,4,99)
- S (XQSX,XQSZ)="",%=$P(XQS0,U,9) I %]"",$L(%)>2 S XQSX=%_"MO-FR",XQSZ="MO-FR "_%
- I $D(^DIC(19,+XQSY,3.91)) F XQSL=0:0 S XQSL=$O(^DIC(19,+XQSY,3.91,XQSL)) Q:XQSL'>0 I ^(XQSL,0)]"" S XQSX=$S(XQSX'="":XQSX_";",1:"")_$P(^(0),U,1)_$P(^(0),U,2),XQSZ=$S(XQSZ'="":XQSZ_"; ",1:"")_$P(^(0),U,2)_" "_$P(^(0),U,1)
- I XQSX]"" S $P(XQS0,U,9)=XQSX
- S XQSX="" I $P(XQS0,U,16),$D(^DIC(19,+XQSY,3)) S XQSX=$P(^(3),U) I XQSX'="" S $P(XQS0,U,16)=XQSX
- S XQSN=$P(XQSY,U,2),XQSDO=$P(XQSY,U,3),^XUTL("XQO",XQDIC,"^",+XQSY)=XQSN_U_$P(XQS0,U,1,4)_"^^"_$P(XQS0,U,6,99)
- I $L(X) S:X?.N X=" "_X S X=$S($L(XQSN):"ZZZZ",$L(XQSDO):$E(0,1,($L(XQSDO*100)=3))_(XQSDO*100),1:"BBBB")_X D:$D(XQST(X)) SET3 S XQST(X)=+XQSY_"^1"
- I $L(XQSN) S X=XQSN D UP Q:'$L(X) S:X?.N X=$E(" ",1,5-$L(X))_X S X=$S($L(XQSDO):$E(0,1,($L(XQSDO*100)=3))_(XQSDO*100),1:"AAAA")_X D:$D(XQST(X)) SET3 S XQST(X)=+XQSY_"^0"
- S:XQSOO]"" XQST(X,"OO")=XQSOO
- S:XQSZ]"" XQST(X,"TM")=XQSZ
- Q
- SET3 S XQSD=X F I=0:0 S XQSM=$O(XQST(XQSD)) Q:($P(XQSM,U,1)'=X) S XQSD=XQSM
- S I=+$P(XQSD,U,2) S X=X_U_(I+1) Q
- CK ;
- S %=$P(^DIC(19,D0,0),U,6),%Y=$P(^DIC(19,D0,0),U,1) I $S($L(%):$D(^XUSEC(%,DUZ)),1:1)
- Q:'$T
- I DUZ(0)="@"!$D(^XUSEC("XUMGR",DUZ))!$D(^VA(200,DUZ,19.5,Y,0))
- Q:'$T
- CK1 S %=$P(^DIC(19,D0,0),U,4),%Y=$P(^DIC(19,Y,0),U,4) I $S((%'="O"&(%'="Q"))&(%Y'="Q"):1,(%="O"&(%Y="O")):1,(%="Q"&((%Y="O")!(%Y="Q"))):1,1:0)
- Q
- DEV ;See if device is legit for this option
- S (%,XQSJ)=0 Q:'$D(^DIC(19,+XQSW,3.96,0))
- F XQSL=1:1 S %=$O(^DIC(19,+XQSW,3.96,%)) Q:%=""!(%'=+%) S:XQSIO=^(%,0) XQSJ=1
- Q
- UP S X=$$UP^XLFSTR(X) ;F XQSA=1:1 Q:X?.NUP S %=$A(X,XQSA) I %<123,%>96 S X=$E(X,1,XQSA-1)_$C(%-32)_$E(X,XQSA+1,255)
- Q
- XBLK F XASB=0:0 S XQSW=$E(XQSK,1) Q:XQSW'=" " S XQSK=$E(XQSK,2,99)
- Q
- DIS ;Create display nodes
- S %=$S($D(^XUTL("XQO",XQDIC,"^",XQS0)):^(XQS0),1:"") S:$L(%) XQS0=% I '$L(%) S %=$O(^DIC(19,XQDIC,10,"B",XQS0,%)),%=$P(^DIC(19,XQDIC,10,%,0),U,2),XQS0=%_U_^DIC(19,XQS0,0)
- I "MO"[$P(XQS0,U,5) S $P(XQS0,U,3)=$P(XQS0,U,3)_" ..."
- I "SB"[$P(XQS0,U,5) S XQNO=1 ;Don't Display servers or broker-type options
- S XQS0=$P(XQS0,U,1,3)_U_$S($D(XQST(XQSY,"OO")):XQST(XQSY,"OO"),1:"")_U_$P(XQS0,U,7)_U_$S($D(XQST(XQSY,"TM")):XQST(XQSY,"TM"),1:"")_U_$P(XQS0,U,11)_U_$P(XQS0,U,17)_U
- Q
- XQSET ;MJM/SEA - Rebuild display/user XUTL("XQO") ;05/09/2011
- +1 ;;8.0;KERNEL;**28,82,155,569**;Jul 10, 1995;Build 4
- SET ;Rebuild the +XQDIC and "U"_DUZ nodes
- +1 ;
- +2 ;** P569 START CJM
- +3 IF XQDIC["U"
- IF $PIECE(XQDIC,"U",2)'=DUZ
- Begin DoDot:1
- +4 Begin DoDot:2
- +5 NEW DUZ
- +6 SET DUZ=$PIECE(XQDIC,"U",2)
- +7 DO NEWSET
- End DoDot:2
- +8 Begin DoDot:2
- +9 NEW XQDIC
- +10 SET XQDIC="U"_DUZ
- +11 DO NEWSET
- End DoDot:2
- End DoDot:1
- QUIT
- +12 DO NEWSET
- +13 QUIT
- +14 ;
- NEWSET ;
- +1 ;
- +2 ; ** P569 END CJM
- +3 ;
- +4 KILL ^XUTL("XQO",XQDIC)
- +5 IF XQDIC=+XQDIC
- IF '$DATA(^DIC(19,XQDIC,0))
- QUIT
- +6 FOR XQSI=0:0
- SET XQSI=$SELECT(+XQDIC:$ORDER(^DIC(19,XQDIC,10,XQSI)),1:$ORDER(^VA(200,DUZ,203,XQSI)))
- IF XQSI'>0
- QUIT
- IF $DATA(^(XQSI,0))
- SET XQSY=^(0)
- DO SET1
- +7 SET XQSK=250
- SET XQSD=""
- SET XQSM=1
- SET XQSY=0
- SET XQNO=0
- +8 FOR XQSI=0:0
- SET XQSY=$ORDER(XQST(XQSY))
- IF XQSY=""!($EXTRACT(XQSY,1,4)="ZZZZ")
- QUIT
- Begin DoDot:1
- +9 SET XQS0=+XQST(XQSY)
- +10 DO DIS
- +11 IF (XQSK<$LENGTH(XQS0))
- SET ^XUTL("XQO",XQDIC,0,XQSM)=XQSD
- SET XQSD=""
- SET XQSK=250
- SET XQSM=XQSM+1
- +12 IF XQNO
- SET XQNO=0
- QUIT
- +13 SET XQSD=XQSD_XQS0
- SET XQSK=XQSK-$LENGTH(XQS0)
- +14 QUIT
- End DoDot:1
- +15 IF XQDIC=+XQDIC
- IF $DATA(^DIC(19,XQDIC,0))#2
- IF '$DATA(^DIC(19,XQDIC,99))
- SET ^DIC(19,XQDIC,99)=$HOROLOG
- SET %H=^DIC(19,XQDIC,99)
- +16 IF XQDIC'=+XQDIC
- IF '$DATA(^VA(200,DUZ,203.1))
- SET ^VA(200,DUZ,203.1)=$HOROLOG
- SET %H=^VA(200,DUZ,203.1)
- +17 SET ^XUTL("XQO",XQDIC,0,XQSM)=XQSD
- SET ^XUTL("XQO",XQDIC,0)=XQSM_U_%H
- +18 SET XQSY=0
- FOR XQSI=0:0
- SET XQSY=$ORDER(XQST(XQSY))
- IF XQSY=""
- QUIT
- SET %=XQST(XQSY)
- SET XQSK=$EXTRACT(XQSY,5,99)
- IF $EXTRACT(XQSK,1)=" "
- DO XBLK
- IF $LENGTH(XQSK)
- SET ^XUTL("XQO",XQDIC,XQSK)=%
- +19 KILL %,%H,X,XQNO,XQSA,XQSB,XQSD,XQSDO,XQSI,XQSL,XQSK,XQS0,XQSOO,XQSPR,XQSN,XQST,XQSM,XQSX,XQSZ,XQSY
- +20 QUIT
- +21 ;
- SET1 IF '$DATA(^DIC(19,+XQSY,0))
- QUIT
- SET XQS0=^(0)
- SET X=$SELECT($DATA(^("U")):^("U"),1:"")
- IF X=""
- SET X=$EXTRACT($PIECE(XQS0,U,2),1,30)
- DO UP
- SET ^("U")=X
- +1 SET XQSOO=$PIECE(XQS0,U,3)
- SET XQS0=$PIECE(XQS0,U,1,2)_U_($SELECT($PIECE(XQS0,U,3)]"":1,1:""))_U_$PIECE(XQS0,U,4,99)
- +2 SET (XQSX,XQSZ)=""
- SET %=$PIECE(XQS0,U,9)
- IF %]""
- IF $LENGTH(%)>2
- SET XQSX=%_"MO-FR"
- SET XQSZ="MO-FR "_%
- +3 IF $DATA(^DIC(19,+XQSY,3.91))
- FOR XQSL=0:0
- SET XQSL=$ORDER(^DIC(19,+XQSY,3.91,XQSL))
- IF XQSL'>0
- QUIT
- IF ^(XQSL,0)]""
- SET XQSX=$SELECT(XQSX'="":XQSX_";",1:"")_$PIECE(^(0),U,1)_$PIECE(^(0),U,2)
- SET XQSZ=$SELECT(XQSZ'="":XQSZ_"; ",1:"")_$PIECE(^(0),U,2)_" "_$PIECE(^(0),U,1)
- +4 IF XQSX]""
- SET $PIECE(XQS0,U,9)=XQSX
- +5 SET XQSX=""
- IF $PIECE(XQS0,U,16)
- IF $DATA(^DIC(19,+XQSY,3))
- SET XQSX=$PIECE(^(3),U)
- IF XQSX'=""
- SET $PIECE(XQS0,U,16)=XQSX
- +6 SET XQSN=$PIECE(XQSY,U,2)
- SET XQSDO=$PIECE(XQSY,U,3)
- SET ^XUTL("XQO",XQDIC,"^",+XQSY)=XQSN_U_$PIECE(XQS0,U,1,4)_"^^"_$PIECE(XQS0,U,6,99)
- +7 IF $LENGTH(X)
- IF X?.N
- SET X=" "_X
- SET X=$SELECT($LENGTH(XQSN):"ZZZZ",$LENGTH(XQSDO):$EXTRACT(0,1,($LENGTH(XQSDO*100)=3))_(XQSDO*100),1:"BBBB")_X
- IF $DATA(XQST(X))
- DO SET3
- SET XQST(X)=+XQSY_"^1"
- +8 IF $LENGTH(XQSN)
- SET X=XQSN
- DO UP
- IF '$LENGTH(X)
- QUIT
- IF X?.N
- SET X=$EXTRACT(" ",1,5-$LENGTH(X))_X
- SET X=$SELECT($LENGTH(XQSDO):$EXTRACT(0,1,($LENGTH(XQSDO*100)=3))_(XQSDO*100),1:"AAAA")_X
- IF $DATA(XQST(X))
- DO SET3
- SET XQST(X)=+XQSY_"^0"
- +9 IF XQSOO]""
- SET XQST(X,"OO")=XQSOO
- +10 IF XQSZ]""
- SET XQST(X,"TM")=XQSZ
- +11 QUIT
- SET3 SET XQSD=X
- FOR I=0:0
- SET XQSM=$ORDER(XQST(XQSD))
- IF ($PIECE(XQSM,U,1)'=X)
- QUIT
- SET XQSD=XQSM
- +1 SET I=+$PIECE(XQSD,U,2)
- SET X=X_U_(I+1)
- QUIT
- CK ;
- +1 SET %=$PIECE(^DIC(19,D0,0),U,6)
- SET %Y=$PIECE(^DIC(19,D0,0),U,1)
- IF $SELECT($LENGTH(%):$DATA(^XUSEC(%,DUZ)),1:1)
- +2 IF '$TEST
- QUIT
- +3 IF DUZ(0)="@"!$DATA(^XUSEC("XUMGR",DUZ))!$DATA(^VA(200,DUZ,19.5,Y,0))
- +4 IF '$TEST
- QUIT
- CK1 SET %=$PIECE(^DIC(19,D0,0),U,4)
- SET %Y=$PIECE(^DIC(19,Y,0),U,4)
- IF $SELECT((%'="O"&(%'="Q"))&(%Y'="Q"):1,(%="O"&(%Y="O")):1,(%="Q"&((%Y="O")!(%Y="Q"))):1,1:0)
- +1 QUIT
- DEV ;See if device is legit for this option
- +1 SET (%,XQSJ)=0
- IF '$DATA(^DIC(19,+XQSW,3.96,0))
- QUIT
- +2 FOR XQSL=1:1
- SET %=$ORDER(^DIC(19,+XQSW,3.96,%))
- IF %=""!(%'=+%)
- QUIT
- IF XQSIO=^(%,0)
- SET XQSJ=1
- +3 QUIT
- UP ;F XQSA=1:1 Q:X?.NUP S %=$A(X,XQSA) I %<123,%>96 S X=$E(X,1,XQSA-1)_$C(%-32)_$E(X,XQSA+1,255)
- SET X=$$UP^XLFSTR(X)
- +1 QUIT
- XBLK FOR XASB=0:0
- SET XQSW=$EXTRACT(XQSK,1)
- IF XQSW'=" "
- QUIT
- SET XQSK=$EXTRACT(XQSK,2,99)
- +1 QUIT
- DIS ;Create display nodes
- +1 SET %=$SELECT($DATA(^XUTL("XQO",XQDIC,"^",XQS0)):^(XQS0),1:"")
- IF $LENGTH(%)
- SET XQS0=%
- IF '$LENGTH(%)
- SET %=$ORDER(^DIC(19,XQDIC,10,"B",XQS0,%))
- SET %=$PIECE(^DIC(19,XQDIC,10,%,0),U,2)
- SET XQS0=%_U_^DIC(19,XQS0,0)
- +2 IF "MO"[$PIECE(XQS0,U,5)
- SET $PIECE(XQS0,U,3)=$PIECE(XQS0,U,3)_" ..."
- +3 ;Don't Display servers or broker-type options
- IF "SB"[$PIECE(XQS0,U,5)
- SET XQNO=1
- +4 SET XQS0=$PIECE(XQS0,U,1,3)_U_$SELECT($DATA(XQST(XQSY,"OO")):XQST(XQSY,"OO"),1:"")_U_$PIECE(XQS0,U,7)_U_$SELECT($DATA(XQST(XQSY,"TM")):XQST(XQSY,"TM"),1:"")_U_$PIECE(XQS0,U,11)_U_$PIECE(XQS0,U,17)_U
- +5 QUIT