IBDECLN1 ;ALB/AAS - Clean up Data Qualifiers and Package interfaces ; 23-JUN-97
;;3.0;AUTOMATED INFO COLLECTION SYS;**14**;APR 24, 1997
;
PROBLEM(PROBLEM) ; -- Find out if Problem is in PCE DIM NODE in 357.6
;
; pce dim node should not equal problem
N I,J
S I=0,PROBLEM=0
F S I=$O(^IBE(357.6,I)) Q:'I D
. I $P($G(^IBE(357.6,I,12)),"^",1)="PROBLEM" D
.. S PROBLEM=PROBLEM+1
.. S PROBLEM(0,I)=""
.. S PROBLEM(PROBLEM)=$P($G(^IBE(357.6,I,0)),"^",1)_" uses PROBLEM as the PCE DIM NODE"
. S J=0
. F S J=$O(^IBE(357.6,I,13,J)) Q:'J D
.. I $P($G(^IBE(357.6,I,13,J,0)),"^",4)="PROBLEM" D
... S PROBLEM=PROBLEM+1
... S PROBLEM(0,I)=""
... S PROBLEM(PROBLEM)=$P($G(^IBE(357.6,I,0)),"^",1)_" uses PROBLEM as the PCE DIM NODE in the Allow. Qual. Multiple."
;
Q
;
CLNSEL(TALK) ; -- Clean up selection list entries
; -- should be run after running clnqlf, will update the zzbad pointers
;
N I,J,K,L,X,Y,CNT,CNT1,CNT2,NAME,QLF,QLFNAM,PI,PINAM,PINPUT,REALQLF,REALNAM,PROBLEM,SELNAM,BLKNAM,IBQUIT,DIC,DIE,DIK,DA,DR,FRM,FRMNAM,FRMTYPE
S (CNT,CNT1,CNT2)=0
;
D:TALK MES^XPDUTL(" ")
D:TALK MES^XPDUTL(">>> Now checking the SELECTION LIST file for inappropriate Data Qualifiers.")
;
; -- Find out if Problem is in PCE DIM NODE in 357.6
D PROBLEM(.PROBLEM)
;
; -- go through selection list file look at data qualifiers in
; subcolumn multiple fields
S I=0
F S I=$O(^IBE(357.2,I)) Q:'I D
. S CNT=CNT+1
. S SELNAM=$P($G(^IBE(357.2,I,0)),"^",1)
. S BLKNAM=$P($G(^IBE(357.1,+$P($G(^IBE(357.2,I,0)),"^",2),0)),"^",1)
. S FRM=+$P($G(^IBE(357.1,+$P($G(^IBE(357.2,I,0)),"^",2),0)),"^",2)
. S FRMNAM=$P($G(^IBE(357,+FRM,0)),"^",1)
. S FRMTYPE=$P($G(^IBE(357,+FRM,0)),"^",13)
. S PI=+$P($G(^IBE(357.2,I,0)),"^",11)
. S PINPUT=+$P($G(^IBE(357.6,PI,0)),"^",13)
. S PINAM=$P($G(^IBE(357.6,+$P($G(^IBE(357.2,I,0)),"^",11),0)),"^",1)
. ;
. S J=0
. F S J=$O(^IBE(357.2,I,2,J)) Q:'J D
.. S QLF=+$P($G(^IBE(357.2,I,2,J,0)),"^",9)
.. Q:'QLF
.. S QLFNAM=$P($G(^IBD(357.98,QLF,0)),"^",1)
.. ;
.. Q:$E(QLFNAM,1,6)'="ZZBAD-"
.. S CNT1=CNT1+1
.. S REALNAM=$P(QLFNAM,"ZZBAD-",2)
.. Q:REALNAM=""
.. S REALQLF=+$O(^IBD(357.98,"B",REALNAM,0))
.. Q:'REALQLF
..;
..; -- don't change if uses Problem node
.. I PROBLEM>0 I $D(PROBLEM(0,PI))!($D(PROBLEM(0,PINPUT))) D Q
... D MES^XPDUTL(" ")
... D MES^XPDUTL(" >> The selection list "_SELNAM_" not updated, PCE DIM node set to PROBLEM")
..
..; -- now update the selection list to the real qualifier
.. S CNT2=CNT2+1
.. S $P(^IBE(357.2,I,2,J,0),"^",9)=REALQLF
..;
..D:TALK MESSAGE
;
; -- write out summary
K X
S X(1)=" ",X(2)=" >> Summary of Selection List Check:"
D:TALK MES^XPDUTL(.X)
K X
S X(1)=" "
S X(2)=" >> A total of "_CNT_" selection list"_$S(CNT=1:" was",1:"s were")_" checked."
I CNT1=0 S X(3)=" No problems were found."
I CNT1>0 S X(3)=" A total of "_CNT1_" problem"_$S(CNT1=1:" was",1:"s were")_" found and "_CNT2_" were corrected."
D:TALK MES^XPDUTL(.X)
Q
;
MESSAGE ; -- write out what happened
N K,X,CLIN,CLNLST
S CLNLST=""
S CLIN="^TMP(""CLST"",$J)"
D CLINICS^IBDFU4(FRM,CLIN)
S X(1)=" "
S X(2)=">>> Qualifier problem in Encounter form "_FRMNAM
I FRMTYPE S X(2)=X(2)_" Number "_FRMTYPE
I @CLIN@(0)=0 S X(3)=" This form was not used by clinics"
I @CLIN@(0)>0 D
. S X(3)=" This form is used in the following clinics:"
. S K=0,J=3 F S K=$O(@CLIN@(K)) Q:K="" S CLNLST=CLNLST_", "_K D
. . Q:$L(CLNLST)>55
. . S J=J+1,X(J)=" "_CLNLST
. . S CLNLST=""
S X(J+1)=" In the "_BLKNAM_" Block"
S X(J+2)=" In the "_SELNAM_" Selection List"
S X(J+3)=" the qualifier of "_QLFNAM_" Changed to "_REALNAM
D:TALK MES^XPDUTL(.X)
Q
IBDECLN1 ;ALB/AAS - Clean up Data Qualifiers and Package interfaces ; 23-JUN-97
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;**14**;APR 24, 1997
+2 ;
PROBLEM(PROBLEM) ; -- Find out if Problem is in PCE DIM NODE in 357.6
+1 ;
+2 ; pce dim node should not equal problem
+3 NEW I,J
+4 SET I=0
SET PROBLEM=0
+5 FOR
SET I=$ORDER(^IBE(357.6,I))
IF 'I
QUIT
Begin DoDot:1
+6 IF $PIECE($GET(^IBE(357.6,I,12)),"^",1)="PROBLEM"
Begin DoDot:2
+7 SET PROBLEM=PROBLEM+1
+8 SET PROBLEM(0,I)=""
+9 SET PROBLEM(PROBLEM)=$PIECE($GET(^IBE(357.6,I,0)),"^",1)_" uses PROBLEM as the PCE DIM NODE"
End DoDot:2
+10 SET J=0
+11 FOR
SET J=$ORDER(^IBE(357.6,I,13,J))
IF 'J
QUIT
Begin DoDot:2
+12 IF $PIECE($GET(^IBE(357.6,I,13,J,0)),"^",4)="PROBLEM"
Begin DoDot:3
+13 SET PROBLEM=PROBLEM+1
+14 SET PROBLEM(0,I)=""
+15 SET PROBLEM(PROBLEM)=$PIECE($GET(^IBE(357.6,I,0)),"^",1)_" uses PROBLEM as the PCE DIM NODE in the Allow. Qual. Multiple."
End DoDot:3
End DoDot:2
End DoDot:1
+16 ;
+17 QUIT
+18 ;
CLNSEL(TALK) ; -- Clean up selection list entries
+1 ; -- should be run after running clnqlf, will update the zzbad pointers
+2 ;
+3 NEW I,J,K,L,X,Y,CNT,CNT1,CNT2,NAME,QLF,QLFNAM,PI,PINAM,PINPUT,REALQLF,REALNAM,PROBLEM,SELNAM,BLKNAM,IBQUIT,DIC,DIE,DIK,DA,DR,FRM,FRMNAM,FRMTYPE
+4 SET (CNT,CNT1,CNT2)=0
+5 ;
+6 IF TALK
DO MES^XPDUTL(" ")
+7 IF TALK
DO MES^XPDUTL(">>> Now checking the SELECTION LIST file for inappropriate Data Qualifiers.")
+8 ;
+9 ; -- Find out if Problem is in PCE DIM NODE in 357.6
+10 DO PROBLEM(.PROBLEM)
+11 ;
+12 ; -- go through selection list file look at data qualifiers in
+13 ; subcolumn multiple fields
+14 SET I=0
+15 FOR
SET I=$ORDER(^IBE(357.2,I))
IF 'I
QUIT
Begin DoDot:1
+16 SET CNT=CNT+1
+17 SET SELNAM=$PIECE($GET(^IBE(357.2,I,0)),"^",1)
+18 SET BLKNAM=$PIECE($GET(^IBE(357.1,+$PIECE($GET(^IBE(357.2,I,0)),"^",2),0)),"^",1)
+19 SET FRM=+$PIECE($GET(^IBE(357.1,+$PIECE($GET(^IBE(357.2,I,0)),"^",2),0)),"^",2)
+20 SET FRMNAM=$PIECE($GET(^IBE(357,+FRM,0)),"^",1)
+21 SET FRMTYPE=$PIECE($GET(^IBE(357,+FRM,0)),"^",13)
+22 SET PI=+$PIECE($GET(^IBE(357.2,I,0)),"^",11)
+23 SET PINPUT=+$PIECE($GET(^IBE(357.6,PI,0)),"^",13)
+24 SET PINAM=$PIECE($GET(^IBE(357.6,+$PIECE($GET(^IBE(357.2,I,0)),"^",11),0)),"^",1)
+25 ;
+26 SET J=0
+27 FOR
SET J=$ORDER(^IBE(357.2,I,2,J))
IF 'J
QUIT
Begin DoDot:2
+28 SET QLF=+$PIECE($GET(^IBE(357.2,I,2,J,0)),"^",9)
+29 IF 'QLF
QUIT
+30 SET QLFNAM=$PIECE($GET(^IBD(357.98,QLF,0)),"^",1)
+31 ;
+32 IF $EXTRACT(QLFNAM,1,6)'="ZZBAD-"
QUIT
+33 SET CNT1=CNT1+1
+34 SET REALNAM=$PIECE(QLFNAM,"ZZBAD-",2)
+35 IF REALNAM=""
QUIT
+36 SET REALQLF=+$ORDER(^IBD(357.98,"B",REALNAM,0))
+37 IF 'REALQLF
QUIT
+38 ;
+39 ; -- don't change if uses Problem node
+40 IF PROBLEM>0
IF $DATA(PROBLEM(0,PI))!($DATA(PROBLEM(0,PINPUT)))
Begin DoDot:3
+41 DO MES^XPDUTL(" ")
+42 DO MES^XPDUTL(" >> The selection list "_SELNAM_" not updated, PCE DIM node set to PROBLEM")
End DoDot:3
QUIT
+43 +44 ; -- now update the selection list to the real qualifier
+45 SET CNT2=CNT2+1
+46 SET $PIECE(^IBE(357.2,I,2,J,0),"^",9)=REALQLF
+47 ;
+48 IF TALK
DO MESSAGE
End DoDot:2
End DoDot:1
+49 ;
+50 ; -- write out summary
+51 KILL X
+52 SET X(1)=" "
SET X(2)=" >> Summary of Selection List Check:"
+53 IF TALK
DO MES^XPDUTL(.X)
+54 KILL X
+55 SET X(1)=" "
+56 SET X(2)=" >> A total of "_CNT_" selection list"_$SELECT(CNT=1:" was",1:"s were")_" checked."
+57 IF CNT1=0
SET X(3)=" No problems were found."
+58 IF CNT1>0
SET X(3)=" A total of "_CNT1_" problem"_$SELECT(CNT1=1:" was",1:"s were")_" found and "_CNT2_" were corrected."
+59 IF TALK
DO MES^XPDUTL(.X)
+60 QUIT
+61 ;
MESSAGE ; -- write out what happened
+1 NEW K,X,CLIN,CLNLST
+2 SET CLNLST=""
+3 SET CLIN="^TMP(""CLST"",$J)"
+4 DO CLINICS^IBDFU4(FRM,CLIN)
+5 SET X(1)=" "
+6 SET X(2)=">>> Qualifier problem in Encounter form "_FRMNAM
+7 IF FRMTYPE
SET X(2)=X(2)_" Number "_FRMTYPE
+8 IF @CLIN@(0)=0
SET X(3)=" This form was not used by clinics"
+9 IF @CLIN@(0)>0
Begin DoDot:1
+10 SET X(3)=" This form is used in the following clinics:"
+11 SET K=0
SET J=3
FOR
SET K=$ORDER(@CLIN@(K))
IF K=""
QUIT
SET CLNLST=CLNLST_", "_K
Begin DoDot:2
+12 IF $LENGTH(CLNLST)>55
QUIT
+13 SET J=J+1
SET X(J)=" "_CLNLST
+14 SET CLNLST=""
End DoDot:2
End DoDot:1
+15 SET X(J+1)=" In the "_BLKNAM_" Block"
+16 SET X(J+2)=" In the "_SELNAM_" Selection List"
+17 SET X(J+3)=" the qualifier of "_QLFNAM_" Changed to "_REALNAM
+18 IF TALK
DO MES^XPDUTL(.X)
+19 QUIT