1 | SCENI0 ;ALB/SCK - INCOMPLETE ENCOUNTER MGMT MAIN LM DISPLAY ; 07-MAY-1997
|
---|
2 | ;;5.3;Scheduling;**66**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | EN ; Entry point for IEMM LM display
|
---|
5 | ; Variables
|
---|
6 | ; VAUTC,VAUTD - Clinic and Division o/m/a arrays
|
---|
7 | ; SDENTYP - Search type, P:patient, C:Clinic, E:Error Code
|
---|
8 | ; SDCLN - Clinic from selection lookup
|
---|
9 | ; SDDT - Date range for search, Begin^End format
|
---|
10 | ; SDY - Local variable used in selection criteria
|
---|
11 | ; SDEVAL - Error code value
|
---|
12 | ; SDFN - Patient DFN for local use
|
---|
13 | ; SDIEMM - Flag for IEMM
|
---|
14 | ;
|
---|
15 | N SDENTYP,DFN,SDCLN,SDDT,VAUTC,VAUTD,SDY,SDEVAL,SDFN,SDIEMM
|
---|
16 | K X,SDB,XQORNOD,DA,DR,DIE,%B
|
---|
17 | ;
|
---|
18 | AGN Q:'$$ENTRY^SCUTIE2(.SDY)
|
---|
19 | I $G(SDENTYP)']"" G AGN
|
---|
20 | ;
|
---|
21 | I SDENTYP["P" D
|
---|
22 | . S SDFN=+SDY
|
---|
23 | . S VAUTC=1
|
---|
24 | . S X=$P($G(^DG(43,1,"SCLR")),U,12)
|
---|
25 | . S SDDT=$$FMADD^XLFDT($$DT^XLFDT,-X)_U_$$DT^XLFDT
|
---|
26 | ;
|
---|
27 | I SDENTYP["C" D G:'$$ASKDT^SCENI01(.SDDT) ENQ
|
---|
28 | . S SDCLN=+SDY
|
---|
29 | . S VAUTC=0,VAUTC(+SDY)=$P(^SC(+SDY,0),U)
|
---|
30 | ;
|
---|
31 | I SDENTYP["E" D G:'$$ASKDT^SCENI01(.SDDT) ENQ
|
---|
32 | . S VAUTC=1
|
---|
33 | . S SDEVAL=+SDY
|
---|
34 | ;
|
---|
35 | S VAUTD=1
|
---|
36 | EN1 D WAIT^DICD
|
---|
37 | I $G(FLG1) K XQORS,VALMEVL
|
---|
38 | S SDIEMM=1
|
---|
39 | D EN^VALM("SCENI INCOMPLETE ENC MGT")
|
---|
40 | ENQ Q
|
---|
41 | ;
|
---|
42 | ENP(SDXPTR) ; Entry point for Data validation, Patient Predefined
|
---|
43 | ; This entry point will jump to the second LM screen and display any
|
---|
44 | ; errors for the encounter.
|
---|
45 | ;
|
---|
46 | ; Input
|
---|
47 | ; SDXMT - Pointer to transmission file, 409.73
|
---|
48 | ;
|
---|
49 | ; Variables
|
---|
50 | ; FLG1 - Flag for patient defined entry point
|
---|
51 | ;
|
---|
52 | N FLG1,SDIEMM
|
---|
53 | S SDIEMM=1
|
---|
54 | ;S VALMBCK="R"
|
---|
55 | S FLG1=1
|
---|
56 | D EN^SCENIA0
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | HDR ; -- header code
|
---|
60 | N SDCLN
|
---|
61 | ;
|
---|
62 | S VALMHDR(1)="Date Range: "_$$FDATE^VALM1($P(SDDT,U))_" thru "_$$FDATE^VALM1($P(SDDT,U,2))
|
---|
63 | ;
|
---|
64 | I SDENTYP["P" D
|
---|
65 | . S VALMHDR(2)=" Patient: "_$P(^DPT(SDFN,0),U)
|
---|
66 | I SDENTYP["C" D
|
---|
67 | . S SDCLN=$O(VAUTC(0))
|
---|
68 | . S VALMHDR(2)=" Clinic: "_$E(VAUTC(SDCLN),1,25)
|
---|
69 | I SDENTYP["E" D
|
---|
70 | . S VALMHDR(2)="Error Code: "_$E($P(^SD(409.76,SDEVAL,1),U),1,60)
|
---|
71 | S VALMSG="'*' Deleted Encounter Enter ?? for more actions"
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | INIT ; -- init variables and list array
|
---|
75 | N SDCNT
|
---|
76 | ;
|
---|
77 | K XQORNOD
|
---|
78 | K ^TMP("SCENI",$J) ; Sorting global
|
---|
79 | K ^TMP("SCEN LM",$J) ; LM Display global
|
---|
80 | K ^TMP("SCENIDX",$J) ; Index for expand encounter
|
---|
81 | D CLEAN^VALM10
|
---|
82 | ;
|
---|
83 | S BL="",$P(BL," ",30)=""
|
---|
84 | S X=VALMDDF("INDEX"),IC=$P(X,U,2),IW=$P(X,U,3)
|
---|
85 | S X=VALMDDF("ENCOUNTER"),EC=$P(X,U,2),EW=$P(X,U,3)
|
---|
86 | S X=VALMDDF("SSN"),SC=$P(X,U,2),SW=$P(X,U,3)
|
---|
87 | S X=VALMDDF("PATIENT"),PC=$P(X,U,2),PW=$P(X,U,3)
|
---|
88 | S X=VALMDDF("DELETED"),DC=$P(X,U,2),DW=$P(X,U,3)
|
---|
89 | ;
|
---|
90 | D BLD,BLDLM
|
---|
91 | I '$D(^TMP("SCENI",$J)) D
|
---|
92 | . S (SDCNT,VALMCNT)=0
|
---|
93 | . D SET(" "),SET(" No Incomplete Encounters found.")
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | BLD ; Order through the Xmited OE Error file on encounter Xref
|
---|
97 | ; Variables
|
---|
98 | ; SDOEDT - Encounter date
|
---|
99 | ; SDOE - Pointer to #409.68
|
---|
100 | ; SDE - End date of date range
|
---|
101 | ; SDCNT - Count of entries
|
---|
102 | ; SDXMT - Pointer to #409.73
|
---|
103 | ; SDXER - Pointer to #409.75
|
---|
104 | ;
|
---|
105 | N SDOEDT,SDOE,SDE,SDCNT,SDXMT,SDXER
|
---|
106 | ;
|
---|
107 | Q:'$D(SDDT)
|
---|
108 | S SDOEDT=$P(SDDT,U)-.1,SDE=$P(SDDT,U,2)+.9,(SDCNT,VALMCNT)=0
|
---|
109 | I SDENTYP["P" D PLKUP(SDFN) Q
|
---|
110 | I SDENTYP["C" D CLKUP($O(VAUTC(0))) Q
|
---|
111 | ;the remaining is for a error code look up
|
---|
112 | F S SDOEDT=$O(^SD(409.75,"AEDT",SDOEDT)) Q:'SDOEDT!(SDOEDT>SDE) D
|
---|
113 | . S SDXMT=0 F S SDXMT=$O(^SD(409.75,"AEDT",SDOEDT,SDXMT)) Q:'SDXMT D
|
---|
114 | .. S SDXER=0 F S SDXER=$O(^SD(409.75,"AEDT",SDOEDT,SDXMT,SDXER)) Q:'SDXER I $D(^SD(409.75,SDXER,0)) D:$P(^SD(409.75,SDXER,0),U,2)=SDEVAL BLDA(SDXMT,SDOEDT)
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | BLDA(SDXMT,SDOEDT) ; Build list entry, and retreive encounter information
|
---|
118 | ; Input
|
---|
119 | ; SDXMT - Pointer to $409.73
|
---|
120 | ; SDOEDT - Date of encounter
|
---|
121 | ;
|
---|
122 | ; Out
|
---|
123 | ; ^TMP("SCEN LM",$J,Patient Name,Encounter Date,Xmt Ptr)=DFN^BID^Delete marker ('*')
|
---|
124 | ;
|
---|
125 | N DFN
|
---|
126 | ;
|
---|
127 | Q:'SDOEDT
|
---|
128 | S SDCNT=SDCNT+1,SDDEL=""
|
---|
129 | S SCSTAT=$$OPENC^SCUTIE1(SDXMT,"SCINF")
|
---|
130 | ;
|
---|
131 | S:SCSTAT=1 SDDEL="*"
|
---|
132 | I SCSTAT<0 Q
|
---|
133 | ;
|
---|
134 | S SDNAME=$$LOWER^VALM1($P(^DPT(SCINF("DFN"),0),U))
|
---|
135 | S DFN=SCINF("DFN")
|
---|
136 | D PID^VADPT6
|
---|
137 | S ^TMP("SCEN LM",$J,SDNAME,SDOEDT,SDXMT)=SCINF("DFN")_U_VA("BID")_U_$G(SDDEL)
|
---|
138 | K SDDEL
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | BLDLM ; Build display list array for LM
|
---|
142 | ; Variables
|
---|
143 | ; SDN - Patient Name
|
---|
144 | ; SDD - Encounter Date
|
---|
145 | ; SDXT - Pointer to #409.73, transmission pointer
|
---|
146 | ;
|
---|
147 | S SDCNT=0
|
---|
148 | S SDN="" F S SDN=$O(^TMP("SCEN LM",$J,SDN)) Q:SDN']"" D
|
---|
149 | . S SDD="" F S SDD=$O(^TMP("SCEN LM",$J,SDN,SDD)) Q:'SDD D
|
---|
150 | .. S SDXT="" F S SDXT=$O(^TMP("SCEN LM",$J,SDN,SDD,SDXT)) Q:'SDXT D BLDLM1(SDXT)
|
---|
151 | Q
|
---|
152 | ;
|
---|
153 | BLDLM1(SDXT) ; Build LM Display line
|
---|
154 | ; Input
|
---|
155 | ; SDXT - DFN^BID^Delete marker ('*')
|
---|
156 | ;
|
---|
157 | K SDX
|
---|
158 | S SDCNT=SDCNT+1,SDX="",$P(SDX," ",VALMWD+1)=""
|
---|
159 | S SDX=$E(SDX,1,IC-1)_$E(SDCNT_BL,1,IW)_$E(SDX,IC+IW+1,VALMWD)
|
---|
160 | S SDX=$E(SDX,1,DC-1)_$E($P(^TMP("SCEN LM",$J,SDN,SDD,SDXT),U,3)_BL,1,DW)_$E(SDX,DC+DW+1,VALMWD)
|
---|
161 | S SDX=$E(SDX,1,PC-1)_$E(SDN_BL,1,PW)_$E(SDX,PC+PW+1,VALMWD)
|
---|
162 | S SDX=$E(SDX,1,SC-1)_$E($P(^TMP("SCEN LM",$J,SDN,SDD,SDXT),U,2)_BL,1,SW)_$E(SDX,SC+SW+1,VALMWD)
|
---|
163 | S SDX=$E(SDX,1,EC-1)_$E($$FMTE^XLFDT(SDD,1)_BL,1,EW)_$E(SDX,EC+EW+1,VALMWD)
|
---|
164 | D SET(SDX,SDXT)
|
---|
165 | Q
|
---|
166 | ;
|
---|
167 | SET(X,SDXMT) ;
|
---|
168 | N SCEN
|
---|
169 | ;
|
---|
170 | S VALMCNT=VALMCNT+1,^TMP("SCENI",$J,VALMCNT,0)=X
|
---|
171 | Q:'SDCNT
|
---|
172 | S ^TMP("SCENI",$J,"IDX",VALMCNT,SDCNT)=""
|
---|
173 | S ^TMP("SCENI",$J,SDCNT,0)=X
|
---|
174 | S ^TMP("SCENI",$J,"XMT",SDCNT,SDXMT)=""
|
---|
175 | ;
|
---|
176 | I $$OPENC^SCUTIE1(SDXMT,"SCEN")>-1 D
|
---|
177 | . S ^TMP("SCENIDX",$J,SDCNT)=VALMCNT_U_SCEN("DFN")_U_SCEN("ENCOUNTER")_U_SCEN("CLINIC")
|
---|
178 | Q
|
---|
179 | ;
|
---|
180 | HELP ; -- help code
|
---|
181 | S X="?" D DISP^XQORM1 W !!
|
---|
182 | Q
|
---|
183 | ;
|
---|
184 | EXIT ; -- exit code
|
---|
185 | I $D(VALMBCK),VALMBCK="R" D REFRESH^VALM S VALMBCK=$P(VALMBCK,"R")_$P(VALMBCK,"R",2) G EX1
|
---|
186 | K ^TMP("SCENI",$J),^TMP("SCEN LM",$J),^TMP("SCENIDX",$J),^TMP("SCENI TMP",$J)
|
---|
187 | I '$G(FLG1) K ^TMP("SDAMIDX",$J)
|
---|
188 | K VA,SDCLN,SDIV,SDENDDT1,SDNR,SDPRDIV,ANS,DFN,EC,EW,IC,IW,PC,PW,SC,SW,SDX,DC,DW,SDNAME,SDFN,VAUTINI,SDCNT,DIC,BL
|
---|
189 | K SDOK,SCINF,RTN,SCSTAT,SCEN,RESULT,SCTEXT,LINE,SDDEL,SDD,SDN,SDXT,SDBDT,SDCL,SDDA,SDOEDT,SDOEL,SDVIEN,SDXMT
|
---|
190 | K VALMDDF
|
---|
191 | D FULL^VALM1
|
---|
192 | D CLEAN^VALM10
|
---|
193 | EX1 Q
|
---|
194 | ;
|
---|
195 | PLKUP(SDFN) ;
|
---|
196 | ;This is the lookup by patient.
|
---|
197 | ;SDFN is the DFN of the patient.
|
---|
198 | ;
|
---|
199 | N COD,SDXER
|
---|
200 | S COD=""
|
---|
201 | F S COD=$O(^SD(409.75,"ACOD",SDFN,COD)) Q:COD="" S SDXER=0 F S SDXER=$O(^SD(409.75,"ACOD",SDFN,COD,SDXER)) Q:SDXER="" DO
|
---|
202 | .N NODE,ANS
|
---|
203 | .S NODE=$G(^SD(409.75,SDXER,0)) I NODE=""!($P(NODE,U,1)'>0) Q
|
---|
204 | .S ANS=$$CHKDATE($P(NODE,U,1),SDOEDT,SDE)
|
---|
205 | .I ANS D BLDA($P(NODE,U,1),$P(ANS,U,2))
|
---|
206 | .Q
|
---|
207 | Q
|
---|
208 | ;
|
---|
209 | CLKUP(SDCLN) ;
|
---|
210 | ;
|
---|
211 | ;This is the lookup by clinic.
|
---|
212 | ;SDCLN is the IEN of the clinic
|
---|
213 | ;
|
---|
214 | N SDXER,XMIT,ANS
|
---|
215 | S SDXER=0
|
---|
216 | F S SDXER=$O(^SD(409.75,"AECL",SDCLN,SDXER)) Q:SDXER="" S XMIT=$P($G(^SD(409.75,SDXER,0)),U,1) I XMIT]"" S ANS=$$CHKDATE(XMIT,SDOEDT,SDE) I ANS D BLDA(XMIT,$P(ANS,U,2))
|
---|
217 | Q
|
---|
218 | ;
|
---|
219 | CHKDATE(XMIT,BDT,EDT) ;
|
---|
220 | ;this function call ensures that the date of the encounter is within
|
---|
221 | ;the parameters.
|
---|
222 | ;
|
---|
223 | ;XMIT - IEN of 409.73
|
---|
224 | ;BDT - the beginning date
|
---|
225 | ;EDT - the ending date
|
---|
226 | ;
|
---|
227 | N ANS
|
---|
228 | S XMIT=$G(^SD(409.73,XMIT,0))
|
---|
229 | I XMIT="" S ANS=0 G CHKQ
|
---|
230 | I $P(XMIT,U,2)]"" S DATE=$P($G(^SCE($P(XMIT,U,2),0)),U,1)
|
---|
231 | I $P(XMIT,U,3)]"" S DATE=$P($G(^SD(409.74,$P(XMIT,U,3),0)),U,1)
|
---|
232 | I (DATE<BDT)!(DATE>EDT) S ANS=0
|
---|
233 | E S ANS="1^"_DATE
|
---|
234 | CHKQ Q ANS
|
---|