- GMTSOBT ; SLC/KER - HS Object - Time and Type ; 01/06/2003
- ;;2.7;Health Summary;**58**;Oct 20, 1995
- ;
- ; External References
- ; DBIA 10104 $$UP^XLFSTR
- ; DBIA 10088 ENDR^%ZISS
- ; DBIA 10026 ^DIR
- ;
- Q
- TP ; Time Period
- Q:+($G(GMTSQ))>0 N X,Y,DIR,GMTSX,GMTSDEF K GMTSOBJ("TIME")
- S GMTSDEF=$$TIM($P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,4))
- S DIR("A")=" Enter REPORT PERIOD: ",DIR("B")="3M" S:$L(GMTSDEF) DIR("B")=GMTSDEF
- S DIR(0)="FAO^2;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
- S (DIR("?"),DIR("??"))="^D TH^GMTSOBT"
- D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1
- Q:+($G(GMTSQ))>0 Q:'$L($G(GMTSX)) W " ",GMTSX S GMTSOBJ("TIME")=$G(GMTSX)
- Q
- TH ; Time Help
- D ATTR
- W !," Enter a time limit for the Health Summary report/object. It"
- W !," must be in the format of a numeric time length and an alpha"
- W !," time unit, and can not exceed 5 characters. If no time unit"
- W !," is provided, then the time unit will be set to Days (D), i.e.,"
- W !," "
- W !,$G(BOLD)," 11, 2D, 4D, 6W, 18W, 3M, 6M, 1Y",$G(NORM)
- D KATTR
- Q
- TIM(X) ; Input Transform for Time
- Q:$L(X)=1&(X="@") X S X=$$UP^XLFSTR($G(X)) Q:$L($G(X))>5 "" Q:$L((+($G(X))))>4 "" S X=$G(X)
- N GMTSLEN,GMTSUNIT S GMTSLEN=+X,GMTSUNIT=$E(X,$L(X)) S:+GMTSUNIT>0 GMTSUNIT="D" S:$L(GMTSLEN)=$L(X) GMTSUNIT="D"
- Q:GMTSUNIT'="D"&(GMTSUNIT'="W")&(GMTSUNIT'="M")&(GMTSUNIT'="Y") ""
- I GMTSUNIT="D",GMTSLEN>5 D
- . N GMTSO S GMTSO=GMTSLEN I +GMTSLEN>89!(GMTSLEN#7=0)!(GMTSLEN#7=6) D
- . . S GMTSLEN=GMTSLEN\7,GMTSUNIT="W"
- . . S:GMTSO#7>3 GMTSLEN=GMTSLEN+1
- . I GMTSUNIT="D",GMTSLEN#32>28 D
- . . S GMTSLEN=GMTSLEN\32 S:GMTSO#32>28 GMTSLEN=GMTSLEN+1 S GMTSUNIT="M"
- I GMTSUNIT="W",GMTSLEN>3 D
- . N GMTSO S GMTSO=GMTSLEN I +GMTSLEN>23!(GMTSLEN#4=3)!(GMTSLEN#4=0) D
- . . S GMTSLEN=GMTSLEN\4.333333333,GMTSUNIT="M"
- . . S:GMTSO#4.333333333>3 GMTSLEN=GMTSLEN+1
- I GMTSUNIT="M",GMTSLEN>11 D
- . N GMTSO S GMTSO=GMTSLEN I GMTSLEN#12=11!(GMTSLEN#12=0) D
- . . S GMTSLEN=GMTSLEN\12,GMTSUNIT="Y" S:GMTSO#12=11 GMTSLEN=GMTSLEN+1
- S X=GMTSLEN_GMTSUNIT
- Q X
- ;
- TYPE(I) ; Select Type
- ; Uses Fileman's DIC variables for Lookup
- N GMTSHDR,GMTSNOQ,GMTSNOI,GMTSX,GMTSREDO
- TY2 ; Prompt for Type
- S GMTSX=$$TYPE^GMTSULT I X["@" S X="@",Y=-1 Q -1
- Q:+GMTSX'>0 -1
- S GMTSHDR(1)="You have selected the following Health Summary Type to use as an Object:"
- S GMTSHDR(2)=" ",GMTSNOQ="",GMTSNOI="",GMTSREDO=0
- D DT^GMTSOBD(+GMTSX) I $D(^TMP("GMTSOBT",$J)) D
- . D NOQUE^GMTSOBD W ! N DIR,DTOUT,DUOUT S DIR(0)="YAO",DIR("A")="Is this correct? ",DIR("B")="Y"
- . D ^DIR S:$$UP^XLFSTR($E(X,1))="N" GMTSREDO=1 I +Y'>0 S GMTSX=-1
- W:+GMTSREDO>0 ! G:+GMTSREDO>0 TY2
- D XY(GMTSX) S I=GMTSX K ^TMP("GMTSOBT",$J)
- Q I
- ;
- RP(TYPE,OBJ) ; Report Period
- ; Input TYPE Required, Health Summary Type IEN
- ; OBJ Optional, Health Summary Object IEN
- ;
- ; Output X Report Period, "" or "@"
- ; GMTSQ Up Arrow/Time Out
- ;
- Q:+($G(GMTSQ))>0 "" N X,Y,DIR,GMTSX,GMTSDEF,GMTSS,GMTSTY,GMTSOB K GMTSOBJ("TIME") S GMTSOB=+($G(OBJ)),GMTSTY=+($G(TYPE)) Q:+GMTSTY=0 "@"
- S GMTSS=$$RT(GMTSTY) Q:+($G(GMTSQ))>0 -1 Q:GMTSS'>0 "@"
- S GMTSDEF=$$TIM($P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,4))
- S DIR("A")=" Enter new TIME LIMIT: " S:$L(GMTSDEF) DIR("B")=GMTSDEF
- S DIR(0)="FAO^1;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
- S (DIR("?"),DIR("??"))="^D TH^GMTSOBT" W ! D ^DIR I X="@",Y="" Q X
- S:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) GMTSQ=1 Q:+($G(GMTSQ))>0 -1
- Q:'$L($G(GMTSX)) "" W " ",GMTSX S GMTSOBJ("TIME")=$G(GMTSX)
- S X=GMTSX
- Q X
- RT(X) ; Report Period or Time Limits
- ; Input X IEN or Health Summary Type
- Q:+($G(GMTSQ))>0 -1 N Y,DIR,GMTSX S GMTSX=+($G(X)) D RTA(+GMTSX)
- I '$D(DIR("A")) S DIR("A",1)=" Overwrite Health Summary Type Time Limits ",DIR("A")=" with Health Summary Object Report Period? "
- S DIR(0)="YAO",DIR("B")="N",(DIR("?"),DIR("??"))="^D RTH^GMTSOBT(GMTSX)"
- W ! D ^DIR S:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) GMTSQ=1
- Q:+($G(GMTSQ))>0 -1 S X=+($G(Y))
- Q X
- RTH(X) ; Report Period or Time Limits Help
- ; Input X IEN or Health Summary Type
- D LS(+($G(X))) W !
- D ATTR
- W !," Entering a new TIME LIMIT for the Health Summary Object will "
- W !," overwrite the TIME LIMITS set the for individual components. "
- W !," It must be alpha numeric and can not exceed 5 characters."
- W !," Examples: ",$G(BOLD),"3D, 6W, 3M, 1Y",$G(NORM)
- D KATTR
- Q
- RTA(X) ; Report Period or Time Limit DIR(A)
- D ATTR K DIR("A") N GMTSC,GMTST,GMTSP,GMTSS,GMTSR,GMTSI,GMTSN S GMTSI=+($G(X)) Q:+X'>0
- S GMTSN=$P($G(^GMT(142,+GMTSI,0)),"^",1)
- Q:'$L(GMTSN)
- I $L(GMTSN) D
- . S GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type '"
- . S GMTST=GMTST_$$UP^XLFSTR(GMTSN)_"'?"
- I '$L(GMTSN) D
- . S GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type?"
- F Q:'$L($$TRIM(GMTST)) D
- . I $L(GMTST)'>60 S GMTSC=+($G(GMTSC))+1,DIR("A",GMTSC)=" "_$$TRIM(GMTST)_" ",GMTST="" Q
- . S GMTSS=$E($$TRIM(GMTST),1,60),GMTSS=$P(GMTSS," ",1,($L(GMTSS," ")-1)),GMTSR=$P($$TRIM(GMTST),GMTSS,2,299),GMTST=GMTSR,GMTSC=+($G(GMTSC))+1,DIR("A",GMTSC)=" "_$$TRIM(GMTSS)_" "
- S:+($G(GMTSC))>0 DIR("A")=DIR("A",GMTSC) K:+($G(GMTSC))>0 DIR("A",GMTSC)
- S (GMTSC,GMTSI)=0 F GMTSC=1:1 D Q:GMTSI>0
- . S:'$D(DIR("A",GMTSC)) GMTSS="DIR(""A"")",GMTSI=1
- . S:$D(DIR("A",GMTSC)) GMTSS="DIR(""A"","_GMTSC_")"
- . S GMTST=@GMTSS I GMTST["Time Limits" S GMTST=$P(GMTST,"Time Limits",1)_$G(BOLD)_"Time Limits"_$G(NORM)_$P(GMTST,"Time Limits",2),@GMTSS=GMTST Q
- . S GMTST=@GMTSS I GMTST["Report Period" S GMTST=$P(GMTST,"Report Period",1)_$G(BOLD)_"Report Period"_$G(NORM)_$P(GMTST,"Report Period",2),@GMTSS=GMTST Q
- . S GMTST=@GMTSS I GMTST["a Report" S GMTST=$P(GMTST,"a Report",1)_"a "_$G(BOLD)_"Report"_$G(NORM)_$P(GMTST,"a Report",2),@GMTSS=GMTST
- . S GMTST=@GMTSS I GMTST["Period which" S GMTST=$P(GMTST,"Period which",1)_$G(BOLD)_"Period"_$G(NORM)_" which"_$P(GMTST,"Period which",2,299),@GMTSS=GMTST
- D KATTR
- Q
- LS(X) ; List Structure
- D ATTR
- N GMTST,GMTSS,GMTSC,GMTSTA,GMTSI,GMTSAB,GMTSOL,GMTSTL,GMTSNM,GMTSHD,GMTSCT
- S GMTST=+($G(X)) Q:'$D(^GMT(142,+GMTST,0))!('$D(^GMT(142,+GMTST,1))) 0
- S (GMTSCT,GMTSTA,GMTSI)=0
- F S GMTSI=$O(^GMT(142,+GMTST,1,GMTSI)) Q:+GMTSI=0 D Q:+($G(GMTSCT))>1
- . S GMTSS=$G(^GMT(142,+GMTST,1,GMTSI,0)),GMTSC=$G(^GMT(142.1,+($P(GMTSS,"^",2)),0)) Q:+($P(GMTSS,"^",4))'>0!($P(GMTSC,"^",3)'="Y")
- . S GMTSOL=$P(GMTSS,"^",3) S:'$L(GMTSOL) GMTSOL="--" S GMTSTL=$P(GMTSS,"^",4),GMTSNM=$$EN2^GMTSUMX($P(GMTSC,"^",1))
- . S GMTSHD=$P(GMTSC,"^",9) S:$L(GMTSHD) GMTSNM=GMTSNM S GMTSAB=$P(GMTSC,"^",4),GMTSCT=+($G(GMTSCT))+1
- . I GMTSCT=1 D
- . . W !," Example of Health Summary Type component ",$G(BOLD),"TIME LIMITS",$G(NORM),!
- . . W !,?9,"Abbr",?15,"Component Name",?45,"Max Occurrences",?62,$G(BOLD),"Time Limits",$G(NORM)
- . . W !,?9,"----------------------------------------------------------------"
- . W !,?9,GMTSAB,?15,GMTSNM,?49,$J(GMTSOL,4),?63,$G(BOLD),$J(GMTSTL,5),$G(NORM)
- D KATTR
- Q
- TA(X) ; Time Limits Applicable
- N GMTST,GMTSS,GMTSC,GMTSTA,GMTSI
- S GMTST=+($G(X)) Q:'$D(^GMT(142,+GMTST,0))!('$D(^GMT(142,+GMTST,1))) 0
- S (GMTSTA,GMTSI)=0
- F S GMTSI=$O(^GMT(142,+GMTST,1,GMTSI)) Q:+GMTSI=0 D Q:+GMTSTA>0
- . S GMTSS=$G(^GMT(142,+GMTST,1,GMTSI,0))
- . S GMTSC=$G(^GMT(142.1,+($P(GMTSS,"^",2)),0))
- . S:+($P(GMTSS,"^",4))>0&($P(GMTSC,"^",3)="Y") GMTSTA=1
- S X=GMTSTA
- Q X
- ;
- ; Miscellaneous
- TRIM(X) ; Trim Spaces
- S X=$G(X) F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
- F Q:$E(X,$L(X))'=" " S X=$E(X,1,($L(X)-1))
- Q X
- XY(I) ; Set X and Y Variables
- K Y,X S X=+($G(I)) I X'>0!('$D(^GMT(142,+X,0))) S Y=-1 Q
- S Y=+X_"^"_$P($G(^GMT(142,+X,0)),"^",1),Y(0)=$G(^GMT(142,+X,0)),Y(0,0)=$P($G(^GMT(142,+X,0)),"^",1),Y(0,1)=$$EN^GMTSUMX(Y(0,0))
- Q
- ATTR ; Set Screen Attributes
- N X,IOINHI,IOINORM S X="IOINHI;IOINORM" D ENDR^%ZISS S BOLD=$G(IOINHI),NORM=$G(IOINORM) Q
- KATTR ; Kill Screen Attributes
- K NORM,BOLD Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSOBT 8171 printed Feb 18, 2025@23:24:49 Page 2
- GMTSOBT ; SLC/KER - HS Object - Time and Type ; 01/06/2003
- +1 ;;2.7;Health Summary;**58**;Oct 20, 1995
- +2 ;
- +3 ; External References
- +4 ; DBIA 10104 $$UP^XLFSTR
- +5 ; DBIA 10088 ENDR^%ZISS
- +6 ; DBIA 10026 ^DIR
- +7 ;
- +8 QUIT
- TP ; Time Period
- +1 if +($GET(GMTSQ))>0
- QUIT
- NEW X,Y,DIR,GMTSX,GMTSDEF
- KILL GMTSOBJ("TIME")
- +2 SET GMTSDEF=$$TIM($PIECE($GET(^GMT(142.5,+($GET(GMTSDA)),0)),U,4))
- +3 SET DIR("A")=" Enter REPORT PERIOD: "
- SET DIR("B")="3M"
- if $LENGTH(GMTSDEF)
- SET DIR("B")=GMTSDEF
- +4 SET DIR(0)="FAO^2;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
- +5 SET (DIR("?"),DIR("??"))="^D TH^GMTSOBT"
- +6 DO ^DIR
- if $DATA(DIROUT)!($DATA(DTOUT))
- SET GMTSQ=1
- +7 if +($GET(GMTSQ))>0
- QUIT
- if '$LENGTH($GET(GMTSX))
- QUIT
- WRITE " ",GMTSX
- SET GMTSOBJ("TIME")=$GET(GMTSX)
- +8 QUIT
- TH ; Time Help
- +1 DO ATTR
- +2 WRITE !," Enter a time limit for the Health Summary report/object. It"
- +3 WRITE !," must be in the format of a numeric time length and an alpha"
- +4 WRITE !," time unit, and can not exceed 5 characters. If no time unit"
- +5 WRITE !," is provided, then the time unit will be set to Days (D), i.e.,"
- +6 WRITE !," "
- +7 WRITE !,$GET(BOLD)," 11, 2D, 4D, 6W, 18W, 3M, 6M, 1Y",$GET(NORM)
- +8 DO KATTR
- +9 QUIT
- TIM(X) ; Input Transform for Time
- +1 if $LENGTH(X)=1&(X="@")
- QUIT X
- SET X=$$UP^XLFSTR($GET(X))
- if $LENGTH($GET(X))>5
- QUIT ""
- if $LENGTH((+($GET(X))))>4
- QUIT ""
- SET X=$GET(X)
- +2 NEW GMTSLEN,GMTSUNIT
- SET GMTSLEN=+X
- SET GMTSUNIT=$EXTRACT(X,$LENGTH(X))
- if +GMTSUNIT>0
- SET GMTSUNIT="D"
- if $LENGTH(GMTSLEN)=$LENGTH(X)
- SET GMTSUNIT="D"
- +3 if GMTSUNIT'="D"&(GMTSUNIT'="W")&(GMTSUNIT'="M")&(GMTSUNIT'="Y")
- QUIT ""
- +4 IF GMTSUNIT="D"
- IF GMTSLEN>5
- Begin DoDot:1
- +5 NEW GMTSO
- SET GMTSO=GMTSLEN
- IF +GMTSLEN>89!(GMTSLEN#7=0)!(GMTSLEN#7=6)
- Begin DoDot:2
- +6 SET GMTSLEN=GMTSLEN\7
- SET GMTSUNIT="W"
- +7 if GMTSO#7>3
- SET GMTSLEN=GMTSLEN+1
- End DoDot:2
- +8 IF GMTSUNIT="D"
- IF GMTSLEN#32>28
- Begin DoDot:2
- +9 SET GMTSLEN=GMTSLEN\32
- if GMTSO#32>28
- SET GMTSLEN=GMTSLEN+1
- SET GMTSUNIT="M"
- End DoDot:2
- End DoDot:1
- +10 IF GMTSUNIT="W"
- IF GMTSLEN>3
- Begin DoDot:1
- +11 NEW GMTSO
- SET GMTSO=GMTSLEN
- IF +GMTSLEN>23!(GMTSLEN#4=3)!(GMTSLEN#4=0)
- Begin DoDot:2
- +12 SET GMTSLEN=GMTSLEN\4.333333333
- SET GMTSUNIT="M"
- +13 if GMTSO#4.333333333>3
- SET GMTSLEN=GMTSLEN+1
- End DoDot:2
- End DoDot:1
- +14 IF GMTSUNIT="M"
- IF GMTSLEN>11
- Begin DoDot:1
- +15 NEW GMTSO
- SET GMTSO=GMTSLEN
- IF GMTSLEN#12=11!(GMTSLEN#12=0)
- Begin DoDot:2
- +16 SET GMTSLEN=GMTSLEN\12
- SET GMTSUNIT="Y"
- if GMTSO#12=11
- SET GMTSLEN=GMTSLEN+1
- End DoDot:2
- End DoDot:1
- +17 SET X=GMTSLEN_GMTSUNIT
- +18 QUIT X
- +19 ;
- TYPE(I) ; Select Type
- +1 ; Uses Fileman's DIC variables for Lookup
- +2 NEW GMTSHDR,GMTSNOQ,GMTSNOI,GMTSX,GMTSREDO
- TY2 ; Prompt for Type
- +1 SET GMTSX=$$TYPE^GMTSULT
- IF X["@"
- SET X="@"
- SET Y=-1
- QUIT -1
- +2 if +GMTSX'>0
- QUIT -1
- +3 SET GMTSHDR(1)="You have selected the following Health Summary Type to use as an Object:"
- +4 SET GMTSHDR(2)=" "
- SET GMTSNOQ=""
- SET GMTSNOI=""
- SET GMTSREDO=0
- +5 DO DT^GMTSOBD(+GMTSX)
- IF $DATA(^TMP("GMTSOBT",$JOB))
- Begin DoDot:1
- +6 DO NOQUE^GMTSOBD
- WRITE !
- NEW DIR,DTOUT,DUOUT
- SET DIR(0)="YAO"
- SET DIR("A")="Is this correct? "
- SET DIR("B")="Y"
- +7 DO ^DIR
- if $$UP^XLFSTR($EXTRACT(X,1))="N"
- SET GMTSREDO=1
- IF +Y'>0
- SET GMTSX=-1
- End DoDot:1
- +8 if +GMTSREDO>0
- WRITE !
- if +GMTSREDO>0
- GOTO TY2
- +9 DO XY(GMTSX)
- SET I=GMTSX
- KILL ^TMP("GMTSOBT",$JOB)
- +10 QUIT I
- +11 ;
- RP(TYPE,OBJ) ; Report Period
- +1 ; Input TYPE Required, Health Summary Type IEN
- +2 ; OBJ Optional, Health Summary Object IEN
- +3 ;
- +4 ; Output X Report Period, "" or "@"
- +5 ; GMTSQ Up Arrow/Time Out
- +6 ;
- +7 if +($GET(GMTSQ))>0
- QUIT ""
- NEW X,Y,DIR,GMTSX,GMTSDEF,GMTSS,GMTSTY,GMTSOB
- KILL GMTSOBJ("TIME")
- SET GMTSOB=+($GET(OBJ))
- SET GMTSTY=+($GET(TYPE))
- if +GMTSTY=0
- QUIT "@"
- +8 SET GMTSS=$$RT(GMTSTY)
- if +($GET(GMTSQ))>0
- QUIT -1
- if GMTSS'>0
- QUIT "@"
- +9 SET GMTSDEF=$$TIM($PIECE($GET(^GMT(142.5,+($GET(GMTSDA)),0)),U,4))
- +10 SET DIR("A")=" Enter new TIME LIMIT: "
- if $LENGTH(GMTSDEF)
- SET DIR("B")=GMTSDEF
- +11 SET DIR(0)="FAO^1;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
- +12 SET (DIR("?"),DIR("??"))="^D TH^GMTSOBT"
- WRITE !
- DO ^DIR
- IF X="@"
- IF Y=""
- QUIT X
- +13 if $DATA(DIRUT)!($DATA(DIROUT))!($DATA(DTOUT))!($DATA(DUOUT))
- SET GMTSQ=1
- if +($GET(GMTSQ))>0
- QUIT -1
- +14 if '$LENGTH($GET(GMTSX))
- QUIT ""
- WRITE " ",GMTSX
- SET GMTSOBJ("TIME")=$GET(GMTSX)
- +15 SET X=GMTSX
- +16 QUIT X
- RT(X) ; Report Period or Time Limits
- +1 ; Input X IEN or Health Summary Type
- +2 if +($GET(GMTSQ))>0
- QUIT -1
- NEW Y,DIR,GMTSX
- SET GMTSX=+($GET(X))
- DO RTA(+GMTSX)
- +3 IF '$DATA(DIR("A"))
- SET DIR("A",1)=" Overwrite Health Summary Type Time Limits "
- SET DIR("A")=" with Health Summary Object Report Period? "
- +4 SET DIR(0)="YAO"
- SET DIR("B")="N"
- SET (DIR("?"),DIR("??"))="^D RTH^GMTSOBT(GMTSX)"
- +5 WRITE !
- DO ^DIR
- if $DATA(DIRUT)!($DATA(DIROUT))!($DATA(DTOUT))!($DATA(DUOUT))
- SET GMTSQ=1
- +6 if +($GET(GMTSQ))>0
- QUIT -1
- SET X=+($GET(Y))
- +7 QUIT X
- RTH(X) ; Report Period or Time Limits Help
- +1 ; Input X IEN or Health Summary Type
- +2 DO LS(+($GET(X)))
- WRITE !
- +3 DO ATTR
- +4 WRITE !," Entering a new TIME LIMIT for the Health Summary Object will "
- +5 WRITE !," overwrite the TIME LIMITS set the for individual components. "
- +6 WRITE !," It must be alpha numeric and can not exceed 5 characters."
- +7 WRITE !," Examples: ",$GET(BOLD),"3D, 6W, 3M, 1Y",$GET(NORM)
- +8 DO KATTR
- +9 QUIT
- RTA(X) ; Report Period or Time Limit DIR(A)
- +1 DO ATTR
- KILL DIR("A")
- NEW GMTSC,GMTST,GMTSP,GMTSS,GMTSR,GMTSI,GMTSN
- SET GMTSI=+($GET(X))
- if +X'>0
- QUIT
- +2 SET GMTSN=$PIECE($GET(^GMT(142,+GMTSI,0)),"^",1)
- +3 if '$LENGTH(GMTSN)
- QUIT
- +4 IF $LENGTH(GMTSN)
- Begin DoDot:1
- +5 SET GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type '"
- +6 SET GMTST=GMTST_$$UP^XLFSTR(GMTSN)_"'?"
- End DoDot:1
- +7 IF '$LENGTH(GMTSN)
- Begin DoDot:1
- +8 SET GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type?"
- End DoDot:1
- +9 FOR
- if '$LENGTH($$TRIM(GMTST))
- QUIT
- Begin DoDot:1
- +10 IF $LENGTH(GMTST)'>60
- SET GMTSC=+($GET(GMTSC))+1
- SET DIR("A",GMTSC)=" "_$$TRIM(GMTST)_" "
- SET GMTST=""
- QUIT
- +11 SET GMTSS=$EXTRACT($$TRIM(GMTST),1,60)
- SET GMTSS=$PIECE(GMTSS," ",1,($LENGTH(GMTSS," ")-1))
- SET GMTSR=$PIECE($$TRIM(GMTST),GMTSS,2,299)
- SET GMTST=GMTSR
- SET GMTSC=+($GET(GMTSC))+1
- SET DIR("A",GMTSC)=" "_$$TRIM(GMTSS)_" "
- End DoDot:1
- +12 if +($GET(GMTSC))>0
- SET DIR("A")=DIR("A",GMTSC)
- if +($GET(GMTSC))>0
- KILL DIR("A",GMTSC)
- +13 SET (GMTSC,GMTSI)=0
- FOR GMTSC=1:1
- Begin DoDot:1
- +14 if '$DATA(DIR("A",GMTSC))
- SET GMTSS="DIR(""A"")"
- SET GMTSI=1
- +15 if $DATA(DIR("A",GMTSC))
- SET GMTSS="DIR(""A"","_GMTSC_")"
- +16 SET GMTST=@GMTSS
- IF GMTST["Time Limits"
- SET GMTST=$PIECE(GMTST,"Time Limits",1)_$GET(BOLD)_"Time Limits"_$GET(NORM)_$PIECE(GMTST,"Time Limits",2)
- SET @GMTSS=GMTST
- QUIT
- +17 SET GMTST=@GMTSS
- IF GMTST["Report Period"
- SET GMTST=$PIECE(GMTST,"Report Period",1)_$GET(BOLD)_"Report Period"_$GET(NORM)_$PIECE(GMTST,"Report Period",2)
- SET @GMTSS=GMTST
- QUIT
- +18 SET GMTST=@GMTSS
- IF GMTST["a Report"
- SET GMTST=$PIECE(GMTST,"a Report",1)_"a "_$GET(BOLD)_"Report"_$GET(NORM)_$PIECE(GMTST,"a Report",2)
- SET @GMTSS=GMTST
- +19 SET GMTST=@GMTSS
- IF GMTST["Period which"
- SET GMTST=$PIECE(GMTST,"Period which",1)_$GET(BOLD)_"Period"_$GET(NORM)_" which"_$PIECE(GMTST,"Period which",2,299)
- SET @GMTSS=GMTST
- End DoDot:1
- if GMTSI>0
- QUIT
- +20 DO KATTR
- +21 QUIT
- LS(X) ; List Structure
- +1 DO ATTR
- +2 NEW GMTST,GMTSS,GMTSC,GMTSTA,GMTSI,GMTSAB,GMTSOL,GMTSTL,GMTSNM,GMTSHD,GMTSCT
- +3 SET GMTST=+($GET(X))
- if '$DATA(^GMT(142,+GMTST,0))!('$DATA(^GMT(142,+GMTST,1)))
- QUIT 0
- +4 SET (GMTSCT,GMTSTA,GMTSI)=0
- +5 FOR
- SET GMTSI=$ORDER(^GMT(142,+GMTST,1,GMTSI))
- if +GMTSI=0
- QUIT
- Begin DoDot:1
- +6 SET GMTSS=$GET(^GMT(142,+GMTST,1,GMTSI,0))
- SET GMTSC=$GET(^GMT(142.1,+($PIECE(GMTSS,"^",2)),0))
- if +($PIECE(GMTSS,"^",4))'>0!($PIECE(GMTSC,"^",3)'="Y")
- QUIT
- +7 SET GMTSOL=$PIECE(GMTSS,"^",3)
- if '$LENGTH(GMTSOL)
- SET GMTSOL="--"
- SET GMTSTL=$PIECE(GMTSS,"^",4)
- SET GMTSNM=$$EN2^GMTSUMX($PIECE(GMTSC,"^",1))
- +8 SET GMTSHD=$PIECE(GMTSC,"^",9)
- if $LENGTH(GMTSHD)
- SET GMTSNM=GMTSNM
- SET GMTSAB=$PIECE(GMTSC,"^",4)
- SET GMTSCT=+($GET(GMTSCT))+1
- +9 IF GMTSCT=1
- Begin DoDot:2
- +10 WRITE !," Example of Health Summary Type component ",$GET(BOLD),"TIME LIMITS",$GET(NORM),!
- +11 WRITE !,?9,"Abbr",?15,"Component Name",?45,"Max Occurrences",?62,$GET(BOLD),"Time Limits",$GET(NORM)
- +12 WRITE !,?9,"----------------------------------------------------------------"
- End DoDot:2
- +13 WRITE !,?9,GMTSAB,?15,GMTSNM,?49,$JUSTIFY(GMTSOL,4),?63,$GET(BOLD),$JUSTIFY(GMTSTL,5),$GET(NORM)
- End DoDot:1
- if +($GET(GMTSCT))>1
- QUIT
- +14 DO KATTR
- +15 QUIT
- TA(X) ; Time Limits Applicable
- +1 NEW GMTST,GMTSS,GMTSC,GMTSTA,GMTSI
- +2 SET GMTST=+($GET(X))
- if '$DATA(^GMT(142,+GMTST,0))!('$DATA(^GMT(142,+GMTST,1)))
- QUIT 0
- +3 SET (GMTSTA,GMTSI)=0
- +4 FOR
- SET GMTSI=$ORDER(^GMT(142,+GMTST,1,GMTSI))
- if +GMTSI=0
- QUIT
- Begin DoDot:1
- +5 SET GMTSS=$GET(^GMT(142,+GMTST,1,GMTSI,0))
- +6 SET GMTSC=$GET(^GMT(142.1,+($PIECE(GMTSS,"^",2)),0))
- +7 if +($PIECE(GMTSS,"^",4))>0&($PIECE(GMTSC,"^",3)="Y")
- SET GMTSTA=1
- End DoDot:1
- if +GMTSTA>0
- QUIT
- +8 SET X=GMTSTA
- +9 QUIT X
- +10 ;
- +11 ; Miscellaneous
- TRIM(X) ; Trim Spaces
- +1 SET X=$GET(X)
- FOR
- if $EXTRACT(X,1)'=" "
- QUIT
- SET X=$EXTRACT(X,2,$LENGTH(X))
- +2 FOR
- if $EXTRACT(X,$LENGTH(X))'=" "
- QUIT
- SET X=$EXTRACT(X,1,($LENGTH(X)-1))
- +3 QUIT X
- XY(I) ; Set X and Y Variables
- +1 KILL Y,X
- SET X=+($GET(I))
- IF X'>0!('$DATA(^GMT(142,+X,0)))
- SET Y=-1
- QUIT
- +2 SET Y=+X_"^"_$PIECE($GET(^GMT(142,+X,0)),"^",1)
- SET Y(0)=$GET(^GMT(142,+X,0))
- SET Y(0,0)=$PIECE($GET(^GMT(142,+X,0)),"^",1)
- SET Y(0,1)=$$EN^GMTSUMX(Y(0,0))
- +3 QUIT
- ATTR ; Set Screen Attributes
- +1 NEW X,IOINHI,IOINORM
- SET X="IOINHI;IOINORM"
- DO ENDR^%ZISS
- SET BOLD=$GET(IOINHI)
- SET NORM=$GET(IOINORM)
- QUIT
- KATTR ; Kill Screen Attributes
- +1 KILL NORM,BOLD
- QUIT