[613] | 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
|
---|