- DGPTFVC2 ;ALB/MJK - Expanded PTF Close-Out Edits ; Jul 20 88
- ;;5.3;Registration;**1015**;Aug 13, 1993;Build 21
- ;called from Q+2^DGPTFTR
- ; input : PTF
- ; output: DGERR DGERR := 1 if record fails to pass a check
- ; DGERR := "" if record passes all checks
- EN ;
- Q:'$D(PTF)
- ; -- count mvts
- S DGMAX=25,DGERR="" N C,DGM,I,Y
- F DGM=501,535 S Y=PTF D @DGM I C>DGMAX S DGERR=1 W !,DGM," There are '",C,"' ",DGM," movements but only '",DGMAX,"' can be sent to Austin."
- I DGERR W !," *** Contact PTF supervisor ***" G ENQ
- ; -- check proc/surg dates
- G ENQ:T1
- S DGDCDT=+$S($D(^DGPT(PTF,70)):^(70),1:"")
- F DGM="P","S" F I=0:0 S I=$O(^DGPT(PTF,DGM,I)) Q:'I I $D(^(I,0)),+^(0)>DGDCDT S Y=^(0) D ERROR
- ENQ K DGMAX,DGDCDT Q
- ;
- ERROR ;
- S:'$D(^UTILITY("DG",$J,$S(DGM="P":601,1:401),I)) ^(I)="^" S X=^(I) S:X'["^1^" ^(I)=X_"1^"
- S DGERR=1,Y=+Y X ^DD("DD") W !,">>>> ",$S(DGM="P":"Procedure",1:"Surgery")," date/time of '",Y,"' is after the discharge date."
- ;
- LINES ; -- count the number of lines to be xmited for PTF rec
- ; input : Y := ifn of ^DGPT
- ; output: X := line count
- ;
- N NODE,C S X=2
- D 501 S X=X+C D 535 S X=X+C F NODE="P","S" F %=0:0 S %=$O(^DGPT(Y,NODE,%)) Q:'% I $D(^(%,0)),+^(0)'<T1,+^(0)'>T2 S X=X+1
- Q
- ;
- 501 ; -- count 501 mvts to xmit
- ; input : Y := IFN
- ; DGMTY := indicates entering from flag option [optional]
- ; output: C := # of entries
- ;
- N Z,D S C=1 ; always one 501
- ; count & check if between date range & ok to xmit
- F %=1:0 S %=$O(^DGPT(Y,"M",%)) Q:'% S C=C+1 I '$D(DGMTY),$D(^(%,0)) S Z=^(0),D=$P(Z,U,10) I D<T1!(D>T2)!($P(Z,U,17)="n") S C=C-1
- Q
- ;
- 535 ; -- count 535 mvts to xmit
- ; input : Y := IFN
- ; DGMTY := indicates entering from flag option [optional]
- ; output: C := # of entries
- ;
- N Z,D S C=0
- ; count & check if between date range & ok to xmit & not a 501 on date
- F %=0:0 S %=$O(^DGPT(Y,535,%)) Q:'% S C=C+1 I '$D(DGMTY),$D(^(%,0)) S Z=^(0),D=$P(Z,U,10) I 'D!(D<T1)!(D>T2)!($P(Z,U,17)="n")!($D(^DGPT(Y,"M","AM",+D))) S C=C-1
- Q
- ;
- DGPTFVC2 ;ALB/MJK - Expanded PTF Close-Out Edits ; Jul 20 88
- +1 ;;5.3;Registration;**1015**;Aug 13, 1993;Build 21
- +2 ;called from Q+2^DGPTFTR
- +3 ; input : PTF
- +4 ; output: DGERR DGERR := 1 if record fails to pass a check
- +5 ; DGERR := "" if record passes all checks
- EN ;
- +1 IF '$DATA(PTF)
- QUIT
- +2 ; -- count mvts
- +3 SET DGMAX=25
- SET DGERR=""
- NEW C,DGM,I,Y
- +4 FOR DGM=501,535
- SET Y=PTF
- DO @DGM
- IF C>DGMAX
- SET DGERR=1
- WRITE !,DGM," There are '",C,"' ",DGM," movements but only '",DGMAX,"' can be sent to Austin."
- +5 IF DGERR
- WRITE !," *** Contact PTF supervisor ***"
- GOTO ENQ
- +6 ; -- check proc/surg dates
- +7 IF T1
- GOTO ENQ
- +8 SET DGDCDT=+$SELECT($DATA(^DGPT(PTF,70)):^(70),1:"")
- +9 FOR DGM="P","S"
- FOR I=0:0
- SET I=$ORDER(^DGPT(PTF,DGM,I))
- IF 'I
- QUIT
- IF $DATA(^(I,0))
- IF +^(0)>DGDCDT
- SET Y=^(0)
- DO ERROR
- ENQ KILL DGMAX,DGDCDT
- QUIT
- +1 ;
- ERROR ;
- +1 IF '$DATA(^UTILITY("DG",$JOB,$SELECT(DGM="P"
- SET ^(I)="^"
- SET X=^(I)
- IF X'["^1^"
- SET ^(I)=X_"1^"
- +2 SET DGERR=1
- SET Y=+Y
- XECUTE ^DD("DD")
- WRITE !,">>>> ",$SELECT(DGM="P":"Procedure",1:"Surgery")," date/time of '",Y,"' is after the discharge date."
- +3 ;
- LINES ; -- count the number of lines to be xmited for PTF rec
- +1 ; input : Y := ifn of ^DGPT
- +2 ; output: X := line count
- +3 ;
- +4 NEW NODE,C
- SET X=2
- +5 DO 501
- SET X=X+C
- DO 535
- SET X=X+C
- FOR NODE="P","S"
- FOR %=0:0
- SET %=$ORDER(^DGPT(Y,NODE,%))
- IF '%
- QUIT
- IF $DATA(^(%,0))
- IF +^(0)'<T1
- IF +^(0)'>T2
- SET X=X+1
- +6 QUIT
- +7 ;
- 501 ; -- count 501 mvts to xmit
- +1 ; input : Y := IFN
- +2 ; DGMTY := indicates entering from flag option [optional]
- +3 ; output: C := # of entries
- +4 ;
- +5 ; always one 501
- NEW Z,D
- SET C=1
- +6 ; count & check if between date range & ok to xmit
- +7 FOR %=1:0
- SET %=$ORDER(^DGPT(Y,"M",%))
- IF '%
- QUIT
- SET C=C+1
- IF '$DATA(DGMTY)
- IF $DATA(^(%,0))
- SET Z=^(0)
- SET D=$PIECE(Z,U,10)
- IF D<T1!(D>T2)!($PIECE(Z,U,17)="n")
- SET C=C-1
- +8 QUIT
- +9 ;
- 535 ; -- count 535 mvts to xmit
- +1 ; input : Y := IFN
- +2 ; DGMTY := indicates entering from flag option [optional]
- +3 ; output: C := # of entries
- +4 ;
- +5 NEW Z,D
- SET C=0
- +6 ; count & check if between date range & ok to xmit & not a 501 on date
- +7 FOR %=0:0
- SET %=$ORDER(^DGPT(Y,535,%))
- IF '%
- QUIT
- SET C=C+1
- IF '$DATA(DGMTY)
- IF $DATA(^(%,0))
- SET Z=^(0)
- SET D=$PIECE(Z,U,10)
- IF 'D!(D<T1)!(D>T2)!($PIECE(Z,U,17)="n")!($DATA(^DGPT(Y,"M","AM",+D)))
- SET C=C-1
- +8 QUIT
- +9 ;