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

IVMADDRP.m

Go to the documentation of this file.
  1. IVMADDRP ;ALB/PHH,EG,ERC,BAJ,CKN - IVM ADDRESS UPLOAD LOG REPORT ; 7/11/06 4:36pm
  1. ;;2.0;INCOME VERIFICATION MATCH;**108,106,115**; 21-OCT-94;Build 28
  1. ;
  1. ; This routine list veterans who have had more than one address
  1. ; change in the past 90 days.
  1. ;
  1. N SDATE,EDATE,HDR,MSG,%ZIS,ZTRTN,ZTDESC,ZTSAVE,PAGE,ZTSK,ZTREQ,POP,X
  1. N BDT,U,DFN,SO
  1. S U="^",DFN="",SO=""
  1. S DOS=$$DOS
  1. I DOS="^" Q
  1. S X=$$ENDDATE
  1. I X="" Q
  1. S BDT=$P(X,"^",1)
  1. I DOS="D" D I DFN="" Q
  1. . S DFN=$$GETPAT
  1. . Q
  1. I DOS="S" S SO=$$SORTORD I SO="^" Q
  1. S (SDATE,EDATE,HDR)=""
  1. S EDATE=$$FMADD^XLFDT(BDT) I EDATE="" Q
  1. S SDATE=$$FMADD^XLFDT(EDATE,-90)
  1. ;
  1. ; Get report device. Queue report if requested
  1. S MSG(1)=""
  1. S MSG(2)="This report may take a long time to generate. It is recommended that the report"
  1. S MSG(3)="be queued to print."
  1. S MSG(4)=""
  1. D BMES^XPDUTL(.MSG)
  1. K IOP,%ZIS
  1. S %ZIS="MQ"
  1. D ^%ZIS I POP W !!,"Report Cancelled!" Q
  1. I $D(IO("Q")) D Q
  1. . S ZTRTN="START^IVMADDRP"
  1. . S ZTDESC="IVM Address Change Log Report"
  1. . S (ZTSAVE("PAGE"),ZTSAVE("SDATE"),ZTSAVE("EDATE"))=""
  1. . S (ZTSAVE("DOS"),ZTSAVE("DFN"),ZTSAVE("SO"))=""
  1. . D ^%ZTLOAD
  1. . W !!,"Report "_$S($D(ZTSK):"Queued!",1:"Cancelled!")
  1. . D HOME^%ZIS
  1. . Q
  1. D START,^%ZISC
  1. Q
  1. DOS() ;detail or summary
  1. N DIR,Y,X
  1. S DIR(0)="SA^D:Detail;S:Summary"
  1. S DIR("A")="Select Type of Report to Run: "
  1. D ^DIR
  1. Q Y
  1. ;
  1. GETPAT() ;get a patient
  1. N DIC,Y,X,U
  1. S DIC="^DPT(",DIC(0)="AEQZM" D ^DIC
  1. Q $S($P(Y,U,1)>0:$P(Y,U,1),1:"")
  1. ;
  1. ENDDATE() ;get an end date, default to TODAY
  1. N DIR,Y,X
  1. S DIR(0)="D^::EX",DIR("?")="^D HELP^%DTC",DIR("B")=$$FMTE^XLFDT(DT)
  1. S DIR("A")="Enter End Date of 90 Day Window: "
  1. D ^DIR
  1. Q $S('Y:"",1:Y)
  1. ;
  1. SORTORD() ;get sort order for summary
  1. N DIR,Y,X
  1. S DIR(0)="SA^S:Social Security Number;N:Name then SSN"
  1. S DIR("A")="What Order Do You Want to See Output: "
  1. D ^DIR
  1. Q Y
  1. ;
  1. START ; Generate Report
  1. N CRT,X
  1. K ^XTMP("IVMADDRP",$J)
  1. S CRT=$S($E(IOST,1,2)="C-":1,1:0)
  1. S X=$$BUILD(SDATE,EDATE,DOS,DFN,SO)
  1. U IO W ! D REPORT W ! U 0
  1. K ^XTMP("IVMADDRP",$J)
  1. I $G(ZTSK) S ZTREQ="@"
  1. Q
  1. BUILD(SDATE,EDATE,DOS,DFN,SO) ; Build the Report
  1. ;use C index if you are only looking for one DFN
  1. I $L(DFN) D C Q 1
  1. N CHDTTM
  1. S CHDTTM=SDATE
  1. F S CHDTTM=$O(^IVM(301.7,"B",CHDTTM)) Q:CHDTTM=""!(CHDTTM>(EDATE+1)) D ADDIEN
  1. Q 1
  1. ADDIEN ;
  1. N ADDIEN
  1. S ADDIEN=0
  1. F S ADDIEN=$O(^IVM(301.7,"B",CHDTTM,ADDIEN)) Q:ADDIEN="" D GETINF
  1. Q
  1. C N ADDIEN,CHDTTM
  1. S ADDIEN=""
  1. F S ADDIEN=$O(^IVM(301.7,"C",DFN,ADDIEN)) Q:ADDIEN="" D
  1. . S CHDTTM=$P($G(^IVM(301.7,ADDIEN,0)),"^",1)
  1. . I (CHDTTM>SDATE),(CHDTTM<(EDATE+1)) D GETINF
  1. . Q
  1. Q
  1. GETINF ;
  1. N NODE0,NODE1,DFN,SSN,NAME,ADDR1,ADDR2,CITY,STATE,ZIP,SORT1,SORT2,U
  1. N SOURCE,SIEN,SITE,PROV,PCODE,COUNTRY,DGBAI,BAI,ADDR3,NODE2
  1. S U="^",SITE=""
  1. S NODE0=$G(^IVM(301.7,ADDIEN,0))
  1. S NODE1=$G(^IVM(301.7,ADDIEN,1))
  1. S NODE2=$G(^IVM(301.7,ADDIEN,2))
  1. S DFN=$P(NODE0,"^",2)
  1. Q:DFN=""
  1. Q:'$D(^DPT(DFN))
  1. S SSN=$P($G(^DPT(DFN,0)),"^",9)
  1. Q:SSN=""
  1. S NAME=$P($G(^DPT(DFN,0)),"^",1)
  1. S SOURCE=$P(NODE1,"^",4),SIEN=$P(NODE1,"^",3)
  1. I SIEN S SITE=$P($G(^DIC(4,SIEN,0)),"^",1)
  1. S ADDR1=$P(NODE1,"^",6)
  1. S ADDR2=$P(NODE1,"^",7)
  1. S ADDR3=$P(NODE2,"^",1)
  1. S CITY=$P(NODE1,"^",8)
  1. S STATE=$P(NODE1,"^",10)
  1. I STATE'="",$D(^DIC(5,STATE,0)) S STATE=$P(^DIC(5,STATE,0),"^",2)
  1. S ZIP=$P(NODE1,"^",11)
  1. S PROV=$P(NODE1,"^",12)
  1. S PCODE=$P(NODE1,"^",13)
  1. S COUNTRY=$P(NODE1,"^",14)
  1. I COUNTRY'="",$D(^HL(779.004,"B",COUNTRY,0)) S COUNTRY=$$CNTRYI^DGADDUTL(COUNTRY)
  1. I COUNTRY=-1 S COUNTRY="UNKNOWN COUNTRY"
  1. S DGBAI=$P(NODE1,"^",15)
  1. S BAI=$S(DGBAI=1:"UNDELIVERABLE",DGBAI=2:"HOMELESS",DGBAI=3:"OTHER",DGBAI=4:"ADDRESS NOT FOUND",1:"")
  1. I DOS="D" D Q
  1. . S ^XTMP("IVMADDRP",$J,SSN,CHDTTM)=ADDIEN_"^"_DFN_"^"_NAME_"^"_ADDR1_"^"_ADDR2_"^"_CITY_"^"_STATE_"^"_ZIP_"^"_SOURCE_"^"_SITE_"^"_PROV_"^"_PCODE_"^"_COUNTRY_"^"_BAI_"^"_ADDR3
  1. . S ^XTMP("IVMADDRP",$J,SSN)=$G(^XTMP("IVMADDRP",$J,SSN))+1
  1. . Q
  1. I DOS="S" D
  1. . S SORT1=$S(SO="S":SSN,1:NAME) I NAME="" S SORT1="UNKNOWN"
  1. . S SORT2=$S(SO="S":0,1:SSN)
  1. . S ^XTMP("IVMADDRP",$J,SORT1,SORT2,"INF")=NAME_U_SSN
  1. . S ^XTMP("IVMADDRP",$J,SORT1,SORT2,"DATE",CHDTTM)=""
  1. . S ^XTMP("IVMADDRP",$J,SORT1,SORT2)=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2))+1
  1. . Q
  1. Q
  1. REPORT ; Display the Report
  1. D HEADER
  1. I '$D(^XTMP("IVMADDRP",$J)) D Q
  1. . N X S X="****** NOTHING TO REPORT ******" W !?80-$L(X)\2,X,!
  1. . Q
  1. I DOS="S" D SUMMARY Q
  1. N SSN
  1. ;
  1. S SSN=""
  1. F S SSN=$O(^XTMP("IVMADDRP",$J,SSN)) Q:SSN="" D DETAIL
  1. Q
  1. DETAIL N NAME,CHDTTM,ADDR,ADDR2,CITY,STATE,ZIP,CSZ
  1. N ADDR1,ADDR2,X,U,QUIT,CNT,SITE,SOURCE,DGCNTRY,DGFOR,ADDR3,BAI
  1. S CHDTTM="",U="^",QUIT=0,CNT=0
  1. I $G(^XTMP("IVMADDRP",$J,SSN))'>1 Q
  1. F S CHDTTM=$O(^XTMP("IVMADDRP",$J,SSN,CHDTTM)) Q:CHDTTM=""!(QUIT) D
  1. . S X=$G(^XTMP("IVMADDRP",$J,SSN,CHDTTM))
  1. . S NAME=$P(X,U,3)
  1. . S ADDR1=$P(X,U,4)
  1. . S ADDR2=$P(X,U,5)
  1. . S ADDR3=$P(X,U,15)
  1. . S CITY=$P(X,U,6)
  1. . S STATE=$P(X,U,7)
  1. . S ZIP=$P(X,U,8)
  1. . S SOURCE=$P(X,U,9)
  1. . S SITE=$P(X,U,10)
  1. . S PROV=$P(X,U,11)
  1. . S PCODE=$P(X,U,12)
  1. . S COUNTRY=$P(X,U,13)
  1. . S BAI=$P(X,U,14)
  1. . S DGCNTRY=$$CNTRYI^DGADDUTL(COUNTRY)
  1. . S DGFOR=$$FORIEN^DGADDUTL(COUNTRY)
  1. . I DGFOR=-1 S DGCNTRY="UNKNOWN COUNTRY" S DGFOR=1
  1. . I ($Y+6)>IOSL D HEADER I QUIT Q
  1. . W !,$$FSSN(SSN),?12,$E(NAME,1,20)
  1. . W ?35,$$FMTE^XLFDT($P(CHDTTM,".",1))
  1. . I DGFOR=0 S CSZ=$$CSZ(CITY,STATE,ZIP)
  1. . I DGFOR=1 S CSZ=$$PCP(PCODE,CITY,PROV)
  1. . W ?49,$E(ADDR1,1,30),!
  1. . I $L(ADDR2) W ?49,$E(ADDR2,1,30),!
  1. . I $L(ADDR3) W ?49,$E(ADDR3,1,30),!
  1. . I $L(CSZ) W ?49,$E(CSZ,1,30),!
  1. . I $L(DGCNTRY) W ?49,$E(DGCNTRY,1,30),!
  1. . I $L(SOURCE) W ?49,"SOURCE: ",SOURCE,!
  1. . I $L(SITE) W ?49,"SITE: ",SITE
  1. . I $L(BAI) W !?49,"BAI: ",BAI
  1. . S CNT=CNT+1
  1. . Q
  1. I 'QUIT D TOTAL(CNT)
  1. Q
  1. SUMMARY N SORT1,QUIT,CNT
  1. S SORT1="",QUIT=0,CNT=0
  1. F S SORT1=$O(^XTMP("IVMADDRP",$J,SORT1)) Q:SORT1=""!(QUIT) D SORT2
  1. I 'QUIT D TOTAL(CNT)
  1. Q
  1. SORT2 N NAME,SSN
  1. S SORT2=""
  1. F S SORT2=$O(^XTMP("IVMADDRP",$J,SORT1,SORT2)) Q:SORT2=""!(QUIT) D
  1. . I $G(^XTMP("IVMADDRP",$J,SORT1,SORT2))'>1 Q
  1. . D SUMPR S CNT=CNT+1
  1. . Q
  1. Q
  1. SUMPR N X,U
  1. S U="^"
  1. S X=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2,"INF"))
  1. S NAME=$P(X,U,1),SSN=$P(X,U,2)
  1. I ($Y+2)>IOSL D HEADER I QUIT Q
  1. W !,$$FSSN(SSN),?12,$E(NAME,1,20)
  1. W ?35,$$FMTE^XLFDT($O(^XTMP("IVMADDRP",$J,SORT1,SORT2,"DATE",""),-1))
  1. S X=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2))
  1. W ?73,$J($FN(X,","),5)
  1. Q
  1. TOTAL(CNT) ;
  1. I ($Y+2)>IOSL D HEADER
  1. W !!,"Total records found meeting criteria: ",CNT,!
  1. Q
  1. CSZ(CITY,STATE,ZIP) ;format city, state and zip into one line
  1. N X
  1. S X=""
  1. I $L(CITY) S X=CITY
  1. I $L(STATE) D
  1. . I $L(X) S X=X_", "_STATE Q
  1. . S X=STATE
  1. . Q
  1. I $L(ZIP) D
  1. . I $L(X) S X=X_" "_ZIP Q
  1. . S X=ZIP
  1. . Q
  1. Q X
  1. PCP(PCODE,CITY,PROV) ;format postal code, city, province for foreign address
  1. N X
  1. S X=""
  1. I $L(PCODE) S X=PCODE
  1. I $L(CITY) D
  1. . I $L(X) S X=X_" "_CITY Q
  1. . S X=CITY
  1. .Q
  1. I $L(PROV) D
  1. . I $L(X) S X=X_" "_PROV Q
  1. . S X=PROV
  1. . Q
  1. Q X
  1. FSSN(SSN) ; Format the SSN
  1. N FMTSSN
  1. I SSN="NO SSN" Q SSN
  1. I $L(SSN)=9 S FMTSSN=SSN
  1. I $L(SSN)>9 S FMTSSN=$E(SSN,1,10) ; Account for pseudo-SSN
  1. I $L(SSN)<9 D
  1. . S FMTSSN=""
  1. . F FMTSSN=$L(SSN):1:9 S FMTSSN=FMTSSN_"0"
  1. . S FMTSSN=FMTSSN_SSN
  1. . Q
  1. Q FMTSSN
  1. N IDX,PGHDR
  1. S QUIT=0
  1. I $G(CRT),($G(PAGE)>0) I $$PAUSE(0) S QUIT=1 Q
  1. S PAGE=$G(PAGE,0),PAGE=PAGE+1,PGHDR="Page: "_$J(PAGE,3)
  1. W #
  1. I $G(CRT) W $C(27,91,72,27,91,74) ; Additional $C to clear screen in Cache'
  1. S IDX="",IDX=$O(HDR(IDX))
  1. W "IVM ADDRESS CHANGE LOG REPORT",?71,PGHDR
  1. W !,$$FMTE^XLFDT(SDATE)_" THRU "_$$FMTE^XLFDT(EDATE)
  1. I DOS="D" D
  1. . W !!,"SSN",?12,"NAME",?35,"CHANGE DATE",?49,"PRIOR ADDRESS"
  1. . W !,"---",?12,"----",?35,"-----------",?49,"--------------"
  1. . Q
  1. I DOS="S" D
  1. . W !!,"SSN",?12,"NAME",?35,"LAST UPDATED",?69,"# ENTRIES"
  1. . W !,"---",?12,"----",?35,"------------",?69,"---------"
  1. . Q
  1. Q
  1. PAUSE(RESP) ; Prompt user for next page or quit
  1. N DIR,DIRUT,DUOUT,DTOUT,U,X,Y
  1. W !
  1. S DIR(0)="E"
  1. D ^DIR
  1. I 'Y S RESP=1
  1. Q RESP