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

ACHSDNA.m

Go to the documentation of this file.
  1. ACHSDNA ; IHS/ITSC/PMF - DENIAL LIST ALPHA BY PATIENT ;7/27/10 16:17
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**1,6,18**;JUNE 11, 2001
  1. ;;ACHS*3.1*1; make call to ACHSDNI into call to ACHSDNA
  1. ;;ACHS*3.1*6; Add close device
  1. ;ACHS*3.1*18 4/1/2010;IHS/OIT/ABK;Change every occurrance of Deferred to Unmet Need
  1. ;
  1. K X2,X3
  1. A2 ;
  1. S %=$$DIR^ACHS("Y","ALL DENIALS","YES","Enter 'YES' for all denials or 'NO' to select a date range.","",2)
  1. I $D(DUOUT)!$D(DTOUT) Q
  1. I % S ACHDBDT=1,ACHDEDT=9999999 G B
  1. BDT ; --- Input date range
  1. S ACHDBDT=$$DATE^ACHS("B","DENIAL LIST BY PATIENT")
  1. G:ACHDBDT<1 A2
  1. S ACHDEDT=$$DATE^ACHS("E","DENIAL LIST BY PATIENT")
  1. G:ACHDEDT<1 BDT
  1. I $$EBB^ACHS(ACHDBDT,ACHDEDT) G A2
  1. B ;
  1. S ACHDHAT=""
  1. DEV ; --- Select device for report.
  1. S %ZIS="OPQ"
  1. D ^%ZIS
  1. I POP D HOME^%ZIS Q
  1. G:'$D(IO("Q")) START
  1. K IO("Q")
  1. I $D(IO("S"))!($E(IOST)'="P") W *7,!,"Please queue to system printers." D ^%ZISC G DEV
  1. ;
  1. ;11/26/01 pmf replace next line to call ACHSDNA, not DNI ACHS*3.1*1
  1. ;S ZTRTN="START^ACHSDNI",ZTDESC="CHS Denial Documents "_(ACHDBDT+17000000)_" to "_(ACHDEDT+17000000) ; ACHS*3.1*1
  1. S ZTRTN="START^ACHSDNA",ZTDESC="CHS Denial Documents "_(ACHDBDT+17000000)_" to "_(ACHDEDT+17000000) ; ACHS*3.1*1
  1. ;
  1. F %="ACHDBDT","ACHDEDT" S ZTSAVE(%)=""
  1. D ^%ZTLOAD
  1. G:'$D(ZTSK) DEV
  1. K ZTSK
  1. Q
  1. ;
  1. START ;EP - TaskMan.
  1. K ^TMP($J,"ACHSDNA")
  1. S ACHDISU=ACHDBDT-1
  1. S (ACHDTOT("$"),ACHDTOT)=0
  1. S ACHDT1=$$C^ACHS($S(ACHDBDT=1:"*** ALL DENIALS ***",1:"For the period "_$$FMTE^XLFDT(ACHDBDT)_" through "_$$FMTE^XLFDT(ACHDEDT)))
  1. D BRPT^ACHS
  1. D HDR
  1. D EXTR
  1. D PRINT
  1. ;IHS/SET/JVK ACHS*3.1*6 - ADD LINE BELOW TO CLOSE DEVICE
  1. D ERPT^ACHS
  1. K ACHDISU,ACHDNAME,ACHDTOT,DA,^TMP($J,"ACHSDNA")
  1. Q
  1. ;
  1. EXTR ;
  1. F S ACHDISU=$O(^ACHSDEN(DUZ(2),"D","AISSUE",ACHDISU)) Q:ACHDISU="" Q:(ACHDISU>ACHDEDT) D
  1. . S DA=0 F S DA=$O(^ACHSDEN(DUZ(2),"D","AISSUE",ACHDISU,DA)) Q:'DA D
  1. .. S ACHD0=$G(^ACHSDEN(DUZ(2),"D",DA,0)) I ACHD0="" Q
  1. .. ;if cancelled, stop
  1. .. I $P(ACHD0,U,8)="Y" Q
  1. .. I $E(ACHD0)="#" Q
  1. .. D GETNAME
  1. .. I ACHDNAME="" Q
  1. .. S ^TMP($J,"ACHSDNA",ACHDNAME,DA)=""
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. PRINT ;
  1. S ACHDNAME="" F S ACHDNAME=$O(^TMP($J,"ACHSDNA",ACHDNAME)) Q:ACHDNAME=""!$G(ACHSQUIT) D
  1. . S DA=0 F S DA=$O(^TMP($J,"ACHSDNA",ACHDNAME,DA)) Q:DA=""!$G(ACHSQUIT) D
  1. .. S ACHD0=^ACHSDEN(DUZ(2),"D",DA,0)
  1. .. S ACHDISU=$P(ACHD0,U,2)
  1. .. S ACHD("$")=""
  1. .. I $D(^ACHSDEN(DUZ(2),"D",DA,100)) D DOLLARS
  1. .. W ACHDNAME,?38,$$FMTE^XLFDT(ACHDISU),?51,$P(ACHD0,U),?65
  1. .. S X=ACHD("$"),X2=2,X3=12
  1. .. D FMT^ACHS
  1. .. W !
  1. .. I $Y>ACHSBM D I $G(ACHSQUIT) Q
  1. ... D RTRN^ACHS
  1. ... I $D(DUOUT)!$D(DTOUT)!$G(ACHSQUIT) D ERPT^ACHS S ACHSQUIT=1 Q
  1. ... D HDR
  1. ... Q
  1. .. S ACHDTOT=ACHDTOT+1
  1. .. S ACHDTOT("$")=ACHDTOT("$")+ACHD("$")
  1. .. Q
  1. . Q
  1. ;
  1. I $G(ACHSQUIT) Q
  1. ;
  1. S X=ACHDTOT("$"),X2="2$",X3=16
  1. D COMMA^%DTC
  1. W !,$$REPEAT^XLFSTR("=",79),!,"TOTALS FOR THIS REPORT: ",ACHDTOT," DENIAL",$S(ACHDTOT=1:"",1:"S"),?61,X
  1. K ACHDHAT
  1. I IO(0)=IO D RTRN^ACHS
  1. W @IOF
  1. Q
  1. ;
  1. GETNAME ;
  1. ;get the name and format it. default is null
  1. ;
  1. S ACHDNAME=""
  1. ;if patient is not registered, then get the name from denial
  1. ;formatting is simple, but will fail on complicated names
  1. ;the forms we look for are
  1. ; LAST,FIRST (MIDDLE OPTIONAL)
  1. ; FIRST LAST
  1. ; FIRST MIDDLE LAST
  1. ;
  1. I $P(ACHD0,U,6)="N" D Q
  1. . S ACHDNAME=$P($G(^ACHSDEN(DUZ(2),"D",DA,10)),U,1)
  1. . I ACHDNAME["," Q
  1. . S LEN=$L(ACHDNAME," ")
  1. . S ACHDNAME=$P(ACHDNAME," ",LEN)_", "_$P(ACHDNAME," ",1,LEN-1)
  1. . Q
  1. ;fetch name from DPT
  1. S ACHDNAME=$P(ACHD0,U,7) I ACHDNAME="" Q
  1. S ACHDNAME=$P($G(^DPT(ACHDNAME,0)),U,1)
  1. Q
  1. ;
  1. HDR ; --- Pagination for report.
  1. S ACHSPG=$G(ACHSPG)+1
  1. ;{ABK, 4/2/10}W @IOF,!!,$$C^ACHS("*** CHS DENIAL/DEFERRED SERVICES ***",80),!!,ACHSLOC,!?19,"DENIAL DOCUMENTS ALPHABETICALLY BY PATIENT",?71,"Page",$J(ACHSPG,3),!
  1. W @IOF,!!,$$C^ACHS("*** CHS DENIAL ***",80),!!,ACHSLOC,!?19,"DENIAL DOCUMENTS ALPHABETICALLY BY PATIENT",?71,"Page",$J(ACHSPG,3),!
  1. W ACHSTIME,!!,ACHDT1,!!,"PATIENT",?38,"ISSUE DATE",?51,"DOCUMENT #",?70,"DOLLARS",!,$$REPEAT^XLFSTR("=",79),!
  1. Q
  1. ;
  1. DOLLARS ;EP - Get Dollar Amount for each Denial.
  1. S ACHD("$")=$S(+$P($G(^ACHSDEN(DUZ(2),"D",DA,100)),U,9):+$P($G(^ACHSDEN(DUZ(2),"D",DA,100)),U,9),1:+$P($G(^ACHSDEN(DUZ(2),"D",DA,100)),U,8))
  1. ;
  1. I $D(^ACHSDEN(DUZ(2),"D",DA,200)) D
  1. .F DA(1)=0:0 S DA(1)=$O(^ACHSDEN(DUZ(2),"D",DA,200,DA(1))) Q:'DA(1) D
  1. ..I $D(^ACHSDEN(DUZ(2),"D",DA,200,DA(1),0)) D
  1. ...S ACHD("$")=ACHD("$")+$S(+$P($G(^ACHSDEN(DUZ(2),"D",DA,200,DA(1),0)),U,3):$P($G(^ACHSDEN(DUZ(2),"D",DA,200,DA(1),0)),U,3),1:+$P($G(^ACHSDEN(DUZ(2),"D",DA,200,DA(1),0)),U,2))
  1. ;
  1. I $D(^ACHSDEN(DUZ(2),"D",DA,210)) D
  1. .F DA(1)=0:0 S DA(1)=$O(^ACHSDEN(DUZ(2),"D",DA,210,DA(1))) Q:'DA(1) D
  1. ..I $D(^ACHSDEN(DUZ(2),"D",DA,210,DA(1),0)) D
  1. ...S ACHD("$")=ACHD("$")+$S(+$P($G(^ACHSDEN(DUZ(2),"D",DA,210,DA(1),0)),U,7):+$P($G(^ACHSDEN(DUZ(2),"D",DA,210,DA(1),0)),U,7),1:+$P($G(^ACHSDEN(DUZ(2),"D",DA,210,DA(1),0)),U,6))
  1. ;
  1. I $D(^ACHSDEN(DUZ(2),"D",DA,800)) D
  1. .F DA(1)=0:0 S DA(1)=$O(^ACHSDEN(DUZ(2),"D",DA,800,DA(1))) Q:'DA(1) D
  1. ..I $D(^ACHSDEN(DUZ(2),"D",DA,800,DA(1),0)) S ACHD("$")=ACHD("$")-(+$P($G(^ACHSDEN(DUZ(2),"D",DA,800,DA(1),0)),U,2))
  1. Q
  1. ;
  1. AMT ;EP - Write amount of denial on denial letter(s).
  1. S ACHD("$")=0
  1. D DOLLARS
  1. W:$X>9 !
  1. W ?DIWL+3,"Total amount of services denied : "
  1. S X=ACHD("$")
  1. D FMT^ACHS
  1. W !
  1. Q
  1. ;