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

ACHSRGPR.m

Go to the documentation of this file.
  1. ACHSRGPR ;IHS/OIT/FCJ - GPRA REPORT DOS VS DATE PO ISS
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**18**;JUN 11, 2001
  1. ;
  1. ;Auth end DOS used, if not available then Auth Beg DOS
  1. ST ;
  1. S ACHSIO=IO
  1. W !!,"This is a GPRA report to calculate the days between the Date of Service"
  1. W !,"and when the Purchase Order was issued. Date of Service is the estimated"
  1. W !,"End Date of Service, even if the document has been paid."
  1. W !!,"The Purchase Order will either be selected by Fiscal Year or the Date of"
  1. W !,"Service to fall within the Fiscal year Beginning and Ending date."
  1. W !!,"The report is selected and sorted by issue date."
  1. ;
  1. FY ; Select FY.
  1. S ACHSACFY=$$FYSEL^ACHS(1)
  1. G:$D(DTOUT)!$D(DUOUT) EXT
  1. I '$D(^ACHS(9,DUZ(2),"FY",ACHSACFY)) W !!,*7,"Fiscal year '",ACHSACFY,"' does not exist. -- TRY AGAIN" G FY
  1. FYDT ;BEG AND END DATES FOR THE FY, DOS >ACHSBFY OR <ACHSEFY
  1. I $P(^ACHSF(DUZ(2),0),U,7)=1 S ACHSBFY=ACHSACFY-1701_($P(^ACHSF(DUZ(2),0),U,6)-1),ACHSEFY=ACHSACFY-1700_($P(^ACHSF(DUZ(2),0),U,6)-1)
  1. E S ACHSBFY=ACHSACFY-1700_($P(^ACHSF(DUZ(2),0),U,6)-1),ACHSEFY=ACHSACFY-1699_($P(^ACHSF(DUZ(2),0),U,6)-1)
  1. ;
  1. BDT ; Enter beginning date.
  1. S ACHSBDT=$$DATE^ACHS("B","GPRA","")
  1. G EXT:$D(DUOUT)!$D(DTOUT)!(ACHSBDT<1)
  1. EDT ; Enter the ending date.
  1. S ACHSEDT=$$DATE^ACHS("E","GPRA","")
  1. G BDT:$D(DUOUT),EXT:$D(DTOUT)!(ACHSEDT<1),EDT:$$EBB^ACHS(ACHSBDT,ACHSEDT)
  1. DOS ; REPORT BY DOS WITHIN FY OR FY
  1. ; Enter FY or DOS
  1. S ACHSRTYD="F"
  1. S DIR(0)="S^F:Fiscal Year;D:Date of Service",DIR("B")="Fiscal Year",DIR("A")="Report PO's by "
  1. S DIR("?")="Report PO's by FY or by Date of service for sites that move money forward into one FY account."
  1. D ^DIR
  1. G EXT:$D(DUOUT),EXT:$D(DTOUT),EXT:$D(DIROUT)
  1. S ACHSRTYD=Y
  1. TYPE ; TYPE OF REPORT SUMARRY OR DETAILED
  1. ; Enter Summary or Detail
  1. S DIR(0)="S^S:SUMMARY;D:DETAILED",DIR("A")="Report Type ",DIR("B")="SUMMARY"
  1. S DIR("?")="Detail will display indiviual PO, Summary will display only the totals"
  1. D ^DIR
  1. G EXT:$D(DUOUT),EXT:$D(DTOUT),EXT:$D(DIROUT)
  1. S ACHSRTYP=Y
  1. DEV ; Select device for report.
  1. W !
  1. S %=$$PB^ACHS
  1. I %=U!$D(DTOUT)!$D(DUOUT) G EXT
  1. I %="B" D VIEWR^XBLM("CALC^ACHSRGPR"),EN^XBVK("VALM") G EXT
  1. K IOP,%ZIS
  1. S %ZIS="PQ"
  1. D ^%ZIS,SLV^ACHSFU:$D(IO("S"))
  1. K %ZIS
  1. I POP W !,*7,"No device specified." D HOME^%ZIS G EXT
  1. G:'$D(IO("Q")) CALC
  1. K IO("Q")
  1. I $E(IOST)'="P" W *7,!,"Please queue to printers only." G DEV
  1. S ZTIO="",ACHSQIO=ION_";"_IOST_";"_IOM_";"_IOSL,ZTRTN="CALC^ACHSRGPR",ZTDESC="CHS GPRA Report, "_ACHSRPT_", "_$$FMTE^XLFDT(ACHSBDT)_" to "_$$FMTE^XLFDT(ACHSEDT)
  1. F %="ACHSQIO","ACHSBDT","ACHSEDT","ACHSRTYP","ACHSACFY","ACHSEFY","ACHSBFY","ACHSRTYD" S ZTSAVE(%)=""
  1. D ^%ZTLOAD
  1. G:'$D(ZTSK) DEV
  1. ;
  1. ;end of interactive portion. The rest performed by Taskman
  1. ;
  1. ;
  1. CALC ;EP - TaskMan.
  1. D FC^ACHSUF
  1. I $D(ACHSERR),ACHSERR=1 G EXT
  1. S ACHSTRDT=ACHSBDT-1
  1. K ^TMP("ACHSRGPR",$J)
  1. S (^TMP("ACHSRGPR",$J,"TOTDOC"),^TMP("ACHSRGPR",$J,"TOTPDOC"),^TMP("ACHSRGPR",$J,"TOTADOC"))=0
  1. S (^TMP("ACHSRGPR",$J,"TOTDAY"),^TMP("ACHSRGPR",$J,"TOTPDAY"),^TMP("ACHSRGPR",$J,"TOTADAY"))=0
  1. ;
  1. TRDT ; Loop thru transaction date x-ref.
  1. F S ACHSTRDT=$O(^ACHSF(DUZ(2),"TB",ACHSTRDT)) Q:(ACHSTRDT>ACHSEDT)!(ACHSTRDT'?1N.N) D
  1. .; Loop thru transaction type
  1. .S ACHSTYPE=""
  1. .F S ACHSTYPE=$O(^ACHSF(DUZ(2),"TB",ACHSTRDT,ACHSTYPE)) Q:ACHSTYPE="" D
  1. ..Q:ACHSTYPE'="I"
  1. ..S DA=0
  1. ..F S DA=$O(^ACHSF(DUZ(2),"TB",ACHSTRDT,ACHSTYPE,DA)) Q:DA'?1N.N D
  1. ...Q:('$D(^ACHSF(DUZ(2),"D",DA,0)))!($P(^ACHSF(DUZ(2),"D",DA,0),U,12)=4) ;QUIT IF CANCELLED
  1. ...I ACHSRTYD="F" Q:ACHSACFY'=$P(^ACHSF(DUZ(2),"D",DA,0),U,27) ;IF REPORT BY FY TEST FOR FY
  1. ...S ACHSDOCN=$P(^ACHSF(DUZ(2),"D",DA,0),U),(X1,ACHSORDT)=$P(^(0),U,2)
  1. ...D DOSDT
  1. ...;S (X2,ACHSEDOS)=$S($P(^ACHSF(DUZ(2),"D",DA,3),U,2)'="":$P(^ACHSF(DUZ(2),"D",DA,3),U,2),1:$P(^ACHSF(DUZ(2),"D",DA,3),U))
  1. ...I ACHSRTYD="D" Q:(ACHSEDOS<ACHSBFY)!(ACHSEDOS>ACHSEFY) ;IF REPORT BY DOS TEST FOR DOS
  1. ...D ^%DTC
  1. ...S ACHSORDT=$E(ACHSORDT,4,5)_"/"_$E(ACHSORDT,6,7)_"/"_$E(ACHSORDT,2,3)
  1. ...S ACHSEDOS=$E(ACHSEDOS,4,5)_"/"_$E(ACHSEDOS,6,7)_"/"_$E(ACHSEDOS,2,3)
  1. ...I ACHSRTYP="D" D
  1. ....S ^TMP("ACHSRGPR",$J,ACHSDOCN)=$E(ACHSACFY,3,4)_"-"_ACHSFC_"-"_ACHSDOCN_U_ACHSEDOS_U_ACHSORDT
  1. ....I X>0 S $P(^TMP("ACHSRGPR",$J,ACHSDOCN),U,5)=X
  1. ....E S $P(^TMP("ACHSRGPR",$J,ACHSDOCN),U,4)=$FN(X,"-")
  1. ...I X>0 S ^TMP("ACHSRGPR",$J,"TOTADAY")=^TMP("ACHSRGPR",$J,"TOTADAY")+X,^("TOTADOC")=^("TOTADOC")+1
  1. ...E S ^TMP("ACHSRGPR",$J,"TOTPDAY")=^TMP("ACHSRGPR",$J,"TOTPDAY")+$FN(X,"-"),^("TOTPDOC")=^("TOTPDOC")+1
  1. ...S ^TMP("ACHSRGPR",$J,"TOTDOC")=^TMP("ACHSRGPR",$J,"TOTDOC")+1
  1. ...S ^TMP("ACHSRGPR",$J,"TOTDAY")=^TMP("ACHSRGPR",$J,"TOTDAY")+X
  1. D PRINT
  1. ;
  1. EXT ; Kill vars, close device, quit.
  1. I $D(IO("S")) X ACHSPPC
  1. E D ^%ZISC
  1. D EN^XBVK("ACHS"),^ACHSVAR:'$D(ZTQUEUED)
  1. K ^TMP("ACHSRGPR",$J)
  1. K DTOUT,DUOUT,ZTSK
  1. Q
  1. ;
  1. DOSDT ;FIND THE DOS TO USE
  1. ;TEST FOR PAID DOCUMENT, USE ACT DOS OR EST EDOS IF NOT DEFINED USE EST BEG DOS
  1. S X2=""
  1. I $P(^ACHSF(DUZ(2),"D",DA,0),U,12)=3 D
  1. .S T=0 F S T=$O(^ACHSF(DUZ(2),"D",DA,"T",T)) Q:T'?1N.N I $P(^ACHSF(DUZ(2),"D",DA,"T",T,0),U,2)="P" S (X2,ACHSEDOS)=$P(^(0),U,10) Q
  1. I X2="" S (X2,ACHSEDOS)=$S($P(^ACHSF(DUZ(2),"D",DA,3),U,2)'="":$P(^ACHSF(DUZ(2),"D",DA,3),U,2),1:$P(^ACHSF(DUZ(2),"D",DA,3),U)) ;EDOS="" use EST Beg DOS
  1. Q
  1. ;
  1. PRINT ;
  1. S ACHSVNDR="",ACHST1=$$C^XBFUNC("GPRA REPORT-AVERAGE DAYS BETWEEN PO ISSUE AND DOS")
  1. S ACHST2=$$C^XBFUNC("For the period "_$$FMTE^XLFDT(ACHSBDT)_" through "_$$FMTE^XLFDT(ACHSEDT)),X3=0
  1. D BRPT^ACHSFU
  1. X:$D(IO("S")) ACHSPPO
  1. D:ACHSRTYP="D" HDR,DET
  1. S ACHSRTYP="S" D HDR,SUM
  1. G EXT Q
  1. ;
  1. DET ;DETAILED REPORT
  1. S ACHSDOCN=""
  1. F S ACHSDOCN=$O(^TMP("ACHSRGPR",$J,ACHSDOCN)) Q:ACHSDOCN'?1N.N D Q:$D(DUOUT)!$D(DTOUT)
  1. .W !,$P(^TMP("ACHSRGPR",$J,ACHSDOCN),U),?19,$P(^(ACHSDOCN),U,2),?35,$P(^(ACHSDOCN),U,3),?51,$J($P(^(ACHSDOCN),U,4),5),?65,$J($P(^(ACHSDOCN),U,5),5)
  1. .I $Y>ACHSBM D RTRN^ACHS Q:$D(DUOUT)!$D(DTOUT) D HDR
  1. Q
  1. SUM ;SUMMARY REPORT
  1. ;
  1. W !!,"TOTAL Documents: ",$J(^TMP("ACHSRGPR",$J,"TOTDOC"),10)
  1. W !,"TOTAL Days: ",?18,$J(^TMP("ACHSRGPR",$J,"TOTDAY"),10)
  1. S ACHSAVG=0
  1. I ^TMP("ACHSRGPR",$J,"TOTDOC") S ACHSAVG=$S(^TMP("ACHSRGPR",$J,"TOTDOC")>0:^TMP("ACHSRGPR",$J,"TOTDAY")/^TMP("ACHSRGPR",$J,"TOTDOC"),1:0)
  1. W !,"Average Days: ",?18,$J(ACHSAVG,10,2),!
  1. W !!,"TOTAL Documents Prior or = to DOS: ",?37,$J(^TMP("ACHSRGPR",$J,"TOTPDOC"),10)
  1. W !,"TOTAL Days for Prior or = to DOS: ",?37,$J(^TMP("ACHSRGPR",$J,"TOTPDAY"),10)
  1. S ACHSAVG=0
  1. I ^TMP("ACHSRGPR",$J,"TOTPDOC")>0 S ACHSAVG=$S(^TMP("ACHSRGPR",$J,"TOTDOC")>0:^TMP("ACHSRGPR",$J,"TOTPDAY")/^TMP("ACHSRGPR",$J,"TOTPDOC"),1:0)
  1. W !,"Average Days Prior or = to DOS: ",?37,$J(ACHSAVG,10,2),!
  1. W !!,"TOTAL Documents After DOS: ",?28,$J(^TMP("ACHSRGPR",$J,"TOTADOC"),10)
  1. W !,"TOTAL Days After DOS: ",?28,$J(^TMP("ACHSRGPR",$J,"TOTADAY"),10)
  1. S ACHSAVG=0
  1. I ^TMP("ACHSRGPR",$J,"TOTADOC"),1>0 S ACHSAVG=$S(^TMP("ACHSRGPR",$J,"TOTDOC")>0:^TMP("ACHSRGPR",$J,"TOTADAY")/^TMP("ACHSRGPR",$J,"TOTADOC"),1:0)
  1. W !,"Average Days After DOS: ",?28,$J(ACHSAVG,10,2),!
  1. Q
  1. ;
  1. HDR ; Paginate.
  1. S ACHSPG=ACHSPG+1
  1. W @IOF,!!?19,"*** CONTRACT HEALTH MANAGEMENT SYSTEM ***",!,ACHSUSR,?71,"Page",$J(ACHSPG,3),!,ACHSLOC,!,ACHST1,!,ACHSTIME,!,ACHST2
  1. I ACHSRTYP="D" D
  1. .W !!,?50,"Days Prior",?64,"Days After"
  1. .W !,"PO Number",?16,"Date of Service",?33,"Date of Issue",?49,"or = to DOS",?67,"DOS"
  1. W !,$$REPEAT^XLFSTR("=",79),!
  1. Q