[613] | 1 | GMTSOBJ ; SLC/KER - HS Object - Create/Test/Display ; 01/06/2003
|
---|
| 2 | ;;2.7;Health Summary;**58,63**;Oct 20, 1995
|
---|
| 3 | ;
|
---|
| 4 | ; External References
|
---|
| 5 | ; DBIA 2320 $$DEL^%ZISH
|
---|
| 6 | ; DBIA 2320 $$FTG^%ZISH
|
---|
| 7 | ; DBIA 2320 $$PWD^%ZISH
|
---|
| 8 | ; DBIA 2320 CLOSE^%ZISH
|
---|
| 9 | ; DBIA 2320 OPEN^%ZISH
|
---|
| 10 | ; DBIA 10006 ^DIC (file #142.5 and #2)
|
---|
| 11 | ; DBIA 10013 ^DIK
|
---|
| 12 | ; DBIA 2054 $$CREF^DILF
|
---|
| 13 | ; DBIA 2054 $$OREF^DILF
|
---|
| 14 | ; DBIA 10026 ^DIR
|
---|
| 15 | ; DBIA 10103 $$NOW^XLFDT
|
---|
| 16 | ;
|
---|
| 17 | Q
|
---|
| 18 | MGR ; Create/Modify Health Summary Object (Manager)
|
---|
| 19 | N GMTSMGR S GMTSMGR="" G OBJ
|
---|
| 20 | ;
|
---|
| 21 | DEVOBJ ; Create/Modify Health Summary Object (Developer)
|
---|
| 22 | N GMTSDEV S GMTSDEV=5000
|
---|
| 23 | ;
|
---|
| 24 | OBJ ; Create/Modify Health Summary Object
|
---|
| 25 | ; Option: GMTS OBJ ENTER/EDIT
|
---|
| 26 | ; Create/Modify Health Summary Object
|
---|
| 27 | N BOLD,DA,DFN,DIC,DIE,DIR,DIROUT,DLAYGO,DR,DTOUT,DUOUT,GMP,GMTS
|
---|
| 28 | N GMTSBLK,GMTSCHD,GMTSCON,GMTSDEC,GMTSDEF,GMTSDIF,GMTSDLD,GMTSDT
|
---|
| 29 | N GMTSHDR,GMTSI,GMTSL,GMTSLBL,GMTSLEN,GMTSLIM,GMTSNEW,GMTSO,GMTSOBJ
|
---|
| 30 | N GMTSOBN,GMTSPER,GMTSPRO,GMTSPX1,GMTSPX2,GMTSQ,GMTSR,GMTSRDT,GMTSRHD
|
---|
| 31 | N GMTST,GMTSTD,GMTSTIM,GMTSTYP,GMTSUNIT,GMTSUNT,GMTSV,GMTSVER,GMTSX
|
---|
| 32 | N IOINHI,IOINORM,NORM,OBJ,D,D0,D1,DI,DILN,X,Y
|
---|
| 33 | S DIC("S")="I +Y<50000000!(+Y>59999999)" K:+($G(GMTSDEV))=5000 DIC("S")
|
---|
| 34 | D OBJ^GMTSOBA
|
---|
| 35 | Q
|
---|
| 36 | ;
|
---|
| 37 | CRE(NAME) ; Create/Modify Health Summary Object named 'NAME'
|
---|
| 38 | ;
|
---|
| 39 | ; Input NAME Name of Object to Create or Edit
|
---|
| 40 | ; Output Internal Entry Number of Object file if
|
---|
| 41 | ; found or created
|
---|
| 42 | ;
|
---|
| 43 | N X,BOLD,DA,DFN,DIC,DIE,DIR,DIROUT,DLAYGO,DR,DTOUT,DUOUT,GMP,GMTS
|
---|
| 44 | N GMTSBLK,GMTSCHD,GMTSCON,GMTSDEC,GMTSDEF,GMTSDIF,GMTSDLD,GMTSDT
|
---|
| 45 | N GMTSHDR,GMTSI,GMTSL,GMTSLBL,GMTSLEN,GMTSLIM,GMTSNAM,GMTSNEW,GMTSO
|
---|
| 46 | N GMTSOBJ,GMTSOBN,GMTSPER,GMTSPRO,GMTSPX1,GMTSPX2,GMTSQ,GMTSR,GMTSRDT
|
---|
| 47 | N GMTSRHD,GMTST,GMTSTD,GMTSTIM,GMTSTYP,GMTSUNIT,GMTSUNT,GMTSV,GMTSVER
|
---|
| 48 | N GMTSX,IOINHI,IOINORM,NORM,OBJ,D,D0,D1,DI,DILN,Y S GMTSNAM=$G(NAME)
|
---|
| 49 | S:'$L(GMTSNAM) GMTSNAM=$$NAME^GMTSOBV("") Q:'$L(GMTSNAM) -1
|
---|
| 50 | S DIC("S")="I +Y<50000000!(+Y>59999999)" K:+($G(GMTSDEV))=5000 DIC("S")
|
---|
| 51 | D OBJ^GMTSOBA K DIC S DIC="^GMT(142.5,",DIC(0)="XM",X=GMTSNAM
|
---|
| 52 | D ^DIC,CRD^GMTSOBV(+Y),^DIC S X=+Y S:X'>0 X=-1
|
---|
| 53 | Q X
|
---|
| 54 | ;
|
---|
| 55 | TYPE(NAME) ; Edit Health Summary Type named NAME
|
---|
| 56 | ;
|
---|
| 57 | ; Input NAME Name of Health Summary Type to Edit
|
---|
| 58 | ; Output None
|
---|
| 59 | D ET^GMTSOBA2($G(NAME))
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | INQ ; Inquire to Health Summary Object
|
---|
| 63 | ; Option: GMTS OBJ INQ
|
---|
| 64 | ; Health Summary Object Inquiry
|
---|
| 65 | N DIC,D,D0,D1,DI,DILN,GMTSP,GMTSPL,GMTSL,GMTSEXIT
|
---|
| 66 | S U="^",DIC="^GMT(142.5,",DIC(0)="AEMQF",GMTSP=$G(IOST),GMTSPL=0,GMTSL=0,GMTSEXIT=0
|
---|
| 67 | S DIC("A")=" Select Health Summary Object: " D ^DIC K DIC("A")
|
---|
| 68 | W:$L($G(IOF)) @IOF W:+($G(Y))>0 ! D:+($G(Y))>0 SO^GMTSOBS(+Y),CONT^GMTSOBS
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | DEVDEL ; Delete Health Summary Object (Developer)
|
---|
| 72 | N GMTSDEV S GMTSDEV=5000
|
---|
| 73 | ;
|
---|
| 74 | DEL ; Delete Health Summary Object
|
---|
| 75 | ; Option: GMTS OBJ DELETE
|
---|
| 76 | ; Delete Health Summary Object
|
---|
| 77 | N D,D0,D1,DI,DILN,DIC,DIR,DIK,DA,X,Y,GMTSP,GMTSPL,GMTSL,GMTSEXIT S U="^",(DIK,DIC)="^GMT(142.5,",DIC(0)="AEMQF"
|
---|
| 78 | I $$UACT^GMTSU2(+($G(DUZ)))'>0 W !!," >> You are not authorized to delete a Health Summary Object." Q
|
---|
| 79 | S DIC("A")=" Select Health Summary Object to Delete: "
|
---|
| 80 | S DIC("S")="I (+($P($G(^GMT(142.5,+Y,0)),""^"",17))=0!(+($P($G(^GMT(142.5,+Y,0)),""^"",17))=+($G(DUZ))))&(+($P($G(^GMT(142.5,+Y,0)),""^"",20))'>0)"
|
---|
| 81 | S:'$D(GMTSDEV) DIC("S")="I +($$DEL^GMTSOBV(+Y))>0"
|
---|
| 82 | K:$D(GMTSDEV) DIC("S") I +($G(Y))>50000000,+($G(Y))<59999999,'$D(GMTSDEV) W !," Can not delete a nationally exported object." Q
|
---|
| 83 | D ^DIC I +($G(Y))>0 D
|
---|
| 84 | . N GMTSDEL,GMTSO S GMTSDEL="" W ! D SO^GMTSOBS(+Y)
|
---|
| 85 | . S DA=+Y,GMTSO=$P($G(^GMT(142.5,+Y,0)),"^",1)
|
---|
| 86 | . S:$L(GMTSO) GMTSO=" """_GMTSO_""""
|
---|
| 87 | . S DIR("B")="NO",DIR(0)="YAO",DIR("A")=" Delete Health Summary Object"_GMTSO_"? "
|
---|
| 88 | . S (DIR("?"),DIR("??"))=" Enter either 'Y' or 'N'."
|
---|
| 89 | . W ! D ^DIR I +Y>0 D ^DIK
|
---|
| 90 | . I '$D(^GMT(142.5,+DA,0)) W !," <deleted>",!
|
---|
| 91 | Q
|
---|
| 92 | ;
|
---|
| 93 | TEST ; Test Health Summary Object
|
---|
| 94 | ; Option: GMTS OBJ TEST
|
---|
| 95 | ; Test a Health Summary Object
|
---|
| 96 | N BOLD,D,D0,D1,DI,DILN,DA,DFN,DIC,DIE,DIR,DIROUT,DLAYGO,DR,DTOUT
|
---|
| 97 | N DUOUT,GMP,GMTS,GMTSBLK,GMTSCHD,GMTSCON,GMTSDEC,GMTSDEF,GMTSDIF
|
---|
| 98 | N GMTSDLD,GMTSDT,GMTSHDR,GMTSI,GMTSL,GMTSLBL,GMTSLEN,GMTSLIM,GMTSNEW
|
---|
| 99 | N GMTSO,GMTSOBJ,GMTSOBN,GMTSPER,GMTSPRO,GMTSPX1,GMTSPX2,GMTSQ,GMTSR
|
---|
| 100 | N GMTSRDT,GMTSRHD,GMTST,GMTSTD,GMTSTIM,GMTSTYP,GMTSUNIT,GMTSUNT
|
---|
| 101 | N GMTSV,GMTSVER,GMTSX,IOINHI,IOINORM,NORM,OBJ,X,Y
|
---|
| 102 | D PAT^GMTSOBV I +($G(DFN))'>0 W !!," No Patient Selected" Q
|
---|
| 103 | S GMTSL=$G(IOSL) N IOSL S IOSL=99999999
|
---|
| 104 | S DIC="^GMT(142.5,",DIC("A")=" Select HEALTH SUMMARY OBJECT to test: ",U="^"
|
---|
| 105 | S DIC(0)="AEMQ" K DLAYGO D ^DIC S GMTSOBJ=+($G(Y))
|
---|
| 106 | I +GMTSOBJ'>0 W !!," No Health Summary Object Selected" Q
|
---|
| 107 | K ^TMP("GMTSOBJ",$J,DFN) D GET(DFN,GMTSOBJ),DEV^GMTSOBS
|
---|
| 108 | Q
|
---|
| 109 | ;
|
---|
| 110 | EXP ; Export a Health Summary Object
|
---|
| 111 | D EN^GMTSOBE
|
---|
| 112 | Q
|
---|
| 113 | ;
|
---|
| 114 | INS ; Install Imported Health Summary Object
|
---|
| 115 | D EN^GMTSOBI
|
---|
| 116 | Q
|
---|
| 117 | ;
|
---|
| 118 | GET(DFN,OBJ) ; Get Health Summary Object
|
---|
| 119 | ;
|
---|
| 120 | ; Input DFN IEN for Patient (#2)
|
---|
| 121 | ; OBJ IEN for Health Summary Object (#142.5)
|
---|
| 122 | ;
|
---|
| 123 | ; Output Global array of Health Summary data
|
---|
| 124 | ;
|
---|
| 125 | ; ^TMP("GMTSOBJ",$J,DFN,#,0)
|
---|
| 126 | ;
|
---|
| 127 | K ^TMP("GMTSOBJ",$J,DFN) D ARY(DFN,OBJ,$NA(^TMP("GMTSOBJ",$J,DFN)))
|
---|
| 128 | Q
|
---|
| 129 | ;
|
---|
| 130 | TIU(DFN,OBJ) ; Get Health Summary Object (TIU)
|
---|
| 131 | ;
|
---|
| 132 | ; Input DFN IEN for Patient (#2)
|
---|
| 133 | ; OBJ IEN for Health Summary Object (#142.5)
|
---|
| 134 | ;
|
---|
| 135 | ; Output Global array of Health Summary data
|
---|
| 136 | ;
|
---|
| 137 | ; ^TMP("TIUHSOBJ",$J,"FGBL",0)
|
---|
| 138 | ; ^TMP("TIUHSOBJ",$J,"FGBL",#,0)
|
---|
| 139 | ;
|
---|
| 140 | N ERRMSG,HSTYPE
|
---|
| 141 | S HSTYPE=$P($G(^GMT(142.5,OBJ,0)),U,3)
|
---|
| 142 | I $G(HSTYPE)="" Q "No Health Summary Report Found"
|
---|
| 143 | I $D(^GMT(142,HSTYPE,1))'>0 D Q ERRMSG
|
---|
| 144 | . S ERRMSG="There are no components in the Health Summary Type: "_$P($G(^GMT(142,HSTYPE,0)),U)
|
---|
| 145 | K ^TMP("TIUHSOBJ",$J) D ARY(DFN,OBJ,$NA(^TMP("TIUHSOBJ",$J,"FGBL")))
|
---|
| 146 | Q:+($G(^TMP("TIUHSOBJ",$J,"FGBL",0)))>0 "~@"_$NA(^TMP("TIUHSOBJ",$J,"FGBL"))
|
---|
| 147 | Q "No Health Summary Report Found"
|
---|
| 148 | ;
|
---|
| 149 | ARY(DFN,OBJ,ROOT) ; Build Array ROOT
|
---|
| 150 | ;
|
---|
| 151 | ; Input DFN IEN for Patient (#2)
|
---|
| 152 | ; OBJ IEN for Health Summary Object (#142.5)
|
---|
| 153 | ; ROOT Closed root (global or local array)
|
---|
| 154 | ;
|
---|
| 155 | ; Output Array of Health Summary data in ROOT
|
---|
| 156 | ;
|
---|
| 157 | N GMTSBLK,GMTSFILE,GMTSHFN,GMTSNC,GMTSNCT,GMTSND,GMTSNDT,GMTSNN,GMTSIOM
|
---|
| 158 | N GMTSPATH,GMTSPRE,GMTSRT,GMTSRTO,GMTSRTC,GMTSRNN,GMTSRNC,GMTS0,POP,X,Y
|
---|
| 159 | Q:$G(^GMT(142.5,+($G(OBJ)),0))="" S GMTSRT=$G(ROOT)
|
---|
| 160 | Q:'$L(GMTSRT) Q:$E(GMTSRT,1)'="^"&($E(GMTSRT,1)'?1U)
|
---|
| 161 | S GMTSRTO=$$OREF^DILF(GMTSRT),GMTSRTC=$$CREF^DILF(GMTSRT)
|
---|
| 162 | Q:'$L(GMTSRTO) Q:'$L(GMTSRTC) Q:'$L($TR(GMTSRTC,")",""))
|
---|
| 163 | Q:$E(GMTSRTO,$L(GMTSRTO))'=","&($E(GMTSRTO,$L(GMTSRTO))'="(")
|
---|
| 164 | Q:GMTSRTO'[$TR(GMTSRTC,")","") S GMTS0=GMTSRTO_"0)"
|
---|
| 165 | S GMTSPATH=$$PWD^%ZISH,GMTSFILE=$J_$TR($$NOW^XLFDT,".","")_".DAT"
|
---|
| 166 | D OPEN^%ZISH("WRITEFILE",GMTSPATH,GMTSFILE,"W"),DIS(+($G(DFN)),+($G(OBJ)))
|
---|
| 167 | D CLOSE^%ZISH("WRITEFILE") K ^TMP("GMTSOBJ",$J,"OGBL")
|
---|
| 168 | S Y=$$FTG^%ZISH(GMTSPATH,GMTSFILE,$NA(^TMP("GMTSOBJ",$J,"OGBL",1)),4)
|
---|
| 169 | S GMTSHFN(GMTSFILE)="",Y=$$DEL^%ZISH(GMTSPATH,$NA(GMTSHFN))
|
---|
| 170 | S (GMTSBLK,GMTSNCT,GMTSPRE)=0 S GMTSNN="^TMP(""GMTSOBJ"","_$J_",""OGBL"")"
|
---|
| 171 | S GMTSNC="^TMP(""GMTSOBJ"","_$J_",""OGBL"","
|
---|
| 172 | F S GMTSNN=$Q(@GMTSNN) Q:GMTSNN=""!(GMTSNN'[GMTSNC) D
|
---|
| 173 | . S GMTSND=@GMTSNN,GMTSNDT=$$TRIM^GMTSOBV(GMTSND)
|
---|
| 174 | . I 'GMTSBLK S:GMTSNDT="" GMTSBLK=1 Q:GMTSBLK
|
---|
| 175 | . Q:GMTSPRE&(GMTSNDT="") S GMTSNCT=GMTSNCT+1
|
---|
| 176 | . S @(GMTSRTO_GMTSNCT_",0)")=GMTSND
|
---|
| 177 | . S @GMTS0=$G(@GMTS0)+1
|
---|
| 178 | . S GMTSPRE=$S(GMTSNDT="":1,1:0)
|
---|
| 179 | K ^TMP("GMTSOBJ",$J,"OGBL")
|
---|
| 180 | Q
|
---|
| 181 | ;
|
---|
| 182 | SHOW(X) ; Show a Health Summary Object Definition
|
---|
| 183 | ;
|
---|
| 184 | ; Input X IEN for Health Summary Object (#142.5)
|
---|
| 185 | ;
|
---|
| 186 | D SO^GMTSOBS(+($G(X)))
|
---|
| 187 | Q
|
---|
| 188 | EXTRACT(X,ARY) ; Show a Health Summary Object Definition
|
---|
| 189 | ;
|
---|
| 190 | ; Input X IEN for Health Summary Object (#142.5)
|
---|
| 191 | ; Output ARY() Array of fields and values
|
---|
| 192 | ; (passed by reference)
|
---|
| 193 | ;
|
---|
| 194 | ; ARY(IEN,<field #>,"I") = Internal Value
|
---|
| 195 | ; ARY(IEN,<field #>,"E") = External Value
|
---|
| 196 | ; ARY(IEN,<field #>,"NAME") = Field Name
|
---|
| 197 | ; ARY(IEN,<field #>,"PROMT") = Mixed Case of Field Name
|
---|
| 198 | ;
|
---|
| 199 | D GET^GMTSOBS2(+($G(X)),.ARY)
|
---|
| 200 | Q
|
---|
| 201 | DEF(X,ARY) ; Extract a Health Summary Object Definition
|
---|
| 202 | ;
|
---|
| 203 | ; Input X IEN for Health Summary Object (#142.5)
|
---|
| 204 | ; Output ARY() Array of fields and values
|
---|
| 205 | ; (passed by reference)
|
---|
| 206 | ;
|
---|
| 207 | ; ARY("D",0) = # of lines in Definition
|
---|
| 208 | ; ARY("D",#) = Definition Text
|
---|
| 209 | ; ARY("E",0) = # of lines in Example
|
---|
| 210 | ; ARY("E",#) = Example Text
|
---|
| 211 | ;
|
---|
| 212 | D DEF^GMTSOBS(+($G(X)),.ARY)
|
---|
| 213 | Q
|
---|
| 214 | DIS(DFN,OBJ) ; Display Object
|
---|
| 215 | ;
|
---|
| 216 | ; Input DFN IEN for Patient (#2)
|
---|
| 217 | ; OBJ IEN for Health Summary Object (#142.5)
|
---|
| 218 | ;
|
---|
| 219 | ; Output Display of Health Summary data
|
---|
| 220 | ;
|
---|
| 221 | D DIS^GMTSOBS2(+($G(DFN)),$G(OBJ))
|
---|
| 222 | Q
|
---|
| 223 | STMP ; Show TMP
|
---|
| 224 | N GMTSNN,GMTSNC S GMTSNN="^TMP(""GMTSOBJ"","_$J_",""OGBL"")",GMTSNC="^TMP(""GMTSOBJ"","_$J_",""OGBL"","
|
---|
| 225 | F S GMTSNN=$Q(@GMTSNN) Q:GMTSNN=""!(GMTSNN'[GMTSNC) W !,GMTSNN,"=",@GMTSNN
|
---|
| 226 | Q
|
---|