1 | VSIT ;ISD/MRL,RJP - Visit Tracking ;5/9/02 4:31pm
|
---|
2 | ;;1.0;PCE PATIENT CARE ENCOUNTER;**76,111,118,164**;Aug 12, 1996
|
---|
3 | ; Patch PX*1*76 changes the 2nd line of all VSIT* routines to reflect
|
---|
4 | ; the incorporation of the module into PCE. For historical reference,
|
---|
5 | ; the old (VISIT TRACKING) 2nd line is included below to reference VSIT
|
---|
6 | ; patches.
|
---|
7 | ;
|
---|
8 | ;;2.0;VISIT TRACKING;**1**;Aug 12, 1996
|
---|
9 | ;
|
---|
10 | ; - pass VSIT = <visit date [and time] in FM format>
|
---|
11 | ; DFN = <patient file pointer>
|
---|
12 | ; [VSIT(0)] = <functional parameters>
|
---|
13 | ; [VSIT("xxx")] = <used in match logic if VSIT(0)["M">
|
---|
14 | ; - rtns VSIT("IEN") = <visit record # in format as Y w/ ^DIC>
|
---|
15 | ; VSIT(##,"XXX") = visit values passed by mnemonics
|
---|
16 | ; If VSIT("IEN") = -1 Error in creation/lookup.
|
---|
17 | ; If Vsit("IEN") = -2 Package is turned off or not defined in the
|
---|
18 | ; Visit Tracking Parameters file.
|
---|
19 | S VSIT("IEN")=$$GET($G(VSIT),$G(DFN),$G(VSIT(0)),.VSIT)
|
---|
20 | EXIT ;
|
---|
21 | Q
|
---|
22 | ;
|
---|
23 | GET(VDT,DFN,PRAM,VSIT) ; find or create a visit
|
---|
24 | ;
|
---|
25 | ; - pass {VDT/VSIT("VDT")} = <visit date [and time] in FM format>
|
---|
26 | ; {DFN/VSIT("PAT")} = <patient file pointer>
|
---|
27 | ; [PRAM/VSIT(0)] = <functional parameters>
|
---|
28 | ; [VSIT("xxx")] = <array w/ mnemonic subscript>
|
---|
29 | ; <used in match logic if VISIT(O)["M">
|
---|
30 | ; <for SVC, TYP, INS, DSS, ELG , LOC>
|
---|
31 | ; - rtns = <visit record # in format as Y w/ ^DIC>
|
---|
32 | I $G(VSITPKG)]"" S VSIT("PKG")=VSITPKG
|
---|
33 | E S (VSITPKG,VSIT("PKG"))=$G(VSIT("PKG"))
|
---|
34 | N VSITPKGP
|
---|
35 | S VSITPKGP=$$GETPKG^VSIT0($G(VSITPKG))
|
---|
36 | ;Check Inactive Flag
|
---|
37 | I VSITPKGP<1 S VSIT("IEN")=-2 G DONE ;Need to update Visit Tracking Parameters File
|
---|
38 | I $$ACTIVE^VSIT0(VSITPKGP)'=1 S VSIT("IEN")=-2 G DONE ;Quit if package is not active
|
---|
39 | ;Check that we now the site part of the Encounter ID
|
---|
40 | I $P($G(^DIC(150.9,1,4)),"^",2)<1 S VSIT("IEN")=-1 G DONE
|
---|
41 | ;
|
---|
42 | K VSIT("IEN"),^TMP("VSITDD",$J),^TMP($J,"VSIT-ERROR")
|
---|
43 | S:$G(VDT)]"" VSIT("VDT")=VDT
|
---|
44 | S:$G(DFN) VSIT("PAT")=+DFN
|
---|
45 | S:$G(PRAM)]"" VSIT(0)=PRAM
|
---|
46 | ;See if the old CLN nodes needs moved into the DSS node.
|
---|
47 | I '($D(VSIT("DSS"))#2),$D(VSIT("CLN"))#2 S VSIT("DSS")=VSIT("CLN")
|
---|
48 | ;
|
---|
49 | D FLD^VSITFLD
|
---|
50 | ;Set all of the VSIT nodes with $GET
|
---|
51 | D SETALL^VSITCK
|
---|
52 | ;
|
---|
53 | ;Inpatient movement
|
---|
54 | N VSITIPM S VSITIPM=+$$IP^VSITCK1(+VSIT("VDT"),+VSIT("PAT"))
|
---|
55 | ;Do the defaulting of the fields that need to be defaulted be for lookup
|
---|
56 | I $$REQUIRED^VSITDEF S VSIT("IEN")=-1 G DONE
|
---|
57 | ;
|
---|
58 | D:'$D(DT) DT^DICRW
|
---|
59 | ;
|
---|
60 | ;If Force new visit, make the visit and exit
|
---|
61 | I VSIT(0)["F" D G QUIT
|
---|
62 | . D DEFAULTS^VSITDEF
|
---|
63 | . D ^VSITPUT
|
---|
64 | ;
|
---|
65 | ;If not forcing new visit try to look up the visit
|
---|
66 | D LST^VSITGET("","","",.VSIT,.VSITGET)
|
---|
67 | I $$SWSTAT^IBBAPI(),+$G(VSITGET)=1 D ;PX*1.0*164
|
---|
68 | . N ACT
|
---|
69 | . I $G(VSIT("ACT"))']0 S VSIT("ACT")=$P($G(^AUPNVSIT(+VSITGET(1),0)),"^",26) Q
|
---|
70 | . I $G(VSIT("ACT"))]0 S ACT=VSIT("ACT") K VSIT S VSIT("IEN")=+$P(VSITGET(1),"^"),VSIT("ACT")=ACT D UPD^VSIT ;PX*1.0*164
|
---|
71 | ;
|
---|
72 | I +$G(VSITGET)=0,VSIT(0)["N" D G QUIT
|
---|
73 | . D DEFAULTS^VSITDEF
|
---|
74 | . D ^VSITPUT
|
---|
75 | I +$G(VSITGET)=1 S VSIT("IEN")=$P(VSITGET(1),"|")_"^"_$P($P(VSITGET(1),"^"),"|",2) G QUIT
|
---|
76 | I +$G(VSITGET)>1,VSIT(0)["I" S Y=$$VSIT^VSITASK(VSIT("PAT"),.VSITGET) S:'+Y Y=1 S VSIT("IEN")=$P(VSITGET(+Y),"|")_"^"_$P($P(VSITGET(+Y),"^"),"|",2) G QUIT
|
---|
77 | I +$G(VSITGET)>1,VSIT(0)'["I" S VSIT("IEN")=$P(VSITGET(1),"|")_"^"_$P($P(VSITGET(1),"^"),"|",2) G QUIT
|
---|
78 | S VSIT("IEN")=-1
|
---|
79 | ;
|
---|
80 | QUIT ; - end of job
|
---|
81 | ;
|
---|
82 | ; set vsit api
|
---|
83 | I +$G(VSIT("IEN"))=0 S VSIT("IEN")=-1
|
---|
84 | D:VSIT("IEN")>0 ALL^VSITVAR(+VSIT("IEN"),"B",1)
|
---|
85 | ;
|
---|
86 | DONE I $D(^TMP($J,"VSIT-ERROR")),$G(VSIT("IEN"))'>0,VSIT(0)["N"!(VSIT(0)["F") D SND^VSITBUL
|
---|
87 | K VSITGET
|
---|
88 | K ^TMP("VSITDD",$J)
|
---|
89 | Q VSIT("IEN")
|
---|
90 | ;
|
---|
91 | ADD ; - add to dependency count
|
---|
92 | ; called via cross references on pointer files
|
---|
93 | D ADD^AUPNVSIT
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | SUB ; - subtract from dependency count
|
---|
97 | ; called via cross references on pointer files
|
---|
98 | ;
|
---|
99 | D SUB^AUPNVSIT
|
---|
100 | Q
|
---|
101 | ;
|
---|
102 | UPD ; Update Visit File
|
---|
103 | Q:$G(VSIT("IEN"))<1
|
---|
104 | Q:'$D(^AUPNVSIT(VSIT("IEN"),0))
|
---|
105 | N DR,DIE,DA,VSITDR,VSITDATA,VSITFLD
|
---|
106 | N %,%H,%I,X
|
---|
107 | D NOW^%DTC
|
---|
108 | S VSIT("MDT")=%
|
---|
109 | D FLD^VSITFLD
|
---|
110 | S DIE=9000010,DA=VSIT("IEN")
|
---|
111 | S (VSITDR,DR)=""
|
---|
112 | L +^AUPNVSIT(+VSIT("IEN")):10
|
---|
113 | F S VSITDR=$O(VSIT(VSITDR)) Q:VSITDR="" I $G(^TMP("VSITDD",$J,VSITDR))'="" D
|
---|
114 | .S VSITFLD=$P($G(^TMP("VSITDD",$J,VSITDR)),";",2) ;Field
|
---|
115 | .S VSITDATA=VSIT(VSITDR) ;Data
|
---|
116 | .;S DR=""_VSITFLD_"////"_VSITDATA_"" D ^DIE S DR="" ;Calls DIE each fld
|
---|
117 | .I $L(DR)<245 S DR=$P($G(^TMP("VSITDD",$J,VSITDR)),";",2)_"////"_VSIT(VSITDR)_";"_DR
|
---|
118 | .I $L(DR)>244 S DR=$E(DR,1,$L(DR)-1) D ^DIE S DR=$P($G(^TMP("VSITDD",$J,VSITDR)),";",2)_"////"_VSIT(VSITDR)_";"
|
---|
119 | I $G(DR)["////" S DR=$E(DR,1,$L(DR)-1) D ^DIE
|
---|
120 | ;
|
---|
121 | ;PX*1*111 - Update NTR file for Head & Neck
|
---|
122 | D
|
---|
123 | . N HNCARR,HNCERR
|
---|
124 | . K HNCARR,HNCERR
|
---|
125 | . D GETS^DIQ(9000010,+VSIT("IEN"),80006,"I","HNCARR","HNCERR")
|
---|
126 | . I $D(HNCERR) Q ;No data found
|
---|
127 | . I $G(HNCARR(9000010,(+VSIT("IEN")_","),80006,"I"))'=1 Q
|
---|
128 | . ;Answer is 'Y' to HNC question
|
---|
129 | . N SDELG0,DGARR,PCEXDFN
|
---|
130 | . S PCEXDFN=$G(DFN)
|
---|
131 | . I PCEXDFN="" S PCEXDFN=$G(PXAA("PATIENT"))
|
---|
132 | . I PCEXDFN="" Q
|
---|
133 | . S SDELG0=$$GETCUR^DGNTAPI(PCEXDFN,"DGARR")
|
---|
134 | . S SDELG0=+$G(DGARR("STAT"))
|
---|
135 | . I SDELG0'=3 Q ;NTR File does not require editing
|
---|
136 | . S SDELG0=$$FILEHNC^DGNTAPI1(PCEXDFN)
|
---|
137 | ;
|
---|
138 | L -^AUPNVSIT(+VSIT("IEN"))
|
---|
139 | K ^TMP("VSITDD",$J)
|
---|
140 | Q
|
---|
141 | PKG2IEN(PKG) ;Pass in package name space and
|
---|
142 | ; returns pointer to the package in the Package file #9.4
|
---|
143 | Q $$PKG2IEN^VSIT0($G(PKG))
|
---|
144 | ;
|
---|
145 | PKG(PKG,VALUE) ;-Entry point to add package to multiple in tracking parameters
|
---|
146 | ;-PKG=Package Name Space
|
---|
147 | ;-VALUE=Value on the ON/OFF flag under package multiple
|
---|
148 | ;--1=ON 0=OFF
|
---|
149 | Q $$PKG^VSIT0($G(PKG),$G(VALUE))
|
---|
150 | ;
|
---|
151 | PKGON(PKG) ; -- Returns the active flag for the package
|
---|
152 | ; 1 the package can create visits
|
---|
153 | ; 0 the package cannot create visits
|
---|
154 | ; -1 called wrong or could not find package in VT parameters file
|
---|
155 | Q $$PKGON^VSIT0($G(PKG))
|
---|
156 | ;
|
---|
157 | IEN2VID(IEN) ; -- Call with Visit IEN and returns the Visit ID
|
---|
158 | Q:'($D(^AUPNVSIT(+IEN,150))#2) -1
|
---|
159 | Q $P(^AUPNVSIT(IEN,150),"^",1)
|
---|
160 | ;
|
---|
161 | VID2IEN(VID) ; -- Call with Visit's ID and returns the Visit IEN
|
---|
162 | N IEN
|
---|
163 | S IEN=$O(^AUPNVSIT("VID",VID,0))
|
---|
164 | Q $S(IEN]"":IEN,1:-1)
|
---|
165 | ;
|
---|
166 | LOOKUP(IEN,FMT,WITHIEN) ; -- Lookup a visit and return all of its information
|
---|
167 | ;DBIA #: 1906
|
---|
168 | ;Parameters:
|
---|
169 | ; IEN is the IEN for the Visit OR the Visit's ID
|
---|
170 | ; FMT is the format that you want the output where
|
---|
171 | ; I ::= internal format
|
---|
172 | ; E ::= external format
|
---|
173 | ; B ::= both internal and external format
|
---|
174 | ; B is the default if FMT is anything other than "I" or "E"
|
---|
175 | ; WITHIEN is 0 if you do not want the IEN of the VSIT( as the first
|
---|
176 | ; subscript and 1 if you do. "1" is the default.
|
---|
177 | ;
|
---|
178 | ;Return: -1 if IEN was not a valid IEN or Visit ID
|
---|
179 | ; otherwise returns IEN
|
---|
180 | ; VSIT( an array VSIT(Visit IEN,field) or VSIT(field) depending
|
---|
181 | ; on the value of WITHIEN. The array is all of the fields
|
---|
182 | ; in the visit file. If B(oth) internal and external format
|
---|
183 | ; are returned the format is: internal^external.
|
---|
184 | ; If I(nternal) format is requested only the internal part
|
---|
185 | ; is returned.
|
---|
186 | ; If E(xternal) format is requested the format is: ^external
|
---|
187 | ; External values, if requested, are always returned in the
|
---|
188 | ; second pieces of the array elements.
|
---|
189 | ;
|
---|
190 | Q:$G(IEN)']"" -1
|
---|
191 | S:+IEN'=IEN IEN=$$VID2IEN(IEN) ;PX*1.0*118
|
---|
192 | Q:'($D(^AUPNVSIT(+IEN,0))#2) -1
|
---|
193 | S FMT=$G(FMT)
|
---|
194 | S FMT=$S(FMT["B":"B",FMT["I":"I",FMT["E":"E",1:"B")
|
---|
195 | S WITHIEN=$S($G(WITHIEN)=0:0,1:1)
|
---|
196 | D ALL^VSITVAR(IEN,FMT,WITHIEN)
|
---|
197 | Q IEN
|
---|
198 | ;
|
---|
199 | SELECTED(DFN,SDT,EDT,HOSLOC,ENCTYPE,NENCTYPE,SERVCAT,NSERVCAT,LASTN) ;
|
---|
200 | ; -- Returns selected visits depending on screens passed in.
|
---|
201 | D VSITAPI^VSITOE($G(DFN),$G(SDT),$G(EDT),$G(HOSLOC),$G(ENCTYPE),$G(NENCTYPE),$G(SERVCAT),$G(NSERVCAT),$G(LASTN))
|
---|
202 | Q
|
---|
203 | ;
|
---|
204 | HISTORIC(IEN) ; -- Returns 1 if it is an Historical visit ("E" in #.07)
|
---|
205 | ; 0 if it is not an Historical visit.
|
---|
206 | ; -1 if the IEN is bad
|
---|
207 | Q $S('($D(^AUPNVSIT(IEN,0))#2):-1,1:$P($G(^AUPNVSIT(IEN,0)),"^",7)="E")
|
---|
208 | ;
|
---|
209 | MODIFIED(IEN) ;Sets the Date Last Modified (.13) field to NOW
|
---|
210 | ;
|
---|
211 | N VSIT
|
---|
212 | S VSIT("IEN")=IEN
|
---|
213 | D UPD
|
---|
214 | Q
|
---|