| 1 | GMTSOBT ; SLC/KER - HS Object - Time and Type        ; 01/06/2003
 | 
|---|
| 2 |  ;;2.7;Health Summary;**58**;Oct 20, 1995
 | 
|---|
| 3 |  ;                
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA  10104  $$UP^XLFSTR
 | 
|---|
| 6 |  ;   DBIA  10088  ENDR^%ZISS
 | 
|---|
| 7 |  ;   DBIA  10026  ^DIR        
 | 
|---|
| 8 |  ;            
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 | TP ; Time Period
 | 
|---|
| 11 |  Q:+($G(GMTSQ))>0  N X,Y,DIR,GMTSX,GMTSDEF K GMTSOBJ("TIME")
 | 
|---|
| 12 |  S GMTSDEF=$$TIM($P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,4))
 | 
|---|
| 13 |  S DIR("A")=" Enter REPORT PERIOD:  ",DIR("B")="3M" S:$L(GMTSDEF) DIR("B")=GMTSDEF
 | 
|---|
| 14 |  S DIR(0)="FAO^2;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
 | 
|---|
| 15 |  S (DIR("?"),DIR("??"))="^D TH^GMTSOBT"
 | 
|---|
| 16 |  D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1
 | 
|---|
| 17 |  Q:+($G(GMTSQ))>0  Q:'$L($G(GMTSX))  W "  ",GMTSX S GMTSOBJ("TIME")=$G(GMTSX)
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | TH ;   Time Help
 | 
|---|
| 20 |  D ATTR
 | 
|---|
| 21 |  W !,"     Enter a time limit for the Health Summary report/object.  It"
 | 
|---|
| 22 |  W !,"     must be in the format of a numeric time length and an alpha"
 | 
|---|
| 23 |  W !,"     time unit, and can not exceed 5 characters.  If no time unit"
 | 
|---|
| 24 |  W !,"     is provided, then the time unit will be set to Days (D), i.e.,"
 | 
|---|
| 25 |  W !,"     "
 | 
|---|
| 26 |  W !,$G(BOLD),"                 11, 2D, 4D, 6W, 18W, 3M, 6M, 1Y",$G(NORM)
 | 
|---|
| 27 |  D KATTR
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | TIM(X) ;   Input Transform for Time
 | 
|---|
| 30 |  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)
 | 
|---|
| 31 |  N GMTSLEN,GMTSUNIT S GMTSLEN=+X,GMTSUNIT=$E(X,$L(X)) S:+GMTSUNIT>0 GMTSUNIT="D" S:$L(GMTSLEN)=$L(X) GMTSUNIT="D"
 | 
|---|
| 32 |  Q:GMTSUNIT'="D"&(GMTSUNIT'="W")&(GMTSUNIT'="M")&(GMTSUNIT'="Y") ""
 | 
|---|
| 33 |  I GMTSUNIT="D",GMTSLEN>5 D
 | 
|---|
| 34 |  . N GMTSO S GMTSO=GMTSLEN I +GMTSLEN>89!(GMTSLEN#7=0)!(GMTSLEN#7=6) D
 | 
|---|
| 35 |  . . S GMTSLEN=GMTSLEN\7,GMTSUNIT="W"
 | 
|---|
| 36 |  . . S:GMTSO#7>3 GMTSLEN=GMTSLEN+1
 | 
|---|
| 37 |  . I GMTSUNIT="D",GMTSLEN#32>28 D
 | 
|---|
| 38 |  . . S GMTSLEN=GMTSLEN\32 S:GMTSO#32>28 GMTSLEN=GMTSLEN+1 S GMTSUNIT="M"
 | 
|---|
| 39 |  I GMTSUNIT="W",GMTSLEN>3 D
 | 
|---|
| 40 |  . N GMTSO S GMTSO=GMTSLEN I +GMTSLEN>23!(GMTSLEN#4=3)!(GMTSLEN#4=0) D
 | 
|---|
| 41 |  . . S GMTSLEN=GMTSLEN\4.333333333,GMTSUNIT="M"
 | 
|---|
| 42 |  . . S:GMTSO#4.333333333>3 GMTSLEN=GMTSLEN+1
 | 
|---|
| 43 |  I GMTSUNIT="M",GMTSLEN>11 D
 | 
|---|
| 44 |  . N GMTSO S GMTSO=GMTSLEN I GMTSLEN#12=11!(GMTSLEN#12=0) D
 | 
|---|
| 45 |  . . S GMTSLEN=GMTSLEN\12,GMTSUNIT="Y" S:GMTSO#12=11 GMTSLEN=GMTSLEN+1
 | 
|---|
| 46 |  S X=GMTSLEN_GMTSUNIT
 | 
|---|
| 47 |  Q X
 | 
|---|
| 48 |  ;                    
 | 
|---|
| 49 | TYPE(I) ; Select Type
 | 
|---|
| 50 |  ;   Uses Fileman's DIC variables for Lookup
 | 
|---|
| 51 |  N GMTSHDR,GMTSNOQ,GMTSNOI,GMTSX,GMTSREDO
 | 
|---|
| 52 | TY2 ;   Prompt for Type
 | 
|---|
| 53 |  S GMTSX=$$TYPE^GMTSULT I X["@" S X="@",Y=-1 Q -1
 | 
|---|
| 54 |  Q:+GMTSX'>0 -1
 | 
|---|
| 55 |  S GMTSHDR(1)="You have selected the following Health Summary Type to use as an Object:"
 | 
|---|
| 56 |  S GMTSHDR(2)=" ",GMTSNOQ="",GMTSNOI="",GMTSREDO=0
 | 
|---|
| 57 |  D DT^GMTSOBD(+GMTSX) I $D(^TMP("GMTSOBT",$J)) D
 | 
|---|
| 58 |  . D NOQUE^GMTSOBD W ! N DIR,DTOUT,DUOUT S DIR(0)="YAO",DIR("A")="Is this correct?  ",DIR("B")="Y"
 | 
|---|
| 59 |  . D ^DIR S:$$UP^XLFSTR($E(X,1))="N" GMTSREDO=1 I +Y'>0 S GMTSX=-1
 | 
|---|
| 60 |  W:+GMTSREDO>0 ! G:+GMTSREDO>0 TY2
 | 
|---|
| 61 |  D XY(GMTSX) S I=GMTSX K ^TMP("GMTSOBT",$J)
 | 
|---|
| 62 |  Q I
 | 
|---|
| 63 |  ;                   
 | 
|---|
| 64 | RP(TYPE,OBJ) ; Report Period
 | 
|---|
| 65 |  ;   Input    TYPE   Required, Health Summary Type IEN
 | 
|---|
| 66 |  ;            OBJ    Optional, Health Summary Object IEN
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ;   Output   X      Report Period, "" or "@"
 | 
|---|
| 69 |  ;            GMTSQ  Up Arrow/Time Out
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  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 "@"
 | 
|---|
| 72 |  S GMTSS=$$RT(GMTSTY) Q:+($G(GMTSQ))>0 -1  Q:GMTSS'>0 "@"
 | 
|---|
| 73 |  S GMTSDEF=$$TIM($P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,4))
 | 
|---|
| 74 |  S DIR("A")=" Enter new TIME LIMIT:  " S:$L(GMTSDEF) DIR("B")=GMTSDEF
 | 
|---|
| 75 |  S DIR(0)="FAO^1;5^S X=$$TIM^GMTSOBT(X) S:$L(X) GMTSX=X K:'$L(X) X"
 | 
|---|
| 76 |  S (DIR("?"),DIR("??"))="^D TH^GMTSOBT" W ! D ^DIR I X="@",Y="" Q X
 | 
|---|
| 77 |  S:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) GMTSQ=1 Q:+($G(GMTSQ))>0 -1
 | 
|---|
| 78 |  Q:'$L($G(GMTSX)) ""  W "  ",GMTSX S GMTSOBJ("TIME")=$G(GMTSX)
 | 
|---|
| 79 |  S X=GMTSX
 | 
|---|
| 80 |  Q X
 | 
|---|
| 81 | RT(X) ;   Report Period or Time Limits
 | 
|---|
| 82 |  ;     Input  X   IEN or Health Summary Type
 | 
|---|
| 83 |  Q:+($G(GMTSQ))>0 -1  N Y,DIR,GMTSX S GMTSX=+($G(X)) D RTA(+GMTSX)
 | 
|---|
| 84 |  I '$D(DIR("A")) S DIR("A",1)=" Overwrite Health Summary Type Time Limits ",DIR("A")=" with Health Summary Object Report Period?  "
 | 
|---|
| 85 |  S DIR(0)="YAO",DIR("B")="N",(DIR("?"),DIR("??"))="^D RTH^GMTSOBT(GMTSX)"
 | 
|---|
| 86 |  W ! D ^DIR S:$D(DIRUT)!($D(DIROUT))!($D(DTOUT))!($D(DUOUT)) GMTSQ=1
 | 
|---|
| 87 |  Q:+($G(GMTSQ))>0 -1 S X=+($G(Y))
 | 
|---|
| 88 |  Q X
 | 
|---|
| 89 | RTH(X) ;   Report Period or Time Limits Help
 | 
|---|
| 90 |  ;     Input  X   IEN or Health Summary Type
 | 
|---|
| 91 |  D LS(+($G(X))) W !
 | 
|---|
| 92 |  D ATTR
 | 
|---|
| 93 |  W !,"     Entering a new TIME LIMIT for the Health Summary Object will "
 | 
|---|
| 94 |  W !,"     overwrite the TIME LIMITS set the for individual components. "
 | 
|---|
| 95 |  W !,"     It must be alpha numeric and can not exceed 5 characters."
 | 
|---|
| 96 |  W !,"     Examples:  ",$G(BOLD),"3D, 6W, 3M, 1Y",$G(NORM)
 | 
|---|
| 97 |  D KATTR
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | RTA(X) ;   Report Period or Time Limit DIR(A)
 | 
|---|
| 100 |  D ATTR K DIR("A") N GMTSC,GMTST,GMTSP,GMTSS,GMTSR,GMTSI,GMTSN S GMTSI=+($G(X)) Q:+X'>0
 | 
|---|
| 101 |  S GMTSN=$P($G(^GMT(142,+GMTSI,0)),"^",1)
 | 
|---|
| 102 |  Q:'$L(GMTSN)
 | 
|---|
| 103 |  I $L(GMTSN) D
 | 
|---|
| 104 |  . S GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type '"
 | 
|---|
| 105 |  . S GMTST=GMTST_$$UP^XLFSTR(GMTSN)_"'?"
 | 
|---|
| 106 |  I '$L(GMTSN) D
 | 
|---|
| 107 |  . S GMTST="Do you want to overwrite the TIME LIMITS in the Health Summary Type?"
 | 
|---|
| 108 |  F  Q:'$L($$TRIM(GMTST))  D
 | 
|---|
| 109 |  . I $L(GMTST)'>60 S GMTSC=+($G(GMTSC))+1,DIR("A",GMTSC)=" "_$$TRIM(GMTST)_"  ",GMTST="" Q
 | 
|---|
| 110 |  . 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)_"  "
 | 
|---|
| 111 |  S:+($G(GMTSC))>0 DIR("A")=DIR("A",GMTSC) K:+($G(GMTSC))>0 DIR("A",GMTSC)
 | 
|---|
| 112 |  S (GMTSC,GMTSI)=0 F GMTSC=1:1 D  Q:GMTSI>0
 | 
|---|
| 113 |  . S:'$D(DIR("A",GMTSC)) GMTSS="DIR(""A"")",GMTSI=1
 | 
|---|
| 114 |  . S:$D(DIR("A",GMTSC)) GMTSS="DIR(""A"","_GMTSC_")"
 | 
|---|
| 115 |  . 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
 | 
|---|
| 116 |  . 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
 | 
|---|
| 117 |  . 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
 | 
|---|
| 118 |  . 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
 | 
|---|
| 119 |  D KATTR
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 | LS(X) ; List Structure
 | 
|---|
| 122 |  D ATTR
 | 
|---|
| 123 |  N GMTST,GMTSS,GMTSC,GMTSTA,GMTSI,GMTSAB,GMTSOL,GMTSTL,GMTSNM,GMTSHD,GMTSCT
 | 
|---|
| 124 |  S GMTST=+($G(X)) Q:'$D(^GMT(142,+GMTST,0))!('$D(^GMT(142,+GMTST,1))) 0
 | 
|---|
| 125 |  S (GMTSCT,GMTSTA,GMTSI)=0
 | 
|---|
| 126 |  F  S GMTSI=$O(^GMT(142,+GMTST,1,GMTSI)) Q:+GMTSI=0  D  Q:+($G(GMTSCT))>1
 | 
|---|
| 127 |  . 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")
 | 
|---|
| 128 |  . S GMTSOL=$P(GMTSS,"^",3) S:'$L(GMTSOL) GMTSOL="--" S GMTSTL=$P(GMTSS,"^",4),GMTSNM=$$EN2^GMTSUMX($P(GMTSC,"^",1))
 | 
|---|
| 129 |  . S GMTSHD=$P(GMTSC,"^",9) S:$L(GMTSHD) GMTSNM=GMTSNM S GMTSAB=$P(GMTSC,"^",4),GMTSCT=+($G(GMTSCT))+1
 | 
|---|
| 130 |  . I GMTSCT=1 D
 | 
|---|
| 131 |  . . W !,"     Example of Health Summary Type component ",$G(BOLD),"TIME LIMITS",$G(NORM),!
 | 
|---|
| 132 |  . . W !,?9,"Abbr",?15,"Component Name",?45,"Max Occurrences",?62,$G(BOLD),"Time Limits",$G(NORM)
 | 
|---|
| 133 |  . . W !,?9,"----------------------------------------------------------------"
 | 
|---|
| 134 |  . W !,?9,GMTSAB,?15,GMTSNM,?49,$J(GMTSOL,4),?63,$G(BOLD),$J(GMTSTL,5),$G(NORM)
 | 
|---|
| 135 |  D KATTR
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 | TA(X) ; Time Limits Applicable
 | 
|---|
| 138 |  N GMTST,GMTSS,GMTSC,GMTSTA,GMTSI
 | 
|---|
| 139 |  S GMTST=+($G(X)) Q:'$D(^GMT(142,+GMTST,0))!('$D(^GMT(142,+GMTST,1))) 0
 | 
|---|
| 140 |  S (GMTSTA,GMTSI)=0
 | 
|---|
| 141 |  F  S GMTSI=$O(^GMT(142,+GMTST,1,GMTSI)) Q:+GMTSI=0  D  Q:+GMTSTA>0
 | 
|---|
| 142 |  . S GMTSS=$G(^GMT(142,+GMTST,1,GMTSI,0))
 | 
|---|
| 143 |  . S GMTSC=$G(^GMT(142.1,+($P(GMTSS,"^",2)),0))
 | 
|---|
| 144 |  . S:+($P(GMTSS,"^",4))>0&($P(GMTSC,"^",3)="Y") GMTSTA=1
 | 
|---|
| 145 |  S X=GMTSTA
 | 
|---|
| 146 |  Q X
 | 
|---|
| 147 |  ;                     
 | 
|---|
| 148 |  ; Miscellaneous
 | 
|---|
| 149 | TRIM(X) ;   Trim Spaces
 | 
|---|
| 150 |  S X=$G(X) F  Q:$E(X,1)'=" "  S X=$E(X,2,$L(X))
 | 
|---|
| 151 |  F  Q:$E(X,$L(X))'=" "  S X=$E(X,1,($L(X)-1))
 | 
|---|
| 152 |  Q X
 | 
|---|
| 153 | XY(I) ;   Set X and Y Variables
 | 
|---|
| 154 |  K Y,X S X=+($G(I)) I X'>0!('$D(^GMT(142,+X,0))) S Y=-1 Q
 | 
|---|
| 155 |  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))
 | 
|---|
| 156 |  Q
 | 
|---|
| 157 | ATTR ;   Set Screen Attributes
 | 
|---|
| 158 |  N X,IOINHI,IOINORM S X="IOINHI;IOINORM" D ENDR^%ZISS S BOLD=$G(IOINHI),NORM=$G(IOINORM) Q
 | 
|---|
| 159 | KATTR ;   Kill Screen Attributes
 | 
|---|
| 160 |  K NORM,BOLD Q
 | 
|---|