Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VAFCMS01

VAFCMS01.m

Go to the documentation of this file.
  1. VAFCMS01 ;BP-CIOFO/JRP - ADMISSION RETRANSMISSION;8/3/1998
  1. ;;5.3;Registration;**209**;Aug 13, 1993
  1. ;
  1. LISTMAN ;Entry point for ListMan interface to transmit admission data
  1. ;Input : None
  1. ;Output : None
  1. ;
  1. N DFN,VALMBEG,VALMEND
  1. AGAIN ;Get patient
  1. S DFN=$$GETDFN()
  1. Q:(DFN<0)
  1. I ('$D(^DGPM("APTT1",DFN))) W !!,"** No admissions on file **",!! G AGAIN
  1. ;Call ListMan
  1. D EN^VALM("VAFC ADMISSION TRANSMISSION")
  1. ;Done
  1. Q
  1. ;
  1. GETDFN() ;Get pointer to PATIENT file (#2)
  1. ;Input : None
  1. ;Output : DFN - Pointer to PATIENT file (#2)
  1. ; -1 - No entry selected
  1. ;
  1. N DIC,X,Y,DTOUT,DUOUT
  1. S DIC="^DPT("
  1. S DIC(0)="AEMNQZ"
  1. D ^DIC
  1. Q +Y
  1. ;
  1. ;Input : DFN - Pointer to PATIENT file (#2)
  1. ; VALMEND - Ending date range (FileMan)
  1. ; Defaults to Today
  1. ; VALMBEG - Beginning date range (FileMan)
  1. ; Defaults to VALMEND-45
  1. ;Output : VALMHDR(x) = Line of text in header
  1. ;Notes : VALMBEG & VALMEND will be defined on ouput
  1. ;
  1. ;Check input
  1. Q:('$G(DFN))
  1. Q:('$D(^DPT(DFN)))
  1. S VALMEND=$G(VALMEND,$$DT^XLFDT())
  1. S VALMBEG=$G(VALMBEG,$$FMADD^XLFDT(VALMEND,-45))
  1. ;Declare variables
  1. N LINE,TMP,VA,VAPTYP,VAERR
  1. D PID^VADPT6
  1. Q:(VAERR)
  1. S TMP="Admissions for "_$P(^DPT(DFN,0),"^",1)
  1. S TMP=TMP_" ("_VA("PID")_")"
  1. S LINE=TMP
  1. S TMP=$L(LINE)
  1. S VALMHDR(1)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
  1. S TMP=$$FMTE^XLFDT(VALMBEG,"1D")
  1. S TMP=TMP_" through "_$$FMTE^XLFDT(VALMEND,"1D")
  1. S LINE=TMP
  1. S TMP=$L(LINE)
  1. S VALMHDR(2)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
  1. Q
  1. ;
  1. ENTRY ;Build display list of admissions for given patient in given time frame
  1. ;Input : DFN - Pointer to PATIENT file (#2)
  1. ; VALMEND - Ending date range (FileMan)
  1. ; Defaults to Today
  1. ; VALMBEG - Beginning date range (FileMan)
  1. ; Defaults to VALMEND-45
  1. ;Output : @VALMAR@(x) = Line of text in ListMan display
  1. ; @VALMAR@("IDX",x,y) = "" (Index array for entry selection)
  1. ;Notes : VALMBEG & VALMEND will be defined on ouput
  1. ;
  1. ;Check input (strip time from VALMEND & VALMBEG)
  1. Q:('$G(DFN))
  1. Q:('$D(^DPT(DFN)))
  1. S VALMEND=$G(VALMEND,$$DT^XLFDT())
  1. S VALMEND=$P(VALMEND,".",1)
  1. S VALMBEG=$G(VALMBEG,$$FMADD^XLFDT(VALMEND,-45))
  1. S VALMBEG=$P(VALMBEG,".",1)
  1. ;Declare variables
  1. N MOVEPTR,DATE,MOVENODE,TMP,LINE,ENTRY,NODE,INVBEG
  1. D CLEAN^VALM10
  1. S VALMCNT=1
  1. S VALMBG=1
  1. S ENTRY=0
  1. S INVBEG=9999999.9999999-VALMBEG
  1. S INVBEG=$P(INVBEG,".",1)
  1. ;Loop through admissions for patient
  1. S DATE=9999999.9999999-VALMEND
  1. S DATE=$P(DATE,".",1)
  1. F S DATE=+$O(^DGPM("ATID1",DFN,DATE)) Q:(('DATE)!($P(DATE,".",1)>INVBEG)) D
  1. .S MOVEPTR=""
  1. .F S MOVEPTR=+$O(^DGPM("ATID1",DFN,DATE,MOVEPTR)) Q:('MOVEPTR) D
  1. ..S MOVENODE=$G(^DGPM(MOVEPTR,0))
  1. ..Q:('(+MOVENODE))
  1. ..S LINE=""
  1. ..;Increment choice number
  1. ..S ENTRY=ENTRY+1
  1. ..S LINE=$$SETFLD^VALM1(ENTRY,LINE,"ENTRY")
  1. ..;Movement date/time
  1. ..S TMP=$$FMTE^XLFDT(+MOVENODE)
  1. ..S LINE=$$SETFLD^VALM1(TMP,LINE,"DATE")
  1. ..;Movement type
  1. ..S TMP=+$P(MOVENODE,"^",4)
  1. ..S NODE=$G(^DG(405.1,TMP,0))
  1. ..S TMP=$P(NODE,"^",7)
  1. ..S:(TMP="") TMP=$P(NODE,"^",1)
  1. ..S LINE=$$SETFLD^VALM1(TMP,LINE,"MOVEMENT")
  1. ..;Ward
  1. ..S TMP=+$P(MOVENODE,"^",6)
  1. ..S NODE=$G(^DIC(42,TMP,0))
  1. ..S TMP=$P(NODE,"^",1)
  1. ..S LINE=$$SETFLD^VALM1(TMP,LINE,"WARD")
  1. ..;Add entry to display & index and increment line count
  1. ..D SET^VALM10(VALMCNT,LINE,ENTRY)
  1. ..S @VALMAR@("INDEX",ENTRY)=MOVEPTR
  1. ..S VALMCNT=VALMCNT+1
  1. ..Q
  1. .Q
  1. ;Decrement line count by one
  1. S VALMCNT=VALMCNT-1
  1. ;No admissions within date range
  1. I ('ENTRY) D
  1. .S @VALMAR@(1,0)=""
  1. .S LINE="** NO ADMISSIONS FOUND WITHIN GIVEN DATE RANGE **"
  1. .S:('$D(^DGPM("APTT1",DFN))) LINE="** NO ADMISSIONS ON FILE **"
  1. .S TMP=$L(LINE)
  1. .S @VALMAR@(2,0)=$$SETSTR^VALM1(LINE,"",(40-(TMP\2)),TMP)
  1. .S VALMCNT=1
  1. Q
  1. ;
  1. EXIT ;Clean-up ListMan variables
  1. D CLEAN^VALM10
  1. ;Return to full screen mode
  1. D FULL^VALM1
  1. Q
  1. ;
  1. ; --- LISTMAN PROTOCOLS ---
  1. ;
  1. DATE ;Change date range
  1. ;Input : Variables set by ListMan
  1. ;Output : None
  1. ;Notes : VALMBEG & VALMEND will be updated with the new date range
  1. ;
  1. ;Declare variables
  1. N VALMB,OLDBEG,OLDEND
  1. ;Remember current date range
  1. S OLDBED=VALMBEG
  1. S OLDEND=VALMEND
  1. ;Switch to full screen mode
  1. D FULL^VALM1
  1. ;Prompt for new date range (default begin date is T-45)
  1. S VALMB=$$FMADD^XLFDT($$DT^XLFDT(),-45)
  1. D RANGE^VALM1
  1. ;New date range not entered
  1. I (('VALMBEG)!('VALMEND)) D Q
  1. .S VALMBEG=OLDBED
  1. .S VALMEND=OLDEND
  1. .S VALMBCK="R"
  1. ;Rebuild header
  1. D HEADER
  1. ;Rebuild display
  1. D ENTRY
  1. ;Done
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. XMIT ;Select and transmit admission from list
  1. ;Input : Variables set by ListMan
  1. ; DFN - Pointer to PATIENT file (#2)
  1. ;Output : None
  1. ;Notes : Entry for selected admission will be found/created in
  1. ; ADT/HL7 PIVOT file (#391.71) and then transmitted
  1. ;
  1. ;Declare variables
  1. N VALMY,ENTRY,MOVEPTR,PIVOTNUM,PIVOT,DATE,VPTR,DIR,X,Y
  1. ;Switch to full screen mode
  1. D FULL^VALM1
  1. ;Prompt for selection
  1. D EN^VALM2(XQORNOD(0),"SO")
  1. ;Loop through selections
  1. S ENTRY=0
  1. F S ENTRY=+$O(VALMY(ENTRY)) Q:('ENTRY) D
  1. .;Convert selection number to PATIENT MOVEMENT file pointer
  1. .S MOVEPTR=+$G(@VALMAR@("INDEX",ENTRY))
  1. .;Get date/time of admission
  1. .S DATE=+$G(^DGPM(MOVEPTR,0))
  1. .I ('DATE) D Q
  1. ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
  1. ..W !," COULD NOT FIND ENTRY IN PATIENT MOVEMENT FILE"
  1. ..W !!
  1. ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
  1. .;Create/find entry in ADT/HL7 PIVOT file (call returns pivot number)
  1. .S VPTR=MOVEPTR_";DGPM("
  1. .S PIVOTNUM=+$$PIVNW^VAFHPIVT(DFN,DATE,1,VPTR)
  1. .I ('PIVOTNUM) D Q
  1. ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
  1. ..W !," UNABLE TO CREATE/FIND ENTRY IN ADT/HL7 PIVOT FILE"
  1. ..W !!
  1. ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
  1. .;Convert pivot number to pointer
  1. .S PIVOTPTR=+$O(^VAT(391.71,"D",PIVOTNUM,0))
  1. .I ('PIVOTPTR) D Q
  1. ..W !!,"** UNABLE TO TRANSMIT ENTRY NUMBER ",ENTRY," **"
  1. ..W !," COULD NOT FIND ENTRY IN ADT/HL7 PIVOT FILE"
  1. ..W !!
  1. ..S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
  1. .;Queue retransmission
  1. .D RETRAN^VAFCMS02(PIVOTPTR)
  1. .W !,"Entry number ",ENTRY," queued for transmission"
  1. .S DIR(0)="EA",DIR("A")="Press RETURN to continue: " D ^DIR
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. NEWDFN ;Change patient
  1. ;Input : Variables set by ListMan
  1. ; DFN - Pointer to PATIENT file (#2)
  1. ;Output : None
  1. ;Notes : DFN will be updated with the newly selected patient
  1. ; : VALMBEG & VALMEND will not be modified
  1. ;
  1. ;Declare variables
  1. N OLDDFN
  1. ;Switch to full screen mode
  1. D FULL^VALM1
  1. ;Remember current DFN
  1. S OLDDFN=DFN
  1. ;Prompt for patient
  1. S DFN=$$GETDFN()
  1. ;New patient not selected
  1. I (DFN<0) S DFN=OLDDFN S VALMBCK="R" Q
  1. ;Rebuild header
  1. D HEADER
  1. ;Rebuild display
  1. D ENTRY
  1. ;Done
  1. S VALMBCK="R"
  1. Q