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

FBARCH0.m

Go to the documentation of this file.
  1. FBARCH0 ; HINOIFO/RVD - ARCH IMPORT ELIGIBILITY AND UTILITY ; 01/08/11 12:30pm
  1. ;;3.5;FEE BASIS;**119,130,138**;JAN 30, 1995;Build 3
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;Integration Agreements:
  1. ; ^DPT( - #2070, 10035
  1. ; ^DIE - #2053
  1. ; ^VASITE -#10112
  1. ; ^XUAF4 - #2171
  1. ; ^DIC(4 - #10090
  1. ; ^MPIF001 - #2701
  1. ; @XPDGREF - 2433
  1. ; DT^DILF - #2054
  1. Q
  1. ;
  1. EN ; entry point
  1. ;
  1. N CNT,DFN,DIR,DTOUT,DUOUT,DIRUT,DIROUT,FBDATA,FBDATE,FBDIR,FBFILE,FBTOT,FBX,FBY,X,Y,Z
  1. K ^TMP("FBARCH",$J)
  1. S FBDIR=$$PWD^%ZISH
  1. ;
  1. S DIR("A")="Enter host file directory",DIR("B")=FBDIR
  1. S DIR("?",1)="Enter the full path specification where the host file may be found"
  1. S DIR("?")="or press return for the default directory "_FBDIR
  1. S DIR(0)="FO^3:60"
  1. D ^DIR K DIR
  1. S FBDIR=$S($D(DUOUT)!$D(DTOUT):-1,1:Y)
  1. I FBDIR=-1!(FBDIR="") G STARTX
  1. ;
  1. S DIR("A")="Enter host file name"
  1. S DIR("?")="Enter the name of the host file to upload"
  1. S DIR(0)="FO^3:60"
  1. D ^DIR K DIR
  1. S FBFILE=$S($D(DUOUT)!$D(DTOUT):-1,1:Y)
  1. I FBFILE=-1!(FBFILE="") G STARTX
  1. S FBX(FBFILE)="",Z=$$LIST^%ZISH(FBDIR,"FBX","FBY") K FBX,FBY
  1. I 'Z D G STARTX
  1. .W !!,"File "_FBFILE_" not found in directory "_FBDIR
  1. .S DIR(0)="E" D ^DIR
  1. .Q
  1. ; load data into global ^TMP("FBARCH",$J,n)
  1. W !!,"Loading data into temporary global..."
  1. S Z=$$FTG^%ZISH(FBDIR,FBFILE,$NA(^TMP("FBARCH",$J,1)),3)
  1. I 'Z D G STARTX
  1. .W !!,"Unable to load data from file "_FBDIR_FBFILE
  1. .S DIR(0)="E" D ^DIR
  1. .Q
  1. S FBTOT=$O(^TMP("FBARCH",$J,""),-1) ; total number of records in the file
  1. I 'FBTOT W "No records found." S DIR(0)="E" D ^DIR G STARTX
  1. W "Done."
  1. W !!,FBTOT," records found",!
  1. S DIR(0)="Y",DIR("B")="NO",DIR("A")="Do you wish to continue uploading ARCH eligibility data from this file"
  1. D ^DIR K DIR
  1. I Y'>0 G STARTX
  1. ; process records
  1. W !!,"Processing records..."
  1. S CNT=0,Z="" F S Z=$O(^TMP("FBARCH",$J,Z)) Q:'Z D
  1. .S FBDATA=$G(^TMP("FBARCH",$J,Z))
  1. .; get and validate DFN
  1. .S DFN=+$$GETDFN^MPIF001($P(FBDATA,U)) I DFN'>0 Q
  1. .; get and validate date
  1. .D DT^DILF("E",$P(FBDATA,U,2),.FBDATE) I FBDATE'>0 Q
  1. .S CNT=CNT+1 I CNT#10=0 W "."
  1. .; process record
  1. .D SETREC(DFN,FBDATE)
  1. .Q
  1. W "Done"
  1. W !!,CNT," records processed."
  1. W !,"Upload complete",!
  1. S DIR(0)="E" D ^DIR
  1. STARTX ;
  1. K ^TMP("FBARCH",$J)
  1. Q
  1. ;
  1. SETREC(DFN,FBDATE) ; create/update entry in file 161
  1. ; DFN - ien in file 2/file 161
  1. ; FBDATE - ARCH eligibility date
  1. N DA,DIC,DINUM,DLAYGO,IEN,X,Y
  1. ; add this patient to file 161 if there's no existing entry
  1. S IEN=$O(^FBAAA("B",DFN,""))
  1. I 'IEN K DO S (X,DINUM,DA)=DFN,DIC="^FBAAA(",DIC(0)="LM",DLAYGO=161 D FILE^DICN S IEN=+Y K DINUM
  1. ; update ARCH eligibility
  1. I $O(^FBAAA("ARCH",FBDATE,DFN,""))>0 Q ; ARCH eligibility record already exists
  1. K DA,DO
  1. S X=FBDATE,DA(1)=IEN,DLAYGO=161.011,DIC="^FBAAA("_IEN_",""ARCHFEE"",",DIC(0)="LM",DIC("DR")="2////1"
  1. D FILE^DICN
  1. Q
  1. ;
  1. ELIG(DFN,FBBDT,FBEDT,FBDATA) ;this function returns if pt is ARCH eligible or NOT
  1. ; input: = DFN - patient IEN (pointer to file #161)
  1. ; FBBDT - beginning dt
  1. ; FBEDT - ending dt
  1. ; output: FBDATA = 1 if eligible and FBDATA()=DFN^0 or 1^date of eligibility
  1. ; from most recent to the oldest
  1. ; FBDATA = 0 if not eligible
  1. ;
  1. N FBI,FBDAT,FBEL,FBHDT,FBCNT,FBELDT,FBSAV1,FBSAV2,FBJ
  1. S (FBHDT,FBEL,FBELDT,FBCNT,FBDATA)=0
  1. S FBBDT=$S(FBBDT>0:FBBDT,1:0)
  1. S FBEDT=$S(FBEDT>0:FBEDT,1:9999999)
  1. Q:(FBEDT<FBBDT) FBDATA
  1. Q:'$D(^FBAAA(DFN,"ARCHFEE")) FBDATA
  1. S FBI=$O(^FBAAA(DFN,"ARCHFEE","B"," "),-1)
  1. S FBJ=$O(^FBAAA(DFN,"ARCHFEE","B",FBI," "),-1),FBDAT=$G(^FBAAA(DFN,"ARCHFEE",FBJ,0))
  1. I (FBEDT=FBI)!(FBEDT>FBI) D
  1. .S FBEL=$P(FBDAT,U,2)
  1. .S FBCNT=FBCNT+1 S FBDATA(FBCNT)=FBEL_U_FBI,FBDATA=FBEL
  1. F S FBI=$O(^FBAAA(DFN,"ARCHFEE","B",FBI),-1) Q:FBI'>0 D
  1. .S FBJ=$O(^FBAAA(DFN,"ARCHFEE","B",FBI,0)),FBDAT=$G(^FBAAA(DFN,"ARCHFEE",FBJ,0))
  1. .Q:(FBEDT<FBI)
  1. .S FBEL=$P(FBDAT,U,2),FBCNT=FBCNT+1
  1. .S FBDATA(FBCNT)=FBEL_U_FBI
  1. ;
  1. S:$G(FBDATA(1)) FBDATA=$P(FBDATA(1),U)
  1. Q FBDATA
  1. ;
  1. LIST(FBBDT,FBEDT) ;this function returns a list of ARCH patients w/in the date range.
  1. ; input: = FBBGT - beginning dt
  1. ; FBEDT - ending dt
  1. ; output:= number of ARCH eligible pt and ^TMP($J,"ARCHFEE",#)=DFN^0 or 1^date of eligibility
  1. ; from the OLDEST to the MOST RECENT
  1. ; FBJ - internal entry number of file #161 which is DINUM to Patient File (2)
  1. N FBCOUNT,FBI,FBJ,FBEDAT,FBHDAT,FBELDA,FBELDT,FBEL,FBHDT,FBH,FBDFI
  1. K ^TMP($J,"ARCHFEE") S (FBI,FBCOUNT,FBELDT)=0
  1. Q:'$D(^FBAAA("ARCH")) FBCOUNT
  1. S FBBDT=$S(FBBDT>0:FBBDT,1:0)
  1. S FBEDT=$S(FBEDT>0:FBEDT,1:9999999)
  1. Q:(FBEDT<FBBDT) FBCOUNT
  1. F S FBI=$O(^FBAAA("ARCH",FBI)) Q:FBI="" D
  1. .F FBJ=0:0 S FBJ=$O(^FBAAA("ARCH",FBI,FBJ)) Q:FBJ'>0 D
  1. ..S FBDFI=$O(^FBAAA("ARCH",FBI,FBJ,0))
  1. ..S FBEDAT=$G(^FBAAA(FBJ,"ARCHFEE",FBDFI,0)),FBELDT=$P(FBEDAT,U)
  1. ..Q:(FBEDT<FBELDT)
  1. ..S FBCOUNT=FBCOUNT+1
  1. ..S ^TMP($J,"ARCHFEE",FBCOUNT)=FBJ_U_$P(FBEDAT,U,2)_U_FBELDT
  1. Q FBCOUNT
  1. ;
  1. PARSE(FB) ; parse - remove double quotes and trailing blanks if any
  1. N I,B
  1. Q:FB="" FB
  1. S:$E(FB,1)="""" FB=$E(FB,2,$L(FB))
  1. S:$E(FB,$L(FB))="""" FB=$E(FB,1,($L(FB)-1))
  1. Q:$E(FB,$L(FB))'=" " FB ; Last char is non-blank
  1. F I=$L(FB):-1:1 Q:$E(FB,I)'=" " S B=$E(FB,1,I-1)
  1. S FB=B
  1. Q FB
  1. ;
  1. GETDELAY() ; return the Project ARCH Reminder Delay - default is 1.
  1. N FBDELAY
  1. S FBDELAY=$P($G(^FBAA(161.4,1,"ARCH")),U)
  1. Q $S(FBDELAY]"":FBDELAY,1:1)
  1. ;
  1. SETDELAY ; Edit the Fee Basis Site Parameters for the Project ARCH Reminder Delay
  1. N DIE,DIC,DA,DR,FBPOP
  1. D SITEP^FBAAUTL Q:FBPOP
  1. W !! S DIE="^FBAA(161.4,",DIC(0)="AELQ",DA=1,DR="38//1" D ^DIE
  1. Q
  1. ;