1 | VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998
|
---|
2 | ;;5.3;Registration;**209**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | LISTMAN ;Entry point for ListMan interface to transmit admission data
|
---|
5 | ;Input : None
|
---|
6 | ;Output : None
|
---|
7 | ;
|
---|
8 | N DFN,VALMBEG,VALMEND
|
---|
9 | AGAIN ;Get patient
|
---|
10 | S DFN=$$GETDFN()
|
---|
11 | Q:(DFN<0)
|
---|
12 | I ('$D(^DGPM("APTT1",DFN))) W !!,"** No admissions on file **",!! G AGAIN
|
---|
13 | ;Call ListMan
|
---|
14 | D EN^VALM("VAFC ADMISSION TRANSMISSION")
|
---|
15 | ;Done
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | GETDFN() ;Get pointer to PATIENT file (#2)
|
---|
19 | ;Input : None
|
---|
20 | ;Output : DFN - Pointer to PATIENT file (#2)
|
---|
21 | ; -1 - No entry selected
|
---|
22 | ;
|
---|
23 | N DIC,X,Y,DTOUT,DUOUT
|
---|
24 | S DIC="^DPT("
|
---|
25 | S DIC(0)="AEMNQZ"
|
---|
26 | D ^DIC
|
---|
27 | Q +Y
|
---|
28 | ;
|
---|
29 | HEADER ;Build header
|
---|
30 | ;Input : DFN - Pointer to PATIENT file (#2)
|
---|
31 | ; VALMEND - Ending date range (FileMan)
|
---|
32 | ; Defaults to Today
|
---|
33 | ; VALMBEG - Beginning date range (FileMan)
|
---|
34 | ; Defaults to VALMEND-45
|
---|
35 | ;Output : VALMHDR(x) = Line of text in header
|
---|
36 | ;Notes : VALMBEG & VALMEND will be defined on ouput
|
---|
37 | ;
|
---|
38 | ;Check input
|
---|
39 | Q:('$G(DFN))
|
---|
40 | Q:('$D(^DPT(DFN)))
|
---|
41 | S VALMEND=$G(VALMEND,$$DT^XLFDT())
|
---|
42 | S VALMBEG=$G(VALMBEG,$$FMADD^XLFDT(VALMEND,-45))
|
---|
43 | ;Declare variables
|
---|
44 | N LINE,TMP,VA,VAPTYP,VAERR
|
---|
45 | D PID^VADPT6
|
---|
46 | Q:(VAERR)
|
---|
47 | S TMP="Admissions for "_$P(^DPT(DFN,0),"^",1)
|
---|
48 | S TMP=TMP_" ("_VA("PID")_")"
|
---|
49 | S LINE=TMP
|
---|
50 | S TMP=$L(LINE)
|
---|
51 | S VALMHDR(1)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
|
---|
52 | S TMP=$$FMTE^XLFDT(VALMBEG,"1D")
|
---|
53 | S TMP=TMP_" through "_$$FMTE^XLFDT(VALMEND,"1D")
|
---|
54 | S LINE=TMP
|
---|
55 | S TMP=$L(LINE)
|
---|
56 | S VALMHDR(2)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | ENTRY ;Build display list of admissions for given patient in given time frame
|
---|
60 | ;Input : DFN - Pointer to PATIENT file (#2)
|
---|
61 | ; VALMEND - Ending date range (FileMan)
|
---|
62 | ; Defaults to Today
|
---|
63 | ; VALMBEG - Beginning date range (FileMan)
|
---|
64 | ; Defaults to VALMEND-45
|
---|
65 | ;Output : @VALMAR@(x) = Line of text in ListMan display
|
---|
66 | ; @VALMAR@("IDX",x,y) = "" (Index array for entry selection)
|
---|
67 | ;Notes : VALMBEG & VALMEND will be defined on ouput
|
---|
68 | ;
|
---|
69 | ;Check input (strip time from VALMEND & VALMBEG)
|
---|
70 | Q:('$G(DFN))
|
---|
71 | Q:('$D(^DPT(DFN)))
|
---|
72 | S VALMEND=$G(VALMEND,$$DT^XLFDT())
|
---|
73 | S VALMEND=$P(VALMEND,".",1)
|
---|
74 | S VALMBEG=$G(VALMBEG,$$FMADD^XLFDT(VALMEND,-45))
|
---|
75 | S VALMBEG=$P(VALMBEG,".",1)
|
---|
76 | ;Declare variables
|
---|
77 | N MOVEPTR,DATE,MOVENODE,TMP,LINE,ENTRY,NODE,INVBEG
|
---|
78 | D CLEAN^VALM10
|
---|
79 | S VALMCNT=1
|
---|
80 | S VALMBG=1
|
---|
81 | S ENTRY=0
|
---|
82 | S INVBEG=9999999.9999999-VALMBEG
|
---|
83 | S INVBEG=$P(INVBEG,".",1)
|
---|
84 | ;Loop through admissions for patient
|
---|
85 | S DATE=9999999.9999999-VALMEND
|
---|
86 | S DATE=$P(DATE,".",1)
|
---|
87 | F S DATE=+$O(^DGPM("ATID1",DFN,DATE)) Q:(('DATE)!($P(DATE,".",1)>INVBEG)) D
|
---|
88 | .S MOVEPTR=""
|
---|
89 | .F S MOVEPTR=+$O(^DGPM("ATID1",DFN,DATE,MOVEPTR)) Q:('MOVEPTR) D
|
---|
90 | ..S MOVENODE=$G(^DGPM(MOVEPTR,0))
|
---|
91 | ..Q:('(+MOVENODE))
|
---|
92 | ..S LINE=""
|
---|
93 | ..;Increment choice number
|
---|
94 | ..S ENTRY=ENTRY+1
|
---|
95 | ..S LINE=$$SETFLD^VALM1(ENTRY,LINE,"ENTRY")
|
---|
96 | ..;Movement date/time
|
---|
97 | ..S TMP=$$FMTE^XLFDT(+MOVENODE)
|
---|
98 | ..S LINE=$$SETFLD^VALM1(TMP,LINE,"DATE")
|
---|
99 | ..;Movement type
|
---|
100 | ..S TMP=+$P(MOVENODE,"^",4)
|
---|
101 | ..S NODE=$G(^DG(405.1,TMP,0))
|
---|
102 | ..S TMP=$P(NODE,"^",7)
|
---|
103 | ..S:(TMP="") TMP=$P(NODE,"^",1)
|
---|
104 | ..S LINE=$$SETFLD^VALM1(TMP,LINE,"MOVEMENT")
|
---|
105 | ..;Ward
|
---|
106 | ..S TMP=+$P(MOVENODE,"^",6)
|
---|
107 | ..S NODE=$G(^DIC(42,TMP,0))
|
---|
108 | ..S TMP=$P(NODE,"^",1)
|
---|
109 | ..S LINE=$$SETFLD^VALM1(TMP,LINE,"WARD")
|
---|
110 | ..;Add entry to display & index and increment line count
|
---|
111 | ..D SET^VALM10(VALMCNT,LINE,ENTRY)
|
---|
112 | ..S @VALMAR@("INDEX",ENTRY)=MOVEPTR
|
---|
113 | ..S VALMCNT=VALMCNT+1
|
---|
114 | ..Q
|
---|
115 | .Q
|
---|
116 | ;Decrement line count by one
|
---|
117 | S VALMCNT=VALMCNT-1
|
---|
118 | ;No admissions within date range
|
---|
119 | I ('ENTRY) D
|
---|
120 | .S @VALMAR@(1,0)=""
|
---|
121 | .S LINE="** NO ADMISSIONS FOUND WITHIN GIVEN DATE RANGE **"
|
---|
122 | .S:('$D(^DGPM("APTT1",DFN))) LINE="** NO ADMISSIONS ON FILE **"
|
---|
123 | .S TMP=$L(LINE)
|
---|
124 | .S @VALMAR@(2,0)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
|
---|
125 | .S VALMCNT=1
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | EXIT ;Clean-up ListMan variables
|
---|
129 | D CLEAN^VALM10
|
---|
130 | ;Return to full screen mode
|
---|
131 | D FULL^VALM1
|
---|
132 | Q
|
---|
133 | ;
|
---|
134 | ; --- LISTMAN PROTOCOLS ---
|
---|
135 | ;
|
---|
136 | DATE ;Change date range
|
---|
137 | ;Input : Variables set by ListMan
|
---|
138 | ;Output : None
|
---|
139 | ;Notes : VALMBEG & VALMEND will be updated with the new date range
|
---|
140 | ;
|
---|
141 | ;Declare variables
|
---|
142 | N VALMB,OLDBEG,OLDEND
|
---|
143 | ;Remember current date range
|
---|
144 | S OLDBED=VALMBEG
|
---|
145 | S OLDEND=VALMEND
|
---|
146 | ;Switch to full screen mode
|
---|
147 | D FULL^VALM1
|
---|
148 | ;Prompt for new date range (default begin date is T-45)
|
---|
149 | S VALMB=$$FMADD^XLFDT($$DT^XLFDT(),-45)
|
---|
150 | D RANGE^VALM1
|
---|
151 | ;New date range not entered
|
---|
152 | I (('VALMBEG)!('VALMEND)) D Q
|
---|
153 | .S VALMBEG=OLDBED
|
---|
154 | .S VALMEND=OLDEND
|
---|
155 | .S VALMBCK="R"
|
---|
156 | ;Rebuild header
|
---|
157 | D HEADER
|
---|
158 | ;Rebuild display
|
---|
159 | D ENTRY
|
---|
160 | ;Done
|
---|
161 | S VALMBCK="R"
|
---|
162 | Q
|
---|
163 | ;
|
---|
164 | XMIT ;Select and transmit admission from list
|
---|
165 | ;Input : Variables set by ListMan
|
---|
166 | ; DFN - Pointer to PATIENT file (#2)
|
---|
167 | ;Output : None
|
---|
168 | ;Notes : Entry for selected admission will be found/created in
|
---|
169 | ; ADT/HL7 PIVOT file (#391.71) and then transmitted
|
---|
170 | ;
|
---|
171 | ;Declare variables
|
---|
172 | N VALMY,ENTRY,MOVEPTR,PIVOTNUM,PIVOT,DATE,VPTR,DIR,X,Y
|
---|
173 | ;Switch to full screen mode
|
---|
174 | D FULL^VALM1
|
---|
175 | ;Prompt for selection
|
---|
176 | D EN^VALM2(XQORNOD(0),"SO")
|
---|
177 | ;Loop through selections
|
---|
178 | S ENTRY=0
|
---|
179 | F S ENTRY=+$O(VALMY(ENTRY)) Q:('ENTRY) D
|
---|
180 | .;Convert selection number to PATIENT MOVEMENT file pointer
|
---|
181 | .S MOVEPTR=+$G(@VALMAR@("INDEX",ENTRY))
|
---|
182 | .;Get date/time of admission
|
---|
183 | .S DATE=+$G(^DGPM(MOVEPTR,0))
|
---|
184 | .I ('DATE) D Q
|
---|
185 | ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
|
---|
186 | ..W !," COULD NOT FIND ENTRY IN PATIENT MOVEMENT FILE"
|
---|
187 | ..W !!
|
---|
188 | ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
|
---|
189 | .;Create/find entry in ADT/HL7 PIVOT file (call returns pivot number)
|
---|
190 | .S VPTR=MOVEPTR_";DGPM("
|
---|
191 | .S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,DATE,1,VPTR)
|
---|
192 | .I ('PIVOTNUM) D Q
|
---|
193 | ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
|
---|
194 | ..W !," UNABLE TO CREATE/FIND ENTRY IN ADT/HL7 PIVOT FILE"
|
---|
195 | ..W !!
|
---|
196 | ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
|
---|
197 | .;Convert pivot number to pointer
|
---|
198 | .S PIVOTPTR=+$O(^VAT(391.71,"D",PIVOTNUM,0))
|
---|
199 | .I ('PIVOTPTR) D Q
|
---|
200 | ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
|
---|
201 | ..W !," COULD NOT FIND ENTRY IN ADT/HL7 PIVOT FILE"
|
---|
202 | ..W !!
|
---|
203 | ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
|
---|
204 | .;Queue retransmission
|
---|
205 | .D RETRAN^VAFCMS02(PIVOTPTR)
|
---|
206 | .W !,"Entry number ",ENTRY," queued for transmission"
|
---|
207 | .S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
|
---|
208 | S VALMBCK="R"
|
---|
209 | Q
|
---|
210 | ;
|
---|
211 | NEWDFN ;Change patient
|
---|
212 | ;Input : Variables set by ListMan
|
---|
213 | ; DFN - Pointer to PATIENT file (#2)
|
---|
214 | ;Output : None
|
---|
215 | ;Notes : DFN will be updated with the newly selected patient
|
---|
216 | ; : VALMBEG & VALMEND will not be modified
|
---|
217 | ;
|
---|
218 | ;Declare variables
|
---|
219 | N OLDDFN
|
---|
220 | ;Switch to full screen mode
|
---|
221 | D FULL^VALM1
|
---|
222 | ;Remember current DFN
|
---|
223 | S OLDDFN=DFN
|
---|
224 | ;Prompt for patient
|
---|
225 | S DFN=$$GETDFN()
|
---|
226 | ;New patient not selected
|
---|
227 | I (DFN<0) S DFN=OLDDFN S VALMBCK="R" Q
|
---|
228 | ;Rebuild header
|
---|
229 | D HEADER
|
---|
230 | ;Rebuild display
|
---|
231 | D ENTRY
|
---|
232 | ;Done
|
---|
233 | S VALMBCK="R"
|
---|
234 | Q
|
---|