| 1 | GMTSOBL ; SLC/KER - HS Object - Lookup                 ; 01/06/2003
 | 
|---|
| 2 |  ;;2.7;Health Summary;**58**;Oct 20, 1995
 | 
|---|
| 3 |  ;                
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA 10006  ^DIC  (file #142.5)
 | 
|---|
| 6 |  ;   DBIA 10018  ^DIE  (file #142 and 142.5)
 | 
|---|
| 7 |  ;   DBIA 10013  ^DIK  (file #142 and 142.5)
 | 
|---|
| 8 |  ;   DBIA 10026  ^DIR        
 | 
|---|
| 9 |  ;   DBIA 10010  EN1^DIP
 | 
|---|
| 10 |  ;   DBIA 10076  ^XUSEC(
 | 
|---|
| 11 |  ;   DBIA 10076  ^XUSEC("GMTSMGR")
 | 
|---|
| 12 |  ;   DBIA 10112  $$SITE^VASITE
 | 
|---|
| 13 |  ;   DBIA 10103  $$NOW^XLFDT 
 | 
|---|
| 14 |  ;                       
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | OBJ(X) ; Lookup HS Object
 | 
|---|
| 17 |  Q:+($G(DUZ))'>0 -1  N DIR,DIC,DTOUT,DUOUT,DIROUT,DLAYGO,DA,D,D0,D1,DI,DQ,Y S U="^"
 | 
|---|
| 18 |  S DIC="^GMT(142.5,",DIC(0)="AEMQ",DIC("A")=" Select HEALTH SUMMARY OBJECT:  " K DLAYGO D ^DIC
 | 
|---|
| 19 |  S:+($$ABT)>0 Y=-1 S X=+($G(Y))
 | 
|---|
| 20 |  Q X
 | 
|---|
| 21 | HSO(X) ; Lookup HS Object (by Known Name)
 | 
|---|
| 22 |  I +($G(DUZ))'>0 S GMTSQ=1 Q -1
 | 
|---|
| 23 |  N GMTSOWN,GMTSDICS,GMTSNAM,GMTSIEN,GMTSNEW
 | 
|---|
| 24 |  N DIR,DIC,DTOUT,DUOUT,DIROUT,DLAYGO,DINUM,DA,D,D0,D1,DI,DQ,Y,GMTSL,GMTSH,GMTSS,GMTSTA S U="^"
 | 
|---|
| 25 |  S GMTSNAM=$G(X),GMTSNEW=0,GMTSOWN="",GMTSQ=0 I '$L(GMTSNAM) S GMTSQ=1 Q -1
 | 
|---|
| 26 |  S X=GMTSNAM I '$L(X) S X=-1,GMTSQ=1 Q X
 | 
|---|
| 27 |  S DIC="^GMT(142.5,",DIC(0)="XML",DLAYGO=142.5 S:$L($G(GMTSDICS)) DIC("S")=$G(GMTSDICS)
 | 
|---|
| 28 |  S GMTSTA=+($P($$SITE^VASITE,"^",3)) I +GMTSTA'>0 S X=-1,GMTSQ=1 Q X
 | 
|---|
| 29 |  S GMTSS=+($G(GMTSTA)) S:$D(GMTSDEV) GMTSS=5000 S GMTSL=GMTSS_"0000"
 | 
|---|
| 30 |  S GMTSH=GMTSS_"9999" S GMTSH=($O(^GMT(142.5,+GMTSH),-1)+1)
 | 
|---|
| 31 |  S:+GMTSH<+GMTSL GMTSH=+GMTSS_"0001" S:+GMTSH>0 DINUM=+GMTSH
 | 
|---|
| 32 |  D ^DIC I +($$ABT)>0 S GMTSQ=1,X=-1 Q X
 | 
|---|
| 33 |  S GMTSNEW=+($P(Y,"^",3))
 | 
|---|
| 34 |  I +Y'>0 S X=-1 Q X
 | 
|---|
| 35 |  S X=+($G(Y))_"^"_$P($G(^GMT(142.5,+($G(Y)),0)),"^",1) S:+GMTSNEW>0 $P(X,"^",3)=+GMTSNEW
 | 
|---|
| 36 |  W:GMTSNEW>0 !,"Creating Health Summary Object '",GMTSNAM,"'"
 | 
|---|
| 37 |  S:+GMTSNEW>0 X=$$EE(Y) I +($G(GMTSQ))>1 S X=-1 Q
 | 
|---|
| 38 |  S:+X'>0 X=-1 I +($G(GMTSQ))=0 D
 | 
|---|
| 39 |  . D:+GMTSNEW>0&(+X>0) NEW^GMTSOBL2(+X)
 | 
|---|
| 40 |  . D:+GMTSNEW'>0&(+X>0) MOD^GMTSOBL2(+X)
 | 
|---|
| 41 |  Q X
 | 
|---|
| 42 | LK(X) ; Lookup HS Object (Learn as you go)
 | 
|---|
| 43 |  Q:+($G(DUZ))'>0 -1  N GMTSDICS,GMTSB S GMTSDICS=$G(DIC("S")) K DIC("S") S GMTSDICS=$$DIM^GMTSOBL2(GMTSDICS),GMTSB=$P($$B^GMTSOBL2,"^",2)
 | 
|---|
| 44 |  N DIR,DIC,DTOUT,DUOUT,DIROUT,DLAYGO,DA,D,D0,D1,DI,DQ,GMTSNAM,GMTSTA
 | 
|---|
| 45 |  N GMTS,GMTSTD,GMTSOBJ,GMTSOBN,GMTSDT,GMTSNEW,GMTSDEF,GMTSDA,Y,X1 S U="^"
 | 
|---|
| 46 |  S GMTSNEW=0,GMTSTA=+($P($$SITE^VASITE,"^",3)) Q:+GMTSTA=0 -1
 | 
|---|
| 47 |  S DIR(0)="FAO^1:30^S:X="" "" (X,X1)=$G(GMTSB) K:$L(X)<3&(X'="" "") X"
 | 
|---|
| 48 |  S DIR("A")=" Select HEALTH SUMMARY OBJECT:  ",(DIR("?"),DIR("??"))="^D NAH^GMTSOBL2"
 | 
|---|
| 49 |  D ^DIR Q:'$L(Y)!(Y["^") -1  S GMTSNAM=Y
 | 
|---|
| 50 |  S DIC="^GMT(142.5,",DIC(0)="EM" S:$L($G(GMTSDICS)) DIC("S")=$G(GMTSDICS)
 | 
|---|
| 51 |  W ! D ^DIC
 | 
|---|
| 52 |  I +($$ABT)>0 S GMTSQ=1,Y=-1,X=-1 Q X
 | 
|---|
| 53 |  I +Y'>0 D  Q:+Y'>0 -1
 | 
|---|
| 54 |  . N X,DIC,DINUM,GMTSL,GMTSH,GMTSS S GMTSS=+($G(GMTSTA)) S:$D(GMTSDEV) GMTSS=5000
 | 
|---|
| 55 |  . S X=$G(GMTSNAM) Q:'$L(X)  S GMTSL=GMTSS_"0000"
 | 
|---|
| 56 |  . S GMTSH=GMTSS_"9999",GMTSH=($O(^GMT(142.5,+GMTSH),-1)+1)
 | 
|---|
| 57 |  . S:+GMTSH<+GMTSL GMTSH=+GMTSS_"0001" S:+GMTSH>0 DINUM=+GMTSH
 | 
|---|
| 58 |  . S DIC="^GMT(142.5,",DIC(0)="EML",DLAYGO=142.5
 | 
|---|
| 59 |  . S:$L($G(GMTSDICS)) DIC("S")=$G(GMTSDICS) D ^DIC
 | 
|---|
| 60 |  . S GMTSNEW=+($P(Y,"^",3))
 | 
|---|
| 61 |  . I +($$ABT)>0 S GMTSQ=1
 | 
|---|
| 62 |  I +($G(GMTSQ))>0 S Y=-1,X=-1 Q X
 | 
|---|
| 63 |  S X=+($G(Y))_"^"_$P($G(^GMT(142.5,+($G(Y)),0)),"^",1)
 | 
|---|
| 64 |  S:+GMTSNEW>0 $P(X,"^",3)=+GMTSNEW S X=$$EE(Y) S:+X'>0 X=-1 I +X'>0 S GMTSQ=1,Y=-1,X=-1 Q X
 | 
|---|
| 65 |  I +($G(GMTSQ))=0 D:+GMTSNEW>0&(+X>0) NEW^GMTSOBL2(+X) D:+GMTSNEW'>0&(+X>0) MOD^GMTSOBL2(+X)
 | 
|---|
| 66 |  Q X
 | 
|---|
| 67 | EE(X) ; Enter/Edit
 | 
|---|
| 68 |  N GMTSOBJ,DA,GMTSY,GMTSNAM,GMTSTYP,GMTSDICS,GMTSDICA,GMTSDICB,Y S Y=$G(X) S (GMTSOBJ,DA,X)=+($G(Y)),GMTSY=$G(Y)
 | 
|---|
| 69 |  S GMTSTYP=$P($G(^GMT(142.5,+DA,0)),"^",3),GMTSTYP=$P($G(^GMT(142,+GMTSTYP,0)),"^",1)
 | 
|---|
| 70 |  S GMTSNEW=$S(+($P($G(Y),U,3))>0:1,1:0) I GMTSNEW>0 D
 | 
|---|
| 71 |  . S $P(^GMT(142.5,+DA,0),"^",20)=$S($D(GMTSDEV):1,1:0)
 | 
|---|
| 72 |  S GMTSDT=$$NOW^XLFDT,GMTSOBN=$P($G(^GMT(142.5,+X,0)),U,1)
 | 
|---|
| 73 |  I $D(GMTSOWN) D  I X'>0 S GMTSQ=1 Q X
 | 
|---|
| 74 |  . N GMTSCRE S GMTSCRE=$P($G(^GMT(142.5,+X,0)),"^",17) Q:+GMTSCRE'>0
 | 
|---|
| 75 |  . I GMTSNEW'>0,GMTSCRE'=DUZ W !!,"    Sorry, you can not edit someone else's object." S X=-1
 | 
|---|
| 76 |  I GMTSNEW>0,+DA>0,$D(^GMT(142.5,+DA,0)) D
 | 
|---|
| 77 |  . S $P(^GMT(142.5,+DA,0),U,17)=+($G(DUZ)),$P(^GMT(142.5,+DA,0),U,18)=+GMTSDT
 | 
|---|
| 78 |  I +X>0 D  Q:$G(X)=-1!($G(DA)=-1)!($G(Y)=-1) -1
 | 
|---|
| 79 |  . N DIR,DIC,DTOUT,DUOUT,DIROUT,DLAYGO,X,Y,GMTSDEF,GMTSD,GMTSDA
 | 
|---|
| 80 |  . S GMTSDA=+DA,GMTSD=""
 | 
|---|
| 81 |  . ; Type
 | 
|---|
| 82 |  . S GMTSDEF=$P($G(^GMT(142.5,+DA,0)),U,3),GMTSD=$P($G(^GMT(142,+GMTSDEF,0)),"^",1)
 | 
|---|
| 83 |  . S:$L(GMTSD) DIC("B")=GMTSDEF S DIC("A")=" Select HEALTH SUMMARY TYPE:  "
 | 
|---|
| 84 |  . S:$D(GMTSDEV) DIC("S")="I +($G(^GMT(142,+Y,""VA"")))>0"
 | 
|---|
| 85 |  . D K S GMTS=$$TY(GMTSDEF)
 | 
|---|
| 86 |  . I +($$ABT)>0 D  Q
 | 
|---|
| 87 |  . . W !,"<<<<<< ABORT >>>>>>"
 | 
|---|
| 88 |  . . S GMTSQ=1,X=-1 I +($G(GMTSNEW))>0 S DIK="^GMT(142.5,",DA=GMTSDA D ^DIK
 | 
|---|
| 89 |  . I $G(X)="@" S GMTSQ=1 S:$L(GMTSDEF) GMTS=GMTSD_"^"_GMTSDEF D NT^GMTSOBL2(GMTSY) Q
 | 
|---|
| 90 |  . I +GMTS'>0,+DA>0,GMTSNEW>0 S GMTSQ=1 D NT^GMTSOBL2(GMTSY) Q
 | 
|---|
| 91 |  . I +GMTS>0,+DA>0 D  Q:$G(X)=-1!($G(DA)=-1)!($G(Y)=-1)  Q:+($G(GMTSQ))>0
 | 
|---|
| 92 |  . . N GMTSED,DIE,DR,GMTSI,GMTST,GMTSV,GMTSDT S GMTSDT=$$NOW^XLFDT
 | 
|---|
| 93 |  . . S GMTSV=+($G(GMTS)),DIE="^GMT(142.5,",DR=".03////^S X=$G(GMTSV)"
 | 
|---|
| 94 |  . . S GMTSED=0 F GMTSI=1:1:3 Q:GMTSI>3  L +^GMT(142.5):0 H:'$T 1 I $T D
 | 
|---|
| 95 |  . . . D ^DIE S GMTSED=1 S $P(^GMT(142.5,+DA,0),U,19)=$$NOW^XLFDT,GMTSI=4
 | 
|---|
| 96 |  . . I 'GMTSED S GMTSQ=1 K GMTSOBJ W !,"  Record Locked by another user" Q
 | 
|---|
| 97 |  . . L -^GMT(142.5) S GMTST=+($P($G(^GMT(142.5,+DA,0)),U,3))
 | 
|---|
| 98 |  . . I +GMTST'>0,+DA>0 D NT^GMTSOBL2(GMTSY) Q
 | 
|---|
| 99 |  S X=+($G(DA))_"^"_$P($G(^GMT(142.5,+($G(DA)),0)),"^",1)
 | 
|---|
| 100 |  S:+GMTSNEW>0 X=X_"^"_+GMTSNEW
 | 
|---|
| 101 |  S X=$$VER^GMTSOBL2(X)
 | 
|---|
| 102 |  Q X
 | 
|---|
| 103 | TYPE(GMTS) ; Lookup HS Type
 | 
|---|
| 104 |  F  S GMTS=$$TYPE^GMTSOBT Q:+GMTS>0!(X="@")!(X["^")!(X="")
 | 
|---|
| 105 |  S:X["^" X="^" S:X["^"!(X="@")!(X="") GMTS=-1
 | 
|---|
| 106 |  Q GMTS
 | 
|---|
| 107 | TY(GMTS) ; Lookup HS Type   (Learn as you go)
 | 
|---|
| 108 |  N ADEL,B,BY,CHANGE,CNT,DA,DHD,DIC,DIE,DIK,DIR,DLAYGO,DR
 | 
|---|
| 109 |  N EXISTS,FLDS,FR,GMTSEG,GMTSIEN,GMTSDEF,GMTSIFN,GMTSMGR,GNTSN
 | 
|---|
| 110 |  N GMTSNEW,GMTSQIT,GMTSUM,L,LCNT,LI,NXTCMP,SELCNT,SOACTION,TO,TWEENER
 | 
|---|
| 111 |  N TYPE,Y S EXISTS=0,(GMTSDEF,X)=$G(GMTS),GMTSQIT=0
 | 
|---|
| 112 |  W:'$D(GMTSDICA) ! S U="^",DIC="^GMT(142,",DIC(0)="AEMQL"
 | 
|---|
| 113 |  S DIC("A")=" Select Health Summary Type: "
 | 
|---|
| 114 |  S:$L($G(GMTSDICA)) DIC("A")=$G(GMTSDICA)
 | 
|---|
| 115 |  S GMTSDEF=$S(+GMTSDEF>0:$P($G(^GMT(142,+GMTSDEF,0)),"^",1),1:"")
 | 
|---|
| 116 |  S:$L($G(GMTSDEF)) DIC("B")=$G(GMTSDEF)
 | 
|---|
| 117 |  S DIC("S")="I +($$AHST^GMTSULT(+($G(Y))))"
 | 
|---|
| 118 |  S DLAYGO=142,Y=$$TYPE^GMTSULT K DIC I +Y'>0 S X="@" Q -1
 | 
|---|
| 119 |  S (GMTSIFN,DA)=+Y,GMTSUM=$P(Y,U,2),GMTSNEW=+$P(Y,U,3)
 | 
|---|
| 120 |  S GMTSMGR=$S($D(^XUSEC("GMTSMGR",DUZ)):1,1:0)
 | 
|---|
| 121 |  I 'GMTSNEW S X=$S(+Y>0:+Y,1:"@"),GMTS=+Y Q GMTS
 | 
|---|
| 122 |  S DIE="^GMT(142,",(GMTSIFN,DA)=+Y,DR="[GMTS EDIT HLTH SUM TYPE]" D ^DIE
 | 
|---|
| 123 |  I '$D(^GMT(142,+GMTSIFN,0))!($D(Y))!$D(DUOUT)!$D(DIROUT)!$D(DTOUT) D  Q -1
 | 
|---|
| 124 |  . S GMTSQIT=1 D CD S:'$D(^GMT(142,+GMTSIFN,0)) X="@"
 | 
|---|
| 125 |  D SELCMP^GMTSRM5 I GMTSQIT D DEL(GMTSIFN) Q -1
 | 
|---|
| 126 |  D LIST:EXISTS,EXISTS,CD S X=$S($D(^GMT(142,+($G(GMTSIFN)),0)):+GMTSIFN,1:-1)
 | 
|---|
| 127 |  K:+X>0 DTOUT,DUOUT,DIRUT,DIROUT S:+X>0 GMTSQ=0
 | 
|---|
| 128 |  Q X
 | 
|---|
| 129 | CD ;   Check for Possible Deletion (New Type without Component)
 | 
|---|
| 130 |  Q:+($G(GMTSIFN))'>0  Q:'$D(^GMT(142,+($G(GMTSIFN)),0))
 | 
|---|
| 131 |  D:GMTSMGR!(GMTSNEW)!($P(^GMT(142,+GMTSIFN,0),U,3)'=$G(DUZ)) ADEL(+($G(GMTSIFN)))
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 | EXISTS ;   Edit an existing health summary type
 | 
|---|
| 134 |  N CNT,NXTCMP,GMTSQIT S GMTSQIT=0 Q:$D(DUOUT)  S NXTCMP=0,NXTCMP(0)=0
 | 
|---|
| 135 |  F CNT=$$GETCNT(GMTSIFN):0 D NXTCMP^GMTSRM1 D LIST:GMTSQIT Q:GMTSQIT!($D(DUOUT))  K GMTSQIT,GMTSNEW,TWEENER,SOACTION
 | 
|---|
| 136 |  I NXTCMP>0 W !,"Please hold on while I resequence the summary order" D COPY^GMTSRN,RNMBR^GMTSRN:CHANGE
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 | LIST ;   Lists existing summary parameters
 | 
|---|
| 139 |  N B,DIC,DIR,IOP,Y,FR,TO,BY,DHD,FLDS,L I GMTSQIT'=2 Q:($D(DUOUT)!(GMTSQIT=1))
 | 
|---|
| 140 |  I GMTSQIT=2,(NXTCMP=0) S GMTSQIT=0 Q
 | 
|---|
| 141 |  I 'GMTSNEW W ! S DIC=142,DIR(0)="Y",DIR("A")="Do you wish to review the Summary Type structure before continuing",DIR("B")="NO" D ^DIR K DIR I 'Y S:GMTSQIT=2 DUOUT="" S:GMTSQIT=2 GMTSQIT="D" S:$D(DUOUT) GMTSQIT=1 Q
 | 
|---|
| 142 |  I $D(GMTSQIT),GMTSQIT=2 S GMTSQIT=0
 | 
|---|
| 143 |  S IOP="HOME",DIC=142,(FR,TO)=GMTSUM,BY=".01",DHD="[GMTS TYPE INQ HEADER]-[GMTS TYPE INQ FOOTER]",FLDS="[GMTS TYPE INQ]",L=0 D EN1^DIP
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 | GETCNT(GMTSIFN) ;   Determine default summary order for new component
 | 
|---|
| 146 |  N LI,LCNT S LI=0,LCNT=5 F  S LI=$O(^GMT(142,+GMTSIFN,1,LI)) Q:+LI'>0  S LCNT=$P(LI,".")+5
 | 
|---|
| 147 |  Q LCNT
 | 
|---|
| 148 | ADEL(X) ;   Ask to Delete Type
 | 
|---|
| 149 |  N GMTSIEN,GMTSN,ADEL,DIR S GMTSIEN=+($G(X)),ADEL=""  Q:GMTSIEN=0  Q:'$D(^GMT(142,GMTSIEN,0))  Q:$D(^GMT(142,GMTSIEN,1,"B"))
 | 
|---|
| 150 |  S GMTSN=$P($G(^GMT(142,GMTSIEN,0)),"^",1) Q:'$L(GMTSN)  S DIR("A",1)=" Health Summary Type '"_GMTSN_"' has no Components",DIR("A")=" Do you want to delete this type?  (Y/N)  ",DIR("B")="Yes",DIR(0)="YAO",DIR("?")="     Enter either 'Y' or 'N'."
 | 
|---|
| 151 |  W ! D ^DIR D:Y>0 DEL(+($G(GMTSIEN)))
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 | DEL(X) ;   Delete Type
 | 
|---|
| 154 |  N DIK,DA,GMTSN S DA=+($G(X)) Q:DA=0  Q:'$D(^GMT(142,DA,0))
 | 
|---|
| 155 |  S DIK="^GMT(142,",GMTSN=$P($G(^GMT(142,DA,0)),"^",1) Q:'$L(GMTSN)  D ^DIK
 | 
|---|
| 156 |  I '$D(^GMT(142,DA,0)) W:$D(ADEL) "  < Health Summary Type deleted >" W:'$D(ADEL) !,?2,GMTSN,"  < deleted >"
 | 
|---|
| 157 |  Q
 | 
|---|
| 158 | K ; Kill Common Variables
 | 
|---|
| 159 |  K DTOUT,DUOUT,DIRUT,DIROUT
 | 
|---|
| 160 |  Q
 | 
|---|
| 161 | ABT(X) ; Abort
 | 
|---|
| 162 |  Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) 1
 | 
|---|
| 163 |  Q 0
 | 
|---|
| 164 | ST ; Show Type
 | 
|---|
| 165 |  N GMTSN,GMTSC S GMTSN="^GMT(142,"_+($G(GMTSIFN))_")",GMTSC="^GMT(142,"_+($G(GMTSIFN))_","
 | 
|---|
| 166 |  W ! F  S GMTSN=$Q(@GMTSN) Q:GMTSN=""!(GMTSN'[GMTSC)  W !,GMTSN,"=",@GMTSN
 | 
|---|
| 167 |  Q
 | 
|---|