- DGPTFVC3 ;ALB/MTC - VAILIDATION CHECK FOR PTF ADDITIONAL QUESTIONS ; 18 MAR 91
- ;;5.3;Registration;**164,729,1015**;Aug 13, 1993;Build 21
- ;
- ; Called by Q+2^DGPTFTR
- ; Variable Passed In: PTF - Current PTF record.
- ; Variable Returned : DGERR - 1 if fails else ""
- ;
- EN ;
- D INIT G:DGOUT ENQ
- D 401,501,701
- ENQ ;
- K DGPTF,DGHOLD,DGMOV,DGJ,DGBPC,DGPTIT,DGOUT,DGSUR,DGREC
- Q
- 501 ;-- check 501's for inconsistent data
- K DGPTIT
- F DGMOV=0:0 S DGMOV=$O(^DGPT(DGPTF,"M",DGMOV)) Q:DGMOV'>0 I $D(^DGPT(DGPTF,"M",DGMOV,0)) S DGHOLD=^(0) D CHKFL5
- K DGMOV
- Q
- ;
- CHKFL5 ;-- check field entries
- F DGJ=5:1:9 I $P(DGHOLD,U,DGJ)]"" S DGPTIT($P(DGHOLD,U,DGJ)_";ICD9(")=""
- D DC^DGPTSCAN,SCAN^DGPTSCAN
- I '$D(DGBPC),'$D(^DGPT(DGPTF,"M",DGMOV,300)) G CHK5Q
- S DGHOLD=$S($D(^DGPT(DGPTF,"M",DGMOV,300)):^(300),1:"")
- D GETNUM^DGPTSCAN
- ;F DGII=2:1:DGFNUM I ('$D(DGBPC(DGII))&($P(DGHOLD,U,DGII)]""))!($D(DGBPC(DGII))&($P(DGHOLD,U,DGII)']"")) S DGERR=1 D W501
- F DGII=2:1:DGFNUM I ($D(DGBPC(DGII))&($P(DGHOLD,U,DGII)']"")) S DGERR=1 D W501
- ;
- CHK5Q K DGFNUM,DGII,DGBPC,DGPTIT
- Q
- ;
- 401 ;-- check 401's for inconsistent data
- K DGPTIT
- F DGSUR=0:0 S DGSUR=$O(^DGPT(DGPTF,"S",DGSUR)) Q:DGSUR'>0 I $D(^DGPT(DGPTF,"S",DGSUR,0)) S DGHOLD=^(0) D CHKFL4
- Q
- ;
- CHKFL4 ;-- check field entries
- F DGJ=8:1:12 I $P(DGHOLD,U,DGJ)]"" S DGPTIT($P(DGHOLD,U,DGJ)_";ICD0(")=""
- D DC^DGPTSCAN,SCAN^DGPTSCAN
- I '$D(DGBPC),'$D(^DGPT(DGPTF,"S",+DGSUR,300)) G CHK4Q
- S DGHOLD=$S($D(^DGPT(DGPTF,"S",+DGSUR,300)):^(300),1:"")
- ;I ('$D(DGBPC(1))&($P(DGHOLD,U)]""))!($D(DGBPC(1))&($P(DGHOLD,U)']"")) S DGERR=1 D W401
- I ($D(DGBPC(1))&($P(DGHOLD,U)']"")) S DGERR=1 D W401
- CHK4Q K DGBPC,DGPTIT
- Q
- ;
- 701 ;-- process 701 load DGPTIT array
- K DGPTIT
- G CHK7Q:'$D(^DGPT(DGPTF,70)) S DGREC=^(70)
- F DGI=10,16:1:24 I $P(DGREC,U,DGI) S DGPTIT($P(DGREC,U,DGI)_";ICD9(")=""
- D DC^DGPTSCAN,SCAN^DGPTSCAN,ANYPSY^DGPTSCAN
- I '$D(DGBPC),'$D(^DGPT(DGPTF,"M")) G CHK7Q
- S DGTREC=$S($D(^DGPT(DGPTF,300)):^(300),1:"")
- S DG701="" D FLAGCHK^DGPTSCAN
- D GETNUM^DGPTSCAN
- ;F DGII=2:1:DGFNUM I $D(DGBPC(DGII))&($P(DGTREC,U,DGII)']"")!('$D(DGBPC(DGII))&($P(DG701,U,DGII)]"")&($P(DGTREC,U,DGII)']""))!('$D(DGBPC(DGII))&($P(DGTREC,U,DGII)]"")&($P(DG701,U,DGII)']"")) S DGERR=1 D W701
- F DGII=2:1:DGFNUM I $D(DGBPC(DGII))&($P(DGTREC,U,DGII)']"") S DGERR=1 D W701
- CHK7Q ;
- K DGII,DGFNUM,DG701,DGHOLD,DGTREC,DGI
- Q
- ;
- W401 ;-- display error message for 401
- N X S X=+^DGPT(DGPTF,"S",DGSUR,0),X=$TR($$FMTE^XLFDT(X,"5DF")," ","0")
- W !,"401 Surgery date: ",X,"...",$P($T(ERRMSG+1),";",4)
- Q
- W501 ;-- display error message for 501
- N X S X=+$P(^DGPT(DGPTF,"M",DGMOV,0),"^",10),X=$TR($$FMTE^XLFDT(X,"5DF")," ","0")
- W !,"501 Movement date: ",X,"...",$P($T(ERRMSG+DGII),";",4)
- Q
- W701 ;-- display error messages for 701
- W !,"701 ",$P($T(ERRMSG+DGII),";",4)
- Q
- INIT ;
- I '$D(PTF) S DGOUT=1 G INITQ
- S DGOUT=0,DGPTF=PTF
- I '$D(^DGPT(DGPTF)) S (DGOUT,DGERR)=1
- D LO^DGUTL,HOME^%ZIS
- INITQ Q
- ;
- ERRMSG ;-- error messages
- ;;1;Kidney Transplant Status Data Error.
- ;;2;Suicide Indicator Data Error.
- ;;3;Legionnaire's Disease Indicator Data Error.
- ;;4;Substance Abuse Type Data Error.
- ;;5;Psychiatry Axis IV Data Error.
- ;;6;Psychiatry Axis V Data Error.
- ;;7;Psychiatry Axis V Data Error.
- ;
- ;
- DGPTFVC3 ;ALB/MTC - VAILIDATION CHECK FOR PTF ADDITIONAL QUESTIONS ; 18 MAR 91
- +1 ;;5.3;Registration;**164,729,1015**;Aug 13, 1993;Build 21
- +2 ;
- +3 ; Called by Q+2^DGPTFTR
- +4 ; Variable Passed In: PTF - Current PTF record.
- +5 ; Variable Returned : DGERR - 1 if fails else ""
- +6 ;
- EN ;
- +1 DO INIT
- IF DGOUT
- GOTO ENQ
- +2 DO 401
- DO 501
- DO 701
- ENQ ;
- +1 KILL DGPTF,DGHOLD,DGMOV,DGJ,DGBPC,DGPTIT,DGOUT,DGSUR,DGREC
- +2 QUIT
- 501 ;-- check 501's for inconsistent data
- +1 KILL DGPTIT
- +2 FOR DGMOV=0:0
- SET DGMOV=$ORDER(^DGPT(DGPTF,"M",DGMOV))
- IF DGMOV'>0
- QUIT
- IF $DATA(^DGPT(DGPTF,"M",DGMOV,0))
- SET DGHOLD=^(0)
- DO CHKFL5
- +3 KILL DGMOV
- +4 QUIT
- +5 ;
- CHKFL5 ;-- check field entries
- +1 FOR DGJ=5:1:9
- IF $PIECE(DGHOLD,U,DGJ)]""
- SET DGPTIT($PIECE(DGHOLD,U,DGJ)_";ICD9(")=""
- +2 DO DC^DGPTSCAN
- DO SCAN^DGPTSCAN
- +3 IF '$DATA(DGBPC)
- IF '$DATA(^DGPT(DGPTF,"M",DGMOV,300))
- GOTO CHK5Q
- +4 SET DGHOLD=$SELECT($DATA(^DGPT(DGPTF,"M",DGMOV,300)):^(300),1:"")
- +5 DO GETNUM^DGPTSCAN
- +6 ;F DGII=2:1:DGFNUM I ('$D(DGBPC(DGII))&($P(DGHOLD,U,DGII)]""))!($D(DGBPC(DGII))&($P(DGHOLD,U,DGII)']"")) S DGERR=1 D W501
- +7 FOR DGII=2:1:DGFNUM
- IF ($DATA(DGBPC(DGII))&($PIECE(DGHOLD,U,DGII)']""))
- SET DGERR=1
- DO W501
- +8 ;
- CHK5Q KILL DGFNUM,DGII,DGBPC,DGPTIT
- +1 QUIT
- +2 ;
- 401 ;-- check 401's for inconsistent data
- +1 KILL DGPTIT
- +2 FOR DGSUR=0:0
- SET DGSUR=$ORDER(^DGPT(DGPTF,"S",DGSUR))
- IF DGSUR'>0
- QUIT
- IF $DATA(^DGPT(DGPTF,"S",DGSUR,0))
- SET DGHOLD=^(0)
- DO CHKFL4
- +3 QUIT
- +4 ;
- CHKFL4 ;-- check field entries
- +1 FOR DGJ=8:1:12
- IF $PIECE(DGHOLD,U,DGJ)]""
- SET DGPTIT($PIECE(DGHOLD,U,DGJ)_";ICD0(")=""
- +2 DO DC^DGPTSCAN
- DO SCAN^DGPTSCAN
- +3 IF '$DATA(DGBPC)
- IF '$DATA(^DGPT(DGPTF,"S",+DGSUR,300))
- GOTO CHK4Q
- +4 SET DGHOLD=$SELECT($DATA(^DGPT(DGPTF,"S",+DGSUR,300)):^(300),1:"")
- +5 ;I ('$D(DGBPC(1))&($P(DGHOLD,U)]""))!($D(DGBPC(1))&($P(DGHOLD,U)']"")) S DGERR=1 D W401
- +6 IF ($DATA(DGBPC(1))&($PIECE(DGHOLD,U)']""))
- SET DGERR=1
- DO W401
- CHK4Q KILL DGBPC,DGPTIT
- +1 QUIT
- +2 ;
- 701 ;-- process 701 load DGPTIT array
- +1 KILL DGPTIT
- +2 IF '$DATA(^DGPT(DGPTF,70))
- GOTO CHK7Q
- SET DGREC=^(70)
- +3 FOR DGI=10,16:1:24
- IF $PIECE(DGREC,U,DGI)
- SET DGPTIT($PIECE(DGREC,U,DGI)_";ICD9(")=""
- +4 DO DC^DGPTSCAN
- DO SCAN^DGPTSCAN
- DO ANYPSY^DGPTSCAN
- +5 IF '$DATA(DGBPC)
- IF '$DATA(^DGPT(DGPTF,"M"))
- GOTO CHK7Q
- +6 SET DGTREC=$SELECT($DATA(^DGPT(DGPTF,300)):^(300),1:"")
- +7 SET DG701=""
- DO FLAGCHK^DGPTSCAN
- +8 DO GETNUM^DGPTSCAN
- +9 ;F DGII=2:1:DGFNUM I $D(DGBPC(DGII))&($P(DGTREC,U,DGII)']"")!('$D(DGBPC(DGII))&($P(DG701,U,DGII)]"")&($P(DGTREC,U,DGII)']""))!('$D(DGBPC(DGII))&($P(DGTREC,U,DGII)]"")&($P(DG701,U,DGII)']"")) S DGERR=1 D W701
- +10 FOR DGII=2:1:DGFNUM
- IF $DATA(DGBPC(DGII))&($PIECE(DGTREC,U,DGII)']"")
- SET DGERR=1
- DO W701
- CHK7Q ;
- +1 KILL DGII,DGFNUM,DG701,DGHOLD,DGTREC,DGI
- +2 QUIT
- +3 ;
- W401 ;-- display error message for 401
- +1 NEW X
- SET X=+^DGPT(DGPTF,"S",DGSUR,0)
- SET X=$TRANSLATE($$FMTE^XLFDT(X,"5DF")," ","0")
- +2 WRITE !,"401 Surgery date: ",X,"...",$PIECE($TEXT(ERRMSG+1),";",4)
- +3 QUIT
- W501 ;-- display error message for 501
- +1 NEW X
- SET X=+$PIECE(^DGPT(DGPTF,"M",DGMOV,0),"^",10)
- SET X=$TRANSLATE($$FMTE^XLFDT(X,"5DF")," ","0")
- +2 WRITE !,"501 Movement date: ",X,"...",$PIECE($TEXT(ERRMSG+DGII),";",4)
- +3 QUIT
- W701 ;-- display error messages for 701
- +1 WRITE !,"701 ",$PIECE($TEXT(ERRMSG+DGII),";",4)
- +2 QUIT
- INIT ;
- +1 IF '$DATA(PTF)
- SET DGOUT=1
- GOTO INITQ
- +2 SET DGOUT=0
- SET DGPTF=PTF
- +3 IF '$DATA(^DGPT(DGPTF))
- SET (DGOUT,DGERR)=1
- +4 DO LO^DGUTL
- DO HOME^%ZIS
- INITQ QUIT
- +1 ;
- ERRMSG ;-- error messages
- +1 ;;1;Kidney Transplant Status Data Error.
- +2 ;;2;Suicide Indicator Data Error.
- +3 ;;3;Legionnaire's Disease Indicator Data Error.
- +4 ;;4;Substance Abuse Type Data Error.
- +5 ;;5;Psychiatry Axis IV Data Error.
- +6 ;;6;Psychiatry Axis V Data Error.
- +7 ;;7;Psychiatry Axis V Data Error.
- +8 ;
- +9 ;