- DGUTL3 ;ALB/MTC,CKN - ELIGIBILITY UTILITIES ; 10/4/05 12:22pm
- ;;5.3;Registration;**114,506,653,1015**;Aug 13, 1993;Build 21
- ;
- Q
- ELIG(DFN,SOURCE,DEFAULT) ;-- This function will prompt for the eligibility for a patient. If
- ; only one eligibility then it will be returned without prompting.
- ;
- ; INPUT: DFN - Patient
- ; SOURCE - (1:PTF,2:ADMISSION,3:TRANSFER)
- ; DEFALUT - IEN from file 8.1
- ; OUTPUT: IEN of file 8^Name
- ;
- ;
- N RESULT,VAEL,ALLEL,EMP,X,DGDEF,Y
- ;
- ;-- get eligility codes
- D GETEL(DFN)
- S DGDEF=$P($G(^DIC(8,+$G(DEFAULT),0)),U)
- I DGDEF'="" S DGDEF=DEFAULT_U_DGDEF
- ;
- S RESULT="",EMP=$P(VAEL(1),U,2),ALLEL=U_EMP
- I '$D(VAEL) G ELIGQ
- I $D(VAEL(1))=1 S RESULT=VAEL(1) G ELIGQ
- ;-- if no default set default to primary eligibility
- I DGDEF="" S DGDEF=VAEL(1)
- ;
- DISP ;-- display choices
- W !,"THIS PATIENT HAS OTHER ENTITLED ELIGIBILITIES:"
- W !?5,$P(VAEL(1),U,2)
- S X="" F S X=$O(VAEL(1,X)) Q:X'>0 D
- . W !?5,$P(VAEL(1,X),U,2)
- . S ALLEL=ALLEL_U_$P(VAEL(1,X),U,2)
- ;
- ;-- prompt for eligibility codes
- ;
- 1 W !,"ENTER THE ELIGIBILITY FOR THIS "_$S(SOURCE=1:"MOVEMENT",SOURCE=2:"ADMISSION",SOURCE=3:"TRANSFER",1:"PATIENT")_": "_$P(DGDEF,U,2)_"// "
- R X:DTIME
- ;-- if timeout
- G ELIGQ:'$T
- ;-- if ^
- G ELIGQ:X[U
- ;-- if default (primary) quit
- I X="" S RESULT=DGDEF G ELIGQ
- ;-- find eligibility
- S X=$$UPPER^VALM1(X)
- G DISP:X["?",1:ALLEL'[(U_X)
- ;
- S EMP=X_$P($P(ALLEL,U_X,2),U) W $P($P(ALLEL,U_X,2),U)
- I $P(VAEL(1),U,2)=EMP S RESULT=VAEL(1) G ELIGQ
- S X="" F S X=$O(VAEL(1,X)) Q:X'>0 D
- . I $P(VAEL(1,X),U,2)=EMP S RESULT=X_U_EMP
- ;
- ELIGQ ;
- K VAEL
- Q +RESULT
- ;
- GETEL(DFN) ;-- This function will get the eligibilities for the patient
- ; specified by DFN and return all the active eligibilities in the
- ; ARRAY specified.
- ;
- ; INPUT: DFN - Patient
- ;
- D ELIG^VADPT
- Q
- ;
- GETDEL(DFN,START,END) ;-- This function will scan the Eligibility Date
- ; Sensitive file #8.3 for all active eligibilities for a date range.
- ;
- N DGI,DGJ,DGK
- ;
- S DGI=0 F S DGI=$O(^VAEL(8.3,"AE",DFN,DGI)) Q:DGI="" D
- . S DGJ=$O(^VAEL(8.3,"AE",DFN,DGI,0)),DGK=^(DGJ)
- . I $P(DGK,U,2) S VAEL(1)=DGI_U_$P($G(^DIC(8,DGI,0)),U)
- . I '$P(DGK,U,2) S VAEL(1,DGI)=DGI_U_$P($G(^DIC(8,DGI,0)),U)
- Q
- ;
- ASKPR(DFN) ;-- This function will ask the user for the primary eligibility.
- ;
- N RESULT,VAEL,ALLEL,EMP,X,DGDEF,Y
- ;
- ;-- get eligility codes
- S DEFAULT=$O(^VAEL(8.3,"AP",DFN,0))
- S DGDEF=$P($G(^DIC(8,+$G(DEFAULT),0)),U)
- I DGDEF'="" S DGDEF=DEFAULT_U_DGDEF
- ;
- S RESULT=""
- ;
- TRY W !,"PRIMARY ELIGIBILITY CODE: "_$P(DGDEF,U,2)_"// "
- R X:DTIME
- ;-- if timeout
- G PRIMQ:'$T
- ;-- if ^
- G PRIMQ:X[U
- ;-- find eligibility
- S X=$$UPPER^VALM1(X)
- ;
- PRIMQ ;
- K VAEL
- Q +RESULT
- ;
- BADADR(DFN) ;does this patient have a bad address?
- ;
- Q:'$G(DFN) ""
- Q $P($G(^DPT(DFN,.11)),"^",16)
- ;
- DELBAI(DFN) ;delete bad address indicator
- N FDA,IENS
- Q:'$G(DFN)
- S IENS=DFN_",",FDA(2,IENS,.121)="@"
- D FILE^DIE("E","FDA")
- Q
- GETSHAD(DFN) ;Get current value of Proj 112/SHAD from Patient file.
- ; Input: DFN - Patient ien
- ; Output: Valid values - 1 (Yes), 0 (No), or null
- ; -1 - error
- Q:$G(DFN)="" -1 ;Quit with error if missing input parameter
- Q $P($G(^DPT(DFN,.321)),"^",15)
- DGUTL3 ;ALB/MTC,CKN - ELIGIBILITY UTILITIES ; 10/4/05 12:22pm
- +1 ;;5.3;Registration;**114,506,653,1015**;Aug 13, 1993;Build 21
- +2 ;
- +3 QUIT
- ELIG(DFN,SOURCE,DEFAULT) ;-- This function will prompt for the eligibility for a patient. If
- +1 ; only one eligibility then it will be returned without prompting.
- +2 ;
- +3 ; INPUT: DFN - Patient
- +4 ; SOURCE - (1:PTF,2:ADMISSION,3:TRANSFER)
- +5 ; DEFALUT - IEN from file 8.1
- +6 ; OUTPUT: IEN of file 8^Name
- +7 ;
- +8 ;
- +9 NEW RESULT,VAEL,ALLEL,EMP,X,DGDEF,Y
- +10 ;
- +11 ;-- get eligility codes
- +12 DO GETEL(DFN)
- +13 SET DGDEF=$PIECE($GET(^DIC(8,+$GET(DEFAULT),0)),U)
- +14 IF DGDEF'=""
- SET DGDEF=DEFAULT_U_DGDEF
- +15 ;
- +16 SET RESULT=""
- SET EMP=$PIECE(VAEL(1),U,2)
- SET ALLEL=U_EMP
- +17 IF '$DATA(VAEL)
- GOTO ELIGQ
- +18 IF $DATA(VAEL(1))=1
- SET RESULT=VAEL(1)
- GOTO ELIGQ
- +19 ;-- if no default set default to primary eligibility
- +20 IF DGDEF=""
- SET DGDEF=VAEL(1)
- +21 ;
- DISP ;-- display choices
- +1 WRITE !,"THIS PATIENT HAS OTHER ENTITLED ELIGIBILITIES:"
- +2 WRITE !?5,$PIECE(VAEL(1),U,2)
- +3 SET X=""
- FOR
- SET X=$ORDER(VAEL(1,X))
- IF X'>0
- QUIT
- Begin DoDot:1
- +4 WRITE !?5,$PIECE(VAEL(1,X),U,2)
- +5 SET ALLEL=ALLEL_U_$PIECE(VAEL(1,X),U,2)
- End DoDot:1
- +6 ;
- +7 ;-- prompt for eligibility codes
- +8 ;
- 1 WRITE !,"ENTER THE ELIGIBILITY FOR THIS "_$SELECT(SOURCE=1:"MOVEMENT",SOURCE=2:"ADMISSION",SOURCE=3:"TRANSFER",1:"PATIENT")_": "_$PIECE(DGDEF,U,2)_"// "
- +1 READ X:DTIME
- +2 ;-- if timeout
- +3 IF '$TEST
- GOTO ELIGQ
- +4 ;-- if ^
- +5 IF X[U
- GOTO ELIGQ
- +6 ;-- if default (primary) quit
- +7 IF X=""
- SET RESULT=DGDEF
- GOTO ELIGQ
- +8 ;-- find eligibility
- +9 SET X=$$UPPER^VALM1(X)
- +10 IF X["?"
- GOTO DISP
- IF ALLEL'[(U_X)
- GOTO 1
- +11 ;
- +12 SET EMP=X_$PIECE($PIECE(ALLEL,U_X,2),U)
- WRITE $PIECE($PIECE(ALLEL,U_X,2),U)
- +13 IF $PIECE(VAEL(1),U,2)=EMP
- SET RESULT=VAEL(1)
- GOTO ELIGQ
- +14 SET X=""
- FOR
- SET X=$ORDER(VAEL(1,X))
- IF X'>0
- QUIT
- Begin DoDot:1
- +15 IF $PIECE(VAEL(1,X),U,2)=EMP
- SET RESULT=X_U_EMP
- End DoDot:1
- +16 ;
- ELIGQ ;
- +1 KILL VAEL
- +2 QUIT +RESULT
- +3 ;
- GETEL(DFN) ;-- This function will get the eligibilities for the patient
- +1 ; specified by DFN and return all the active eligibilities in the
- +2 ; ARRAY specified.
- +3 ;
- +4 ; INPUT: DFN - Patient
- +5 ;
- +6 DO ELIG^VADPT
- +7 QUIT
- +8 ;
- GETDEL(DFN,START,END) ;-- This function will scan the Eligibility Date
- +1 ; Sensitive file #8.3 for all active eligibilities for a date range.
- +2 ;
- +3 NEW DGI,DGJ,DGK
- +4 ;
- +5 SET DGI=0
- FOR
- SET DGI=$ORDER(^VAEL(8.3,"AE",DFN,DGI))
- IF DGI=""
- QUIT
- Begin DoDot:1
- +6 SET DGJ=$ORDER(^VAEL(8.3,"AE",DFN,DGI,0))
- SET DGK=^(DGJ)
- +7 IF $PIECE(DGK,U,2)
- SET VAEL(1)=DGI_U_$PIECE($GET(^DIC(8,DGI,0)),U)
- +8 IF '$PIECE(DGK,U,2)
- SET VAEL(1,DGI)=DGI_U_$PIECE($GET(^DIC(8,DGI,0)),U)
- End DoDot:1
- +9 QUIT
- +10 ;
- ASKPR(DFN) ;-- This function will ask the user for the primary eligibility.
- +1 ;
- +2 NEW RESULT,VAEL,ALLEL,EMP,X,DGDEF,Y
- +3 ;
- +4 ;-- get eligility codes
- +5 SET DEFAULT=$ORDER(^VAEL(8.3,"AP",DFN,0))
- +6 SET DGDEF=$PIECE($GET(^DIC(8,+$GET(DEFAULT),0)),U)
- +7 IF DGDEF'=""
- SET DGDEF=DEFAULT_U_DGDEF
- +8 ;
- +9 SET RESULT=""
- +10 ;
- TRY WRITE !,"PRIMARY ELIGIBILITY CODE: "_$PIECE(DGDEF,U,2)_"// "
- +1 READ X:DTIME
- +2 ;-- if timeout
- +3 IF '$TEST
- GOTO PRIMQ
- +4 ;-- if ^
- +5 IF X[U
- GOTO PRIMQ
- +6 ;-- find eligibility
- +7 SET X=$$UPPER^VALM1(X)
- +8 ;
- PRIMQ ;
- +1 KILL VAEL
- +2 QUIT +RESULT
- +3 ;
- BADADR(DFN) ;does this patient have a bad address?
- +1 ;
- +2 IF '$GET(DFN)
- QUIT ""
- +3 QUIT $PIECE($GET(^DPT(DFN,.11)),"^",16)
- +4 ;
- DELBAI(DFN) ;delete bad address indicator
- +1 NEW FDA,IENS
- +2 IF '$GET(DFN)
- QUIT
- +3 SET IENS=DFN_","
- SET FDA(2,IENS,.121)="@"
- +4 DO FILE^DIE("E","FDA")
- +5 QUIT
- GETSHAD(DFN) ;Get current value of Proj 112/SHAD from Patient file.
- +1 ; Input: DFN - Patient ien
- +2 ; Output: Valid values - 1 (Yes), 0 (No), or null
- +3 ; -1 - error
- +4 ;Quit with error if missing input parameter
- IF $GET(DFN)=""
- QUIT -1
- +5 QUIT $PIECE($GET(^DPT(DFN,.321)),"^",15)