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

AGSSSMR2.m

Go to the documentation of this file.
  1. AGSSSMR2 ;IHS/ASDS/SDH - SSA/SSN Matching Report ;
  1. ;;7.1;PATIENT REGISTRATION;;AUG 25,2005
  1. ;
  1. ;Changed all references of ^AGSSTEMP to ^AGSSTMP1
  1. ;
  1. ;This routine does NOT process records from SSA. This report
  1. ;simply goes through file, sorting by verification code in the
  1. ;file and generates a report. This routine does the output. See
  1. ;AGSSSMR1 for loading of data in global.
  1. ;
  1. S ;EP - START
  1. N AGSSPICK
  1. S AGSSFLAG=0
  1. N AGCOUNT,AGSSPG
  1. S AGSSPG=1
  1. D HOME^%ZIS
  1. S AGSSUFAC=$P(^AUTTLOC(AGSSITE,0),"^",10)
  1. S DIR("A")="Output to printer or file? "
  1. S DIR("B")="printer"
  1. S DIR("?")="File will be delimited for Excel or Access; Printer will be to screen/device"
  1. S DIR(0)="S^P:PRINTER;F:FILE"
  1. D ^DIR S AGSSPICK=Y
  1. I AGSSPICK["^" S AGQUIT=1
  1. I AGSSPICK["F" D OUTFILE
  1. I AGSSPICK["P" D OUTFILE2
  1. D EXIT
  1. Q
  1. QUE ;que to taskman
  1. S ZTRTN="PROC^AZHTAGSS"
  1. S ZTDESC="SSN Matching Report"
  1. S ZTIO=ION_";"_IOST_";"_IOM_";"_IOSL
  1. S ZTSAVE("AGSS*")=""
  1. G OUTFILE2
  1. Q
  1. OUTFILE ;setup for printing to file
  1. S AGEXT=+$G(^AGSSTMP1("REPORT#"))
  1. I AGEXT=0 S ^AGSSTMP1("REPORT#")=1,AGEXT=1
  1. E S ^AGSSTMP1("REPORT#")=AGEXT+1
  1. S AGSSHFL2="ss"_AGSSUFAC_"_"_$G(AGEXT)_".txt"
  1. W !!,"Output File: ",AGSSHFL2,!
  1. S DIR(0)="F"
  1. S DIR("A")="Enter directory for file: "
  1. S DIR("B")="/usr/spool/uucppublic/"
  1. D ^DIR S AGSSP2=Y
  1. Q:AGSSP2["^"
  1. I "\/"'[$E(AGSSP2) D
  1. .S:^%ZOSF("OS")["UNIX" AGSSP2="/"_AGSSP2 Q
  1. .S AGSSP2="\"_AGSSP2
  1. I "\/"'[$E(AGSSP2,$L(AGSSP2)) D
  1. .S:^%ZOSF("OS")["UNIX" AGSSP2=AGSSP2_"/" Q
  1. .S AGSSP2=AGSSP2_"\"
  1. U 0 W !,"WRITING FILE...."
  1. D OPEN^%ZISH("SSNFILE",AGSSP2,AGSSHFL2,"W")
  1. U IO
  1. D PRINT
  1. D CLOSE^%ZISH("SSNFILE")
  1. Q
  1. OUTFILE2 ;setup for output to device
  1. N IO
  1. S ZTRTN="PRINT2^AGSSSMR2"
  1. S ZTDESC="SSN Matching Report"
  1. S ZTSAVE("AGSS*")=""
  1. S %ZIS="Q"
  1. D ^%ZIS
  1. Q:POP
  1. I $D(IO("Q")) D Q
  1. .K IO("Q")
  1. .S ZTIO=ION_";"_IOST_";"_IOM_";"_IOSL
  1. .D ^%ZTLOAD
  1. .W !,"TASK #",$G(ZTSK)," QUEUED"
  1. E D @ZTRTN
  1. Q
  1. PROC ;start processing
  1. K AGSSCNT
  1. PRINT ;prints to comma-delimited file
  1. S AGSSHDR="Report for SSA SSN Matching Application" D AGSSHDR
  1. I $D(AGSS("NORUN")) W !,"NO RUN SET SO ... NO REPORT",! Q
  1. W !,"Total Records in file from NPIRS/SSA",?40,$G(^AGSSTMP1(AGSSITE,0,"COUNTS","TOT")),?55,"for "_$S($P($G(^AUTTLOC(AGSSITE,0)),U,2)'="":$P(^AUTTLOC(AGSSITE,0),U,2),1:"ASUFAC#"_AGSSITE)
  1. S (AGSSBGT,%H)=$G(^AGSSTMP1(AGSSITE,0,"BEGIN-TIME")) D YX^%DTC
  1. W !,"Starting Time",?40,Y
  1. S (AGSSFNT,%H)=$G(^AGSSTMP1(AGSSITE,0,"END-DELTRAN")) D YX^%DTC
  1. W !,"Ending Time",?40,Y
  1. S AGSSDAY=(AGSSFNT/1)-(AGSSBGT/1)*24*60*60,AGSSSEC=AGSSDAY+($P(AGSSFNT,",",2))-($P(AGSSBGT,",",2)),AGSSMIN=AGSSSEC\60
  1. I AGSSMIN<1 S AGSSMIN=1
  1. W !,"Processing Time",?50,AGSSMIN," minutes"
  1. S T="^"
  1. S AGSSC=""
  1. S (AGSSUFAC,AGSSCVC,AGSSHRN)=""
  1. F S AGSSUFAC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC)) Q:AGSSUFAC="" D
  1. .F S AGSSCVC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC)) Q:AGSSCVC="" D
  1. ..Q:AGSSCVC="TOT"
  1. ..Q:($G(AGACCTS))'[AGSSCVC
  1. ..D VCHDR
  1. ..F S AGSSHRN=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN)) Q:AGSSHRN="" D
  1. ...F S AGSSC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN,AGSSC)) Q:AGSSC="" D
  1. ....S AGSSREC=$G(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN,AGSSC))
  1. ....S AGSS1SSN=$P(AGSSREC,U,3)
  1. ....S AGSSLN=$P(AGSSREC,U,4)
  1. ....S AGSSFN=$P(AGSSREC,U,5)
  1. ....S AGSSMN=$P(AGSSREC,U,6)
  1. ....S AGSSDOB=$P(AGSSREC,U,7)
  1. ....S AGSSDOB=$E(AGSSDOB,5,6)_"/"_$E(AGSSDOB,7,8)_"/"_$E(AGSSDOB,1,4)
  1. ....S AGSSSEX=$P(AGSSREC,U,8)
  1. ....U IO W !,AGSS1SSN_T_AGSSLN_T_AGSSFN_T_AGSSMN_T_AGSSDOB_T_AGSSSEX_T_AGSSCVC_T_AGSSHRN
  1. Q
  1. PRINT2 ;prints to device
  1. S (AGSSUFAC,AGSSCVC,AGSSHRN)=""
  1. S AGSSC=""
  1. S AGSSHDR="Report for SSA SSN Matching Application" D AGSSHDR
  1. I $D(AGSS("NORUN")) W !,"NO RUN SET SO ... NO REPORT",! Q
  1. U IO W !,"Total Records in file from NPIRS/SSA",?40,$G(^AGSSTMP1(AGSSITE,0,"COUNTS","TOT")),?55,"for "_$S($P($G(^AUTTLOC(AGSSITE,0)),U,2)'="":$P(^AUTTLOC(AGSSITE,0),U,2),1:"ASUFAC#"_AGSSITE)
  1. S (AGSSBGT,%H)=$G(^AGSSTMP1(AGSSITE,0,"BEGIN-TIME")) D YX^%DTC
  1. W !,"Starting Time",?40,Y
  1. S (AGSSFNT,%H)=$G(^AGSSTMP1(AGSSITE,0,"END-DELTRAN")) D YX^%DTC
  1. U IO W !,"Ending Time",?40,Y
  1. S AGSSDAY=(AGSSFNT/1)-(AGSSBGT/1)*24*60*60,AGSSSEC=AGSSDAY+($P(AGSSFNT,",",2))-($P(AGSSBGT,",",2)),AGSSMIN=AGSSSEC\60
  1. I AGSSMIN<1 S AGSSMIN=1
  1. U IO W !,"Processing Time",?50,AGSSMIN," minutes"
  1. S AGCOUNT=AGCOUNT+4
  1. S AGSSFLAG=1
  1. F S AGSSUFAC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC)) Q:AGSSUFAC="" D Q:X["^"
  1. .F S AGSSCVC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC)) Q:AGSSCVC="" D Q:X["^"
  1. ..Q:AGSSCVC="TOT"
  1. ..Q:($G(AGACCTS))'[AGSSCVC
  1. ..D VCHDR
  1. ..F S AGSSHRN=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN)) Q:AGSSHRN="" D Q:X["^"
  1. ...F S AGSSC=$O(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN,AGSSC)) Q:AGSSC="" D Q:X["^"
  1. ....S AGSSREC=$G(^AGSSTMP1(AGSSITE,"RECS",AGSSUFAC,AGSSCVC,AGSSHRN,AGSSC))
  1. ....S AGSS1SSN=$P(AGSSREC,U,3)
  1. ....S AGSSLN=$P(AGSSREC,U,4)
  1. ....S AGSSFN=$P(AGSSREC,U,5)
  1. ....S AGSSMN=$P(AGSSREC,U,6)
  1. ....S AGSSDOB=$P(AGSSREC,U,7)
  1. ....S AGSSDOB=$E(AGSSDOB,5,6)_"/"_$E(AGSSDOB,7,8)_"/"_$E(AGSSDOB,1,4)
  1. ....S AGSSSEX=$P(AGSSREC,U,8)
  1. ....U IO W !,?2,AGSS1SSN,?13,AGSSLN,?28,AGSSFN,?39,AGSSMN,?51,AGSSDOB,?64,AGSSSEX,?68,AGSSCVC,?71,AGSSHRN
  1. ....S AGCOUNT=$G(AGCOUNT)+1
  1. ....I $G(IOST)["C",(AGCOUNT>IOSL) D
  1. .....I '$D(ZTQUEUED) U 0 K DIR S DIR(0)="E" D ^DIR K DIR
  1. .....Q:X["^"
  1. .....D AGSSHDR,COLHDR
  1. ....E D
  1. .....I AGCOUNT>IOSL D AGSSHDR,COLHDR
  1. I '$D(ZTQUEUED),(X'["^") U 0 K DIR S DIR(0)="E" D ^DIR K DIR
  1. W !!!,"*** END OF REPORT ***"
  1. S DIR(0)="E"
  1. S DIR("A")="ENTER RETURN TO CONTINUE"
  1. D ^DIR K DIR
  1. I $G(IOST)'["C" D CLOSE^%ZISH("SSNFILE")
  1. Q
  1. VCHDR ;header for each error code
  1. U IO W !," ============================================================"
  1. I AGSSCVC="V" D
  1. .U IO W !!,?3,"VC=V: VERIFIED SSNs - ",^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)," Records",!
  1. I AGSSCVC="1" D
  1. .U IO W !!,?3,"VC=1: SSNs not in file",!,?5,"(impossible number/never issued to anyone/no SSN) - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="2" D
  1. .U IO W !!,?3,"VC=2: Name and DOB match, sex code doesn't - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records",!
  1. I AGSSCVC="3" D
  1. .U IO W !!,?3,"VC=3: Name and sex match, DOB doesn't - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records",!
  1. I AGSSCVC="4" D
  1. .U IO W !!,?3,"VC=4: Name matches, sex and DOB don't - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records",!
  1. I AGSSCVC="5" D
  1. .U IO W !!,?3,"VC=5: Name doesn't match, DOB and sex not checked - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records",!
  1. I AGSSCVC="*" D
  1. .U IO W !!,?3,"VC=*: SSN not verified;",!,?5,"SSA located different SSN based on name/DOB- "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="A" D
  1. .U IO W !!,?3,"VC=A: SSN not verified;",!,?5,"SSA found different SSN matched on Name/DOB - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="B" D
  1. .U IO W !!,?3,"VC=B: SSN not verified",!,?35,"SSA found different SSN matching on name only - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="C" D
  1. .U IO W !!,?3,"VC=C: SSN not verified;",!,?5,"Multiple SSNs found matching on name/DOB - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="D" D
  1. .U IO W !!,?3,"VC=D: SSN not verified;",!,?5,"Multiple SSNs found matching on name only - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. I AGSSCVC="E" D
  1. .U IO W !!,?3,"VC=E: SSN not verified;",!,?5,"SSA found multiple matches for SSN - "_^AGSSTMP1(AGSSITE,0,"COUNTS",AGSSCVC)_" Records"
  1. D COLHDR
  1. S AGCOUNT=AGCOUNT+4
  1. Q
  1. COLHDR ;
  1. I AGSSPICK["F" U IO W !!,"SSN"_T_"Last Name"_T_"First Name"_T_"Middle Name"_T_"DOB"_T_"Sex"_T_"VC"_T_"HRN"
  1. I AGSSPICK["P" U IO W !!,?2,"SSN",?13,"Last Name",?28,"First Name",?39,"Middle Name",?51,"DOB",?64,"Sex",?68,"VC",?71,"HRN"
  1. S AGCOUNT=$G(AGCOUNT)+2
  1. Q
  1. EXIT D ^%ZISC
  1. K AGSSHFL,AGSSQ,AGSSREC,AGSSVC,AGSSHRN,AGSSDOB,AGSSSEX
  1. K AGHDDR,AGSBGTM,AGSCREC,AGSITE,AGSS1SSN,AGSS2SSN,AGSSBGT,AGSSC
  1. K AGSSCNT,AGSSCVC,AGSSDAY,AGSSFIO,AGSSFN,AGSSFNT,AGSSLN,AGSSMIN
  1. K AGSSMN,AGSSPATH,AGSSRTOT,AGSSSEC,AGSSUFAC,AGSSPICK
  1. K AG,AGK
  1. Q
  1. AGSSPG ;EP - PAGE HANDLER
  1. Q:($Y<(IOSL-4))!($G(DOUT)!$G(DFOUT)) S:'$D(AGSSPG) AGSSPG=0 S AGSSPG=AGSSPG+1 I $E(IOST)="C" R !,"^ to quit ",X:DTIME I $E(X)="^" S DOUT=1,DFOUT=1,AGCOUNT=AGCOUNT+1 Q
  1. AGSSHDR ;EP - PAGE HEADER HANDLER
  1. I AGSSPG'=1 U IO W !!
  1. U IO W ! Q:'$D(AGSSHDR) S:'$D(AGSSLINE) $P(AGSSLINE,"-",IOM-2)="" S:'$D(AGSSPG) AGSSPG=1 I '$D(AGSSDT) D DT^DICRW S Y=DT D DD^%DT S AGSSDT=Y
  1. W ?(IOM-20-$L(AGSSHDR)/2),AGSSHDR,?(IOM-25),AGSSDT,?(IOM-10),"PAGE: ",AGSSPG,!,AGSSLINE
  1. I AGSSPG'=1 S AGCOUNT=3 ;5
  1. E S AGCOUNT=3
  1. S AGSSPG=AGSSPG+1
  1. EAGSSPG Q
  1. STOP ;EP - to stop background processing
  1. S ^AGSSTMP1(AGSSITE,0,"STOP")=1
  1. Q