1 | GMTSU ; SLC/JER,KER/NDBI - Health Summary Utilities ; 08/27/2002
|
---|
2 | ;;2.7;Health Summary;**27,28,31,35,37,43,47,56**;Oct 20, 1995
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10096 ^%ZOSF("TEST")
|
---|
6 | ; DBIA 2934 ^A7RCP (NDBI Global)
|
---|
7 | ; DBIA 10103 $$FMTE^XLFDT
|
---|
8 | ; DBIA 10103 $$FMTHL7^XLFDT
|
---|
9 | ; DBIA 10103 $$HL7TFM^XLFDT
|
---|
10 | ; DBIA 10061 OERR^VADPT
|
---|
11 | ; DBIA 10104 $$UP^XLFSTR
|
---|
12 | ; DBIA 10026 ^DIR
|
---|
13 | ; DBIA 2052 FILE^DID
|
---|
14 | ; DBIA 10022 %XY^%RCR
|
---|
15 | ; DBIA 2055 $$VFIELD^DILFD
|
---|
16 | ; DBIA 2052 $$GET1^DID
|
---|
17 | ;
|
---|
18 | PROK(X,Y) ; Routine and Patch # OK (in UCI)
|
---|
19 | N GMTS,GMTSI,GMTSO S X=$G(X),Y=$G(Y) Q:'$L(X) 0 Q:Y'=""&(+Y=0)
|
---|
20 | S Y=+Y,GMTS=$$ROK(X) Q:'GMTS 0 Q:+Y=0 1 S GMTSO=0,GMTS=$T(@("+2^"_X)),GMTS=$P($P(GMTS,"**",2),"**",1)
|
---|
21 | F GMTSI=1:1:$L(GMTS,",") S:+($P(GMTS,",",GMTSI))=Y GMTSO=1 Q:GMTSO=1
|
---|
22 | S X=GMTSO Q X
|
---|
23 | ROK(X) ; Routine OK (in UCI) (NDBI)
|
---|
24 | S X=$G(X) Q:'$L(X) 0 Q:$L(X)>8 0 X ^%ZOSF("TEST") Q:$T 1 Q 0
|
---|
25 | NDBI(X) ; National Database Integration site 1 = yes 0 = no
|
---|
26 | N R,G S X="A7RDUP" X ^%ZOSF("TEST") S R=$T,G=$S($D(^A7RCP):1,1:0),X=R+G,X=$S(X=2:1,1:0) Q X
|
---|
27 | ;
|
---|
28 | CPT(X) ; Use CPT Modifiers Needs GMTSEG Array
|
---|
29 | S X=+($G(X)) N GMTSN,GMTSC,GMTSM,GMTSA,GMTSI S GMTSN=$G(GMTSEG(X)) S GMTSC=+($P(GMTSN,"^",2)) Q:'GMTSC 0
|
---|
30 | S GMTSM=$S($P(GMTSN,"^",9)="N":0,$P(GMTSN,"^",9)="":1,1:1) Q:'GMTSM 0
|
---|
31 | S GMTSA=$S(+($$CMU(+GMTSC))>0:1,1:0) Q:'GMTSA 0
|
---|
32 | Q 1
|
---|
33 | CMU(X) ; Component Uses CPT Modifiers
|
---|
34 | N GMTSA,GMTSN,GMTSI S X=$G(X) Q:'$L(X) 0 S GMTSI=+X,GMTSA=$O(^GMT(142.1,"C",X,0)),GMTSN=$O(^GMT(142.1,"D",X,0)) S:GMTSI=0&(+GMTSA>0) GMTSI=GMTSA S:GMTSI=0&(+GMTSN>0) GMTSI=GMTSN
|
---|
35 | Q:+GMTSI=0 0 S GMTSA=$S($P($G(^GMT(142.1,+GMTSI,0)),"^",14)="Y":1,1:0) Q:'GMTSA 0
|
---|
36 | Q 1
|
---|
37 | ;
|
---|
38 | ; Dates and Time
|
---|
39 | ED(X) ; Health Summary External Date
|
---|
40 | S X=$G(X) Q:'$L(X) "" D REGDT4 Q X
|
---|
41 | EDT(X) ; Health Summary External Date and Time
|
---|
42 | S X=$G(X) Q:'$L(X) "" D REGDTM4 Q X
|
---|
43 | REGDT ; Receives X FM date and returns X in MM/DD/YY format
|
---|
44 | S X=$TR($$FMTE^XLFDT(X,"2DZ"),"@"," ") Q
|
---|
45 | REGDT4 ; Receives X FM date and returns X in MM/DD/YYYY format
|
---|
46 | S X=$TR($$FMTE^XLFDT(X,"5DZ"),"@"," ") Q
|
---|
47 | REGDTM ; Receives X FM date and returns X in MM/DD/YY TT:TT
|
---|
48 | S X=$TR($$FMTE^XLFDT(X,"2ZM"),"@"," ") Q
|
---|
49 | REGDTM4 ; Receives X FM date and returns X in MM/DD/YYYY TT:TT
|
---|
50 | S X=$TR($$FMTE^XLFDT(X,"5ZM"),"@"," ") Q
|
---|
51 | SIDT ; Receives X FM date and returns X in DD MMM YY
|
---|
52 | N MON,MM S X=$P(X,".") S:'X X="" Q:'$L(X)
|
---|
53 | S MON="JAN^FEB^MAR^APR^MAY^JUN^JUL^AUG^SEP^OCT^NOV^DEC"
|
---|
54 | S MM=$E(X,4,5),MM=$S(MM:$P(MON,U,+MM),1:"")
|
---|
55 | S X=$E(X,6,7)_" "_MM_" "_$E(X,2,3) Q
|
---|
56 | MTIM ; Convert Time from X=2890313.1304 to X=13:04
|
---|
57 | S X=$P(X,".",2) Q:'$L(X) S X=$S(X:$E(X,1,2)_$E("00",0,2-$L($E(X,1,2)))_":"_$E(X,3,4)_$E("00",0,2-$L($E(X,3,4))),1:"")
|
---|
58 | Q
|
---|
59 | ;
|
---|
60 | HF(X) ; Host File - Used to distinguish from Host Files that
|
---|
61 | ; are intended for Printers and Host Files for other
|
---|
62 | ; purposes (windows/files)
|
---|
63 | ;
|
---|
64 | ; 1 - if Device Type is HFS and not a TCP/IP Printer
|
---|
65 | ; 0 - if Device Type is not HFS or device is a Printer
|
---|
66 | ;
|
---|
67 | ; Check Device
|
---|
68 | ; Check Host File Server
|
---|
69 | Q:$G(IOT)'="HFS" 0
|
---|
70 | ; Check ORWINDEV (Post OR*3.0*85)
|
---|
71 | N GMTS85 S GMTS85=$$PROK("ORWRP",85)
|
---|
72 | Q:+($G(GMTS85))>0&(+($G(ORWINDEV))>0) 0
|
---|
73 | ; Host File for GUI Scrollable Window
|
---|
74 | Q:$E($G(ION),1,14)["OR WORKSTATION" 1
|
---|
75 | ; TCP/IP Printer
|
---|
76 | Q:$G(IO)["$PRT"!($G(IO)["PRN|") 0
|
---|
77 | ; Windows Printer
|
---|
78 | Q:$E($G(ION),1,14)["OR WINDOWS HFS" 0
|
---|
79 | ; Host Files (file or unspecifed printer)
|
---|
80 | S X=0 S:$G(ION)["HOST FILE" X=1
|
---|
81 | S:$E($G(IOST),1,5)["P-OTH" X=1
|
---|
82 | Q X
|
---|
83 | ;
|
---|
84 | FMHL7DTM ; Convert X - int date/time to HL7 CCYYMMDDHHMM-HHHH
|
---|
85 | S X=$$FMTHL7^XLFDT(+($G(X))) Q
|
---|
86 | HL7FMDTM ; Convert X - HL7 CCYYMMDDHHMM-HHHH to int date/time local
|
---|
87 | S X=$$HL7TFM^XLFDT($G(X),"L") Q
|
---|
88 | ;
|
---|
89 | DEM ; Gets Demographic Data from VADPT
|
---|
90 | ;
|
---|
91 | ; Input DFN
|
---|
92 | ;
|
---|
93 | ; Output GMTSPNM Patient Name
|
---|
94 | ; GMTSSN Social Security Number
|
---|
95 | ; GMTSDOB Date of Birth
|
---|
96 | ; SEX Sex
|
---|
97 | ; GMTSWARD Ward
|
---|
98 | ; GMTSRB Bed
|
---|
99 | ; GMTSAGE Age
|
---|
100 | ; VADM() Demographic Array
|
---|
101 | ; VAIN() Inpatient Array
|
---|
102 | ; GMTSPHDR() Report Header Array
|
---|
103 | ;
|
---|
104 | K VAHOW D OERR^VADPT S GMTSPNM=VADM(1),GMTSSN=$S($D(VA("PID")):VA("PID"),1:$P(VADM(2),"^",2))
|
---|
105 | S GMTSAGE=$S(+VADM(4)>0:+VADM(4),1:99),SEX=$P(VADM(5),"^")
|
---|
106 | S GMTSWARD=$P(VAIN(4),"^",2),GMTSRB=VAIN(5)
|
---|
107 | S X=$P(VADM(3),"^") D REGDT4 S GMTSDOB=X K VA,GMTSPHDR N DOB,LWARDRB,NMSSN,NMSSNE,WARDRB,WARDRBE,WARDRBS
|
---|
108 | S NMSSN=GMTSPNM_" "_GMTSSN,NMSSNE=$L(NMSSN)+2,WARDRB=GMTSWARD_" "_GMTSRB
|
---|
109 | S LWARDRB=$L(WARDRB),WARDRBS=40-(LWARDRB/2),WARDRBE=WARDRBS+LWARDRB
|
---|
110 | S DOB="DOB: "_GMTSDOB,GMTSPHDR("NMSSN")=NMSSN,GMTSPHDR("WARDRB")=WARDRB
|
---|
111 | S GMTSPHDR("WARDRBS")=WARDRBS,GMTSPHDR("DOB")=DOB,GMTSPHDR("DOBS")=64
|
---|
112 | I (NMSSNE'<WARDRBS)!(WARDRBE'<64) S GMTSPHDR("TWO")=1
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | NAME(X,Y,L) ; Format name
|
---|
116 | ;
|
---|
117 | ; Input
|
---|
118 | ; X Internal Entry Number of NEW PERSON file 200
|
---|
119 | ; Y Flag to specify the first name format
|
---|
120 | ; 0 for First Name Initial (only)
|
---|
121 | ; 1 for First Name
|
---|
122 | ; L Maximum Length of Name
|
---|
123 | ;
|
---|
124 | ; Output Last,First (name/initial) to specified length
|
---|
125 | ;
|
---|
126 | N RAWNM,LAST,FIRST,ALPHA,PSN,CH,IEN,FNF,LEN
|
---|
127 | S IEN=+($G(X)),FNF=+($G(Y)),LEN=+($G(L))
|
---|
128 | S RAWNM=$$UNAM^GMTSU2(+IEN) S:LEN=0 LEN=$L(RAWNM)
|
---|
129 | S RAWNM=$S($L(RAWNM):RAWNM,1:"UNKNOWN")
|
---|
130 | S LAST=$P(RAWNM,","),FIRST=$P(RAWNM,",",2),ALPHA=0
|
---|
131 | I $L(FIRST) D
|
---|
132 | . F PSN=1:1 S CH=$E(FIRST,PSN) Q:CH="" S:CH?1A ALPHA=PSN Q:ALPHA>0
|
---|
133 | S:ALPHA>0 FIRST=$E(FIRST,ALPHA,$L(FIRST))
|
---|
134 | S:'FNF FIRST=$E(FIRST,1)
|
---|
135 | S X=$S($L(FIRST):LAST_","_FIRST,1:LAST),X=$E(X,1,LEN)
|
---|
136 | Q X
|
---|
137 | GETRANGE(FROMDATE,TODATE) ; Select Date Range (from and to dates)
|
---|
138 | N DIR,X,Y,DTOUT,DIRUT S DIR(0)="DO^:DT",DIR("A")="Enter Beginning Date (MM/DD/YY)" W !
|
---|
139 | D ^DIR I $D(DIROUT)!$D(DUOUT)!$D(DTOUT)!$D(DIRUT) W ! Q
|
---|
140 | S FROMDATE=Y I +FROMDATE>0 D
|
---|
141 | . W " (",$$UP^XLFSTR($$FMTE^XLFDT(+FROMDATE,1)),")"
|
---|
142 | . N DIR,X,Y S DIR(0)="DO^::EX",DIR("A")="Enter Ending Date (MM/DD/YY)" S DIR("B")="TODAY"
|
---|
143 | . D ^DIR I $D(DIROUT)!$D(DUOUT)!$D(DTOUT)!$D(DIRUT) K FROMDATE Q
|
---|
144 | . I Y'>0 K FROMDATE Q
|
---|
145 | . S TODATE=Y Q:TODATE>FROMDATE!(TODATE=FROMDATE)
|
---|
146 | . N FRDT S FRDT=FROMDATE,FROMDATE=TODATE,TODATE=FRDT
|
---|
147 | W !
|
---|
148 | Q
|
---|
149 | ;
|
---|
150 | OED() ; Other Editor - DIC("S")
|
---|
151 | N COMP,OTHER,OWNER,OWNN,USER,AUSER,NAT S COMP=+($G(DA(1))) Q:'$D(^GMT(142,+COMP,0)) 0
|
---|
152 | S OWNER=$P($G(^GMT(142,+COMP,0)),"^",3),OWNN=$$UNAM^GMTSU2(OWNER),NAT=+($P($G(^GMT(142,+COMP,"VA")),"^",1)),USER=+($G(DUZ)),AUSER=$$UACT^GMTSU2(+USER),OTHER=+($G(X))
|
---|
153 | ; If National Component and Uneditable
|
---|
154 | W:+NAT=2 !!," Nationally exported Health Summary Type (uneditable)",! Q:+NAT=2 0
|
---|
155 | ; If OWNER is special case (national, uneditable)
|
---|
156 | W:+OWNER>0&(OWNER<1)&(NAT'=1) !!," OWNER does not allow 'OTHER EDITORS'",! Q:+OWNER>0&(OWNER<1)&(NAT'=1) 0
|
---|
157 | ; If OWNER is special case (national, editable)
|
---|
158 | Q:+OWNER>0&(OWNER<1)&(OWNER=USER)&(NAT=1) 1
|
---|
159 | ; If DUZ is inactive, or not the owner, quit
|
---|
160 | W:+AUSER=0!(+OWNER=0)!(+OWNER'=+USER) !!," Only the OWNER may assign 'OTHER EDITORS'",! Q:+AUSER=0!(+OWNER=0)!(+OWNER'=+USER) 0
|
---|
161 | ; If OTHER is inactive user, quit
|
---|
162 | S AUSER=$$UACT^GMTSU2(OTHER) W:+AUSER=0!(+OTHER'>.999999999) !!," Selected 'OTHER EDITOR' is not an active user",! Q:+AUSER=0!(+OTHER'>.999999999) 0
|
---|
163 | ; If OTHER=OWNER, quit
|
---|
164 | W:+OTHER=+OWNER !!," ",OWNN," is the OWNER",! Q:+OTHER=+OWNER 0
|
---|
165 | Q 1
|
---|
166 | ;
|
---|
167 | FCLR(X) ; File Closed Root
|
---|
168 | S X=$G(X) Q:+X=0 "" N GMTSL S GMTSL=$$FLOC(X),X=$S($E(GMTSL,$L(GMTSL))=",":$P(GMTSL,",")_")",1:$E(GMTSL,1,$L(GMTSL)-1)) Q:'$L(X) "" S:'$D(@X) X=""
|
---|
169 | Q X
|
---|
170 | FSFN(X) ; File/Sub-File Name
|
---|
171 | N FI,FR,%X,%Y S FI=$G(X) Q:+X=0 "" N DIERR,GMTSN,GMTSE D FILE^DID(+FI,"N","NAME","GMTSN","GMTSE")
|
---|
172 | S X="" S:'$D(DIERR) X=$$UP^XLFSTR($G(GMTSN("NAME"))) Q:$L(X) X
|
---|
173 | K FR S %X="^DD("_+($G(FI))_",0,""NM"",",%Y="FR(" D %XY^%RCR S X=$$UP^XLFSTR($O(FR(""))) S:+X>0 X="" S:$L(X) X=X_" SUB-FILE" Q X
|
---|
174 | FNAM(X) ; File Name
|
---|
175 | S X=$G(X) Q:+X=0 "" N DIERR,GMTSN,GMTSE D FILE^DID(+X,"N","NAME","GMTSN","GMTSE") S X="" S:'$D(DIERR) X=$G(GMTSN("NAME")) Q X
|
---|
176 | FLOC(X) ; File location
|
---|
177 | S X=$G(X) Q:+X=0 "" N DIERR,GMTSN,GMTSE D FILE^DID(+X,"N","GLOBAL NAME","GMTSN","GMTSE") S X="" S:'$D(DIERR) X=$G(GMTSN("GLOBAL NAME")) Q X
|
---|
178 | FHDD(X) ; File has a DD?
|
---|
179 | S X=+($G(X)) Q:+($G(X))=0 0 S X=$$VFIELD^DILFD(X,.01),X=$S($L(X):1,1:0) Q X
|
---|
180 | FLDN(X,Y) ; Field Name
|
---|
181 | Q:+($G(X))=0!(+($G(Y))=0) "" S X=$$GET1^DID(+($G(X)),+($G(Y)),,"LABEL") Q X
|
---|
182 | FLDS(X,Y) ; Field Set of Codes
|
---|
183 | Q:+($G(X))=0!(+($G(Y))=0) "" Q:$$GET1^DID(+($G(X)),+($G(Y)),,"TYPE")'="SET" "" S X=$$GET1^DID(+($G(X)),+($G(Y)),,"POINTER") Q X
|
---|
184 | FLDI(X,Y) ; Field Input Transform
|
---|
185 | Q:+($G(X))=0!(+($G(Y))=0) "" S X=$$GET1^DID(+($G(X)),+($G(Y)),,"INPUT TRANSFORM") Q X
|
---|