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

PXRRMDR.m

Go to the documentation of this file.
  1. PXRRMDR ;BP/WLC - PCE Missing Data Report ;07/13/2021
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**124,174,168,199,217**;FEB 11, 2004;Build 134
  1. ; 04/11/05 WLC changed to check for AO, IR and EC, only if SC'=YES
  1. Q
  1. ;
  1. EN N DIR,%DT,DT,DTOUT,DUOUT,CBU,CNT,EDT,LOC,PAT,POP,PRIO,PROV,PX,PXDS,PXDT
  1. N PXLOC,PXPAGE,PXPROV,RPTYP,SDDIV,SORT,SORTHDR,SSN,TY,VDT,X,Y,ZTSAVE
  1. S (POP,PXPAGE)=0
  1. K PXDS
  1. D HOME^%ZIS S:'$D(IOF) IOF=FF W @IOF,!!
  1. S X=$$CTR("PCE Missing Data Report")
  1. W !! D DATASRC^PXRRMDR1 G:POP EXIT ; sets PXDS() PX*1.0*174
  1. W @IOF,!! S X=$$CTR("**** Date Range Selection ****")
  1. W !!! S %DT="AEPX",%DT("A")="Beginning date: " D ^%DT G:Y<1 EXIT S PX("BDT")=Y
  1. EDT S %DT("A")=" Ending date: " W ! D ^%DT G:Y<1 EXIT
  1. I Y<PX("BDT") W !!,$C(7),"End date cannot be before begin date!",! G EDT
  1. S PX("EDT")=Y_.999999
  1. W @IOF,!! S X=$$CTR("*** Report Sort Selection ***")
  1. W !!! K DIR S SORTHDR="DATA SOURCE^CPT^DIAGNOSIS^PATIENT^ELIGIBILITY"
  1. F LOOP=1:1:$L(SORTHDR,U) S DESC=$P(SORTHDR,U,LOOP) W !,"("_LOOP_") "_DESC
  1. W ! S DIR(0)="N^^I X<1!(X>5) K X",DIR("A")="Enter number between 1 and 5" D ^DIR Q:$D(DIRUT) S PXSRT=+X
  1. S DIR(0)="S^D:DETAILED REPORT;S:STATISTICS ONLY",DIR("A")="Select report type",DIR("B")="DETAILED REPORT" D ^DIR Q:$D(DIRUT)
  1. S RPTYP=Y
  1. W !!,"This report requires 132 column output.",!
  1. S %ZIS="QM" D ^%ZIS Q:POP
  1. I $D(IO("Q")) D G EXIT
  1. . S ZTRTN="RUN^PXRRMDR",ZTDESC="PCE MISSING DATA REPORT"
  1. . S ZTSAVE("PX*")=""
  1. . S ZTSAVE("RPTYP")="",ZTSAVE("SORTHDR")=""
  1. . D ^%ZTLOAD W !!,$S($D(ZTSK):"This job has been queued. The task number is "_ZTSK_".",1:"Unable to queue this job.")
  1. .K ZTSK,IO("Q"),ZTSAVE D HOME^%ZIS
  1. ;
  1. RUN ;
  1. U IO
  1. K ^TMP("PXCRPW",$J),DIR S (PXOUT)=""
  1. N LOOP,PXDT,I,VSN,VISITS,CLASSIF
  1. S PXDT=(PX("BDT")-1)_.99999 K ^TMP("PXCRPW",$J)
  1. F S PXDT=$O(^AUPNVSIT("ADEL",PXDT)) Q:PXDT>PX("EDT")!('PXDT) D
  1. . S VSN=0 F S VSN=$O(^AUPNVSIT("ADEL",PXDT,VSN)) Q:'VSN D
  1. . . S VISITS=$P($G(^AUPNVSIT(VSN,812)),U,3) S:VISITS="" VISITS="Unknown"
  1. . . Q:'$D(PXDS(VISITS))
  1. . . D ENCEVENT^PXKENCOUNTER(VSN,0)
  1. . . Q:$P($G(^TMP("PXKENC",$J,VSN,"VST",VSN,0)),U,7)="E" ;Historic encounter PX*1.0*174
  1. . . Q:$$TESTPAT^VADPT($P($G(^TMP("PXKENC",$J,VSN,"VST",VSN,0)),U,5)) ;Test patient PX*1.0*174
  1. . . N OE S OE=$O(^SCE("AVSIT",VSN,0)) Q:'OE Q:$P(^SCE(OE,0),U,6)]"" Q:$P(^SCE(OE,0),U,12)=12 ;Check if a child encounter, non-count PX*1.0*174
  1. . . I '$D(^TMP("PXKENC",$J,VSN,"CPT")) D SET("Visit is missing a Procedure Code",1) Q
  1. . . I $$EXOE^SDCOU2(OE) Q ;Determine if Encounter is Exempt from Outpatient Classifications and Diagnoses PX*1.0*174
  1. . . N I,J S (I,CNT)=0 F S I=$O(^TMP("PXKENC",$J,VSN,"CPT",I)) Q:'I D
  1. . . . S CNT=0 F J=5,9,10,11,12,13,14,15 I $P(^TMP("PXKENC",$J,VSN,"CPT",I,0),U,J) S CNT=CNT+1
  1. . . . I CNT=0 D SET("Procedure: "_$$DISPLYP($P(^TMP("PXKENC",$J,VSN,"CPT",I,0),U))_" missing assoc. DXs",1)
  1. . . S (I,J)=0 F S I=$O(^TMP("PXKENC",$J,VSN,"POV",I)) Q:'I D
  1. . . . K CLASSIF S DFN=$$GET1^DIQ(9000010,VSN_",",.05,"I")
  1. . . . I $$AO^SDCO22(DFN) S CLASSIF(1)=""
  1. . . . I $$IR^SDCO22(DFN) S CLASSIF(2)=""
  1. . . . I $$SC^SDCO22(DFN) S CLASSIF(3)=""
  1. . . . I $$EC^SDCO22(DFN) S CLASSIF(4)=""
  1. . . . I $$MST^SDCO22(DFN) S CLASSIF(5)=""
  1. . . . I $$HNC^SDCO22(DFN) S CLASSIF(6)=""
  1. . . . I +$P($$CVEDT^DGCV(DFN,PXDT),"^",3) S CLASSIF(7)=""
  1. . . . I $$SHAD^SDCO22(DFN) S CLASSIF(8)=""
  1. . . . I $D(CLASSIF),'$D(^TMP("PXKENC",$J,VSN,"POV",I,800)) D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing SC/EI",1) Q
  1. . . . S J="" F S J=$O(CLASSIF(J)) Q:'J D
  1. . . . . N SCEIREC S SCEIREC=$G(^TMP("PXKENC",$J,VSN,"POV",I,800))
  1. . . . . I J=3&($P(SCEIREC,U,1)="") D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Service Connect.",1)
  1. . . . . I J=1&($P(SCEIREC,U,2)="")&($P(SCEIREC,U,1)'=1) D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Agent Orange",3)
  1. . . . . I J=2&($P(SCEIREC,U,3)="")&($P(SCEIREC,U,1)'=1) D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Ion. Rad.",4)
  1. . . . . I J=4&($P(SCEIREC,U,4)="")&($P(SCEIREC,U,1)'=1) D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Env. Contam.",5)
  1. . . . . I J=5&($P(SCEIREC,U,5)="") D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing MST",6)
  1. . . . . I J=6&($P(SCEIREC,U,6)="") D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Head/Neck Cancer",6)
  1. . . . . I J=7&($P(SCEIREC,U,7)="") D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Combat Vet",2)
  1. . . . . I J=8&($P(SCEIREC,U,8)="") D SET($$DISPLYDX($P(^TMP("PXKENC",$J,VSN,"POV",I,0),U))_" missing Project 112/SHAD",6)
  1. U IO D PRINT^PXRRMDR1,^%ZISC
  1. K ^TMP("PXCRPW",$J)
  1. EXIT Q
  1. ;
  1. STOP ;Check for stop task request
  1. S:$G(ZTQUEUED) (PXOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0)
  1. Q
  1. ;
  1. EVAL ;
  1. S PXLOC=$$GET1^DIQ(9000010,VSN_",",.22)
  1. S:$G(PXLOC)="" PXLOC="Unknown"
  1. N PXPTR S PXPTR=$O(^AUPNVPRV("AD",VSN,""))
  1. S PXPRV=$$GET1^DIQ(9000010.06,PXPTR_",",.01)
  1. S:$G(PRPRV)="" PXPRV="Unknown"
  1. Q
  1. ;
  1. DISPLYDX(PXCEPOV) ;
  1. N ICDSTR
  1. S ICDSTR=$$ICDDATA^ICDXCODE("DIAG",$P(PXCEPOV,"^"),$$CSDATE^PXDXUTL(VSN),"I")
  1. Q $S($P(ICDSTR,"^",20)="30":"ICD10",1:"ICD9")_": "_$P(ICDSTR,"^",2) ;code
  1. ;
  1. DISPLYP(PXCECPT) ;
  1. N CPTSTR
  1. S CPTSTR=$$CPT^ICPTCOD($P(PXCECPT,U),$P(^AUPNVSIT(VSN,0),"^"))
  1. Q $P(CPTSTR,U,2) ;code
  1. ;
  1. SET(SDX,PRIO) ;
  1. N A1
  1. S PRIO=$G(PRIO)
  1. D EVAL
  1. I PXSRT="" S A1="Unknown" D SET1(PRIO) Q
  1. D @PXSRT
  1. Q
  1. ;
  1. 1 ; Data Source
  1. S A1=$$GET1^DIQ(9000010,VSN_",",81203)
  1. S:A1="" A1=" "
  1. D SET1(PRIO)
  1. Q
  1. ;
  1. 2 ; CPT
  1. N CPT,CPT1
  1. S CPT=$O(^AUPNVCPT("AD",VSN,""))
  1. S:CPT'="" CPT1=$$GET1^DIQ(9000010.18,CPT_",",.01)
  1. S A1=$G(CPT1) D SET1(PRIO)
  1. Q
  1. ;
  1. 3 ; ICD
  1. N ICD,ICDCD,ICDDATA S ICD="",ICDCD="Unknown"
  1. F S ICD=$O(^AUPNVPOV("AD",VSN,ICD)) Q:'ICD D
  1. . S ICDCD=$$GET1^DIQ(9000010.07,ICD,.01)
  1. . S ICDDATA=$$ICDDATA^ICDXCODE("DIAG",ICDCD,$$CSDATE^PXDXUTL(VSN),"E")
  1. S A1=$S(ICDCD="Unknown":ICDCD,1:$P(ICDDATA,U,2)_"_"_$P(ICDDATA,U,20))
  1. D SET1(PRIO)
  1. Q
  1. ;
  1. 4 S A1=$$GET1^DIQ(9000010,VSN_",",.05)
  1. S:A1="" A1="Unknown"
  1. D SET1(PRIO)
  1. Q
  1. ;
  1. 5 ; Eligibility
  1. S A1=$$GET1^DIQ(9000010,VSN_",",.21)
  1. S:A1="" A1="Unknown"
  1. D SET1(PRIO)
  1. Q
  1. ;
  1. 6 ; Default Sort
  1. S A1="Default" D SET1(PRIO)
  1. Q
  1. ;
  1. SET1(PR) ; set temp global
  1. I A1="" S A1="Unknown"
  1. S Y=$$GET1^DIQ(9000010,VSN_",",.01) X ^DD("DD") S VDT=Y
  1. S:VDT="" VDT="Unknown" S VDT=$P(VDT,"@",1)
  1. S ^TMP("PXCRPW",$J,PXLOC,PXPRV,A1,VDT,VSN,PR,SDX)=VSN
  1. Q
  1. CTR(X) ;
  1. W ?(IOM-$L(X))\2,X
  1. Q 1
  1. ;