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