| 1 | SDSCCHK ;ALB/JAM/RBS - Check Encounters for Inclusion in ASCD ; 4/30/07 4:46pm | 
|---|
| 2 | ;;5.3;Scheduling;**495**;Aug 13, 1993;Build 50 | 
|---|
| 3 | ;;MODIFIED FOR NATIONAL RELEASE from a Class III software product | 
|---|
| 4 | ;;known as Service Connected Automated Monitoring (SCAM). | 
|---|
| 5 | ; | 
|---|
| 6 | Q | 
|---|
| 7 | EN ;  Entry point | 
|---|
| 8 | N SDSCBDT,SDSCITE,SDSCDAY,ZTQUEUED,POP,ZTRTN,ZTDTH,ZTDESC,ZTSAVE | 
|---|
| 9 | ; Initialize system variables if not already set | 
|---|
| 10 | D HOME^%ZIS | 
|---|
| 11 | ; Get start and end date for compile. | 
|---|
| 12 | S (SDSCBDT,SDSCEDT,SDSCDAY)="" | 
|---|
| 13 | S SDSCITE=$P($$SITE^VASITE(),U,1) | 
|---|
| 14 | S SDSCDAY=$$GET^XPAR((+SDSCITE)_";DIC(4,","SDSC SITE PARAMETER") | 
|---|
| 15 | ; set default start date based on site parameter (30 days max) | 
|---|
| 16 | I SDSCDAY="" S SDSCDAY=30 | 
|---|
| 17 | S SDSCBDT=$$FMADD^XLFDT(DT,-SDSCDAY),SDSCEDT=DT | 
|---|
| 18 | D GETDATE1^SDSCOMP I SDSCTDT="" G EXIT | 
|---|
| 19 | S DIR(0)="S^S:Summary Report;D:Detailed Report",DIR("B")="S" | 
|---|
| 20 | D ^DIR K DIR | 
|---|
| 21 | I $G(DTOUT)!($G(DUOUT)) G EXIT | 
|---|
| 22 | S SDANS=Y | 
|---|
| 23 | K %ZIS,IOP,IOC,ZTIO S %ZIS="MQ" D ^%ZIS G:POP EXIT | 
|---|
| 24 | I $D(IO("Q")) D  G EXIT | 
|---|
| 25 | . S ZTRTN="PRT^SDSCCHK",ZTDTH=$H,ZTDESC="ASCD Compile Results Report" | 
|---|
| 26 | . S ZTSAVE("SDANS")="",ZTSAVE("SDSCTDT")="",ZTSAVE("SDEDT")="" | 
|---|
| 27 | . K IO("Q") D ^%ZTLOAD W !,"REQUEST QUEUED" | 
|---|
| 28 | ; | 
|---|
| 29 | PRT ;  Print results | 
|---|
| 30 | N SDCT,SDDCT,SDOEDT,SDOE,P,L,SDTXT,TOTAL,SDOANS | 
|---|
| 31 | K ^TMP("SDSCCHK",$J) | 
|---|
| 32 | D ELIG^SDSCOMP | 
|---|
| 33 | S SDOEDT=SDSCTDT,(SDCT,SDDCT)=0 | 
|---|
| 34 | F  S SDOEDT=$O(^SCE("B",SDOEDT)) Q:(SDOEDT\1)>SDEDT  Q:SDOEDT=""  D | 
|---|
| 35 | . S SDOE=0 | 
|---|
| 36 | . F  S SDOE=$O(^SCE("B",SDOEDT,SDOE)) Q:'SDOE  D FND | 
|---|
| 37 | ; | 
|---|
| 38 | BEG ; Begin report | 
|---|
| 39 | S (P,L,SDABRT,TOTAL,SDOANS)=0 | 
|---|
| 40 | S SDOANS=SDANS S:SDANS="D" SDANS="S" | 
|---|
| 41 | D HDR | 
|---|
| 42 | ; | 
|---|
| 43 | U IO | 
|---|
| 44 | D  G EXIT:$G(SDABRT)=1 | 
|---|
| 45 | . S SDTXT="" | 
|---|
| 46 | . F  S SDTXT=$O(^TMP("SDSCCHK",$J,"TOTAL",SDTXT)) Q:SDTXT=""  D  Q:$G(SDABRT)=1 | 
|---|
| 47 | .. W !,$J(^TMP("SDSCCHK",$J,"TOTAL",SDTXT),8),?10,SDTXT S L=L+1 | 
|---|
| 48 | .. F I=" TP "," MT " W:SDTXT[I " *" | 
|---|
| 49 | .. S TOTAL=TOTAL+^TMP("SDSCCHK",$J,"TOTAL",SDTXT) | 
|---|
| 50 | .. I L+3>IOSL D HDR Q:$G(SDABRT)=1 | 
|---|
| 51 | . W ! F I=1:1:79 W "-" | 
|---|
| 52 | . W !,$J(TOTAL,8),?10,"TOTAL Encounters" | 
|---|
| 53 | . W !!,"* Third Party=TP; Means Test=MT",! | 
|---|
| 54 | ; | 
|---|
| 55 | I SDOANS="D" S SDANS="D" D HDR D  G EXIT:$G(SDABRT)=1 | 
|---|
| 56 | . S SDTXT="" | 
|---|
| 57 | . F  S SDTXT=$O(^TMP("SDSCCHK",$J,"DX",SDTXT)) Q:'SDTXT  D  Q:$G(SDABRT)=1 | 
|---|
| 58 | .. S SDDATA=^TMP("SDSCCHK",$J,"DX",SDTXT) | 
|---|
| 59 | .. W !,$P(SDDATA,U,1),?12,$P(SDDATA,U,2),?24,$E($P(SDDATA,U,3),1,19),?44,$E($P(SDDATA,U,4),1,16) | 
|---|
| 60 | .. W ?62,$E($P(^TMP("SDSCCHK",$J,"DX",SDTXT),U,5),1,18),!,?10,$P($P(^TMP("SDSCCHK",$J,"DX",SDTXT),U,6),"(",1) | 
|---|
| 61 | .. S L=L+2 | 
|---|
| 62 | .. I L+3>IOSL D HDR Q:$G(SDABRT)=1 | 
|---|
| 63 | D RPTEND^SDSCRPT1 | 
|---|
| 64 | EXIT ; | 
|---|
| 65 | K SDABRT,SDANS,SDCLIN,SDEDT,SDFPTX,SDHDR,SDLIST,SDNWPV,SDOEX,SDPOV | 
|---|
| 66 | K SDSCEDT,SDSCTDT,SDSCTXT,I,X,Y,QUE,POP,DFN,SDDATA | 
|---|
| 67 | K ^TMP("SDSCCHK",$J),DTOUT,DUOUT | 
|---|
| 68 | Q | 
|---|
| 69 | ; | 
|---|
| 70 | FND ;  Find errors with encounters | 
|---|
| 71 | N SDOEDAT,SDCLIN,SDPAT,SDEC,DFN,SDCST,SDV0,SDPNAM,SDFILEOK | 
|---|
| 72 | ; If this encounter has already been compiled for review, quit. | 
|---|
| 73 | I $D(^SDSC(409.48,SDOE,0)) Q | 
|---|
| 74 | ; | 
|---|
| 75 | S SDOEDAT=$$GETOE^SDOE(SDOE) I SDOEDAT="" S SDSCTXT="No Encounter zero node" D STORE Q | 
|---|
| 76 | ; If child encounter, quit | 
|---|
| 77 | I $P(SDOEDAT,U,6) Q | 
|---|
| 78 | S SDCLIN=$P(SDOEDAT,U,4) | 
|---|
| 79 | ; Get patient. If no patient, quit. | 
|---|
| 80 | S SDPAT=$P(SDOEDAT,U,2) I SDPAT="" S SDSCTXT="No Patient Pointer for this encounter" D STORE Q | 
|---|
| 81 | N VADM S DFN=SDPAT D DEM^VADPT S SDPNAM=VADM(1) | 
|---|
| 82 | ; Get visit file entry. If no visit, quit. | 
|---|
| 83 | S SDV0=$P(SDOEDAT,U,5) I SDV0="" S SDSCTXT="No Visit Pointer for this encounter" D STORE Q | 
|---|
| 84 | ; Get eligibility.  If no eligibility, quit. | 
|---|
| 85 | S SDEC=$P(SDOEDAT,U,13) I SDEC="" S SDSCTXT="Encounter eligibility is blank." D STORE Q | 
|---|
| 86 | ; If eligibility is not service connected, quit. | 
|---|
| 87 | I '$D(SDLIST(SDEC)) S SDSCTXT="Eligibility is not service connected" D STORE Q | 
|---|
| 88 | ; Get clinic. If no clinic, quit. | 
|---|
| 89 | I SDCLIN="" S SDSCTXT="No Clinic Pointer for this encounter" D STORE Q | 
|---|
| 90 | ; Get clinic stop code. If no clinic stop code, quit. | 
|---|
| 91 | S SDCST=$P(SDOEDAT,U,3) I SDCST="" S SDSCTXT="Clinic "_$P(^SC(SDCLIN,0),U,1)_" has no defined clinic stop code" D STORE Q | 
|---|
| 92 | ; If clinic is non-count, quit. | 
|---|
| 93 | I $$NCTCL^SDSCUTL(SDCLIN)  S SDSCTXT="Clinic "_$P(^SC(SDCLIN,0),U,1)_" is non-count" D STORE Q | 
|---|
| 94 | ; If encounter is non-billable for first and third party, quit. | 
|---|
| 95 | I $$NBFP(),$$NBTP() S SDSCTXT="Non-billable because "_SDFPTX D STORE Q | 
|---|
| 96 | ; Get and evaluate all ICD9 entries for the specified visit. | 
|---|
| 97 | S SDFILEOK=$$SC^SDSCAPI(DFN,,SDOE) | 
|---|
| 98 | ;no ICDs were found for this encounter SDFILEOK="" | 
|---|
| 99 | I SDFILEOK="" S SDSCTXT="No Diagnoses for this encounter" D STORED Q | 
|---|
| 100 | ;checks if ICD match found | 
|---|
| 101 | I +SDFILEOK D  Q | 
|---|
| 102 | .I '$P(SDFILEOK,"^",4) S SDSCTXT="A diagnosis fully matched a rated disability condition" D STORED Q | 
|---|
| 103 | .S SDSCTXT="A diagnosis partially matched a rated disability condition" D STORED | 
|---|
| 104 | ; ICDs that were found as non-service connected | 
|---|
| 105 | S SDSCTXT="No Diagnoses identified as service connected" D STORED | 
|---|
| 106 | Q | 
|---|
| 107 | ; | 
|---|
| 108 | HDR ; Header | 
|---|
| 109 | ; Do not ask 'RETURN' before first page on CRT. | 
|---|
| 110 | I $E(IOST,1,2)="C-",P N DIR S DIR(0)="E" D ^DIR I 'Y S SDABRT=1 Q | 
|---|
| 111 | ; Do not print a form feed before first page on printer. Top of form is set at end of previous report. | 
|---|
| 112 | I $E(IOST,1,2)="C-"!P W @IOF | 
|---|
| 113 | S P=P+1,L=5 | 
|---|
| 114 | S SDHDR="Compile Results Report"_" - "_$S(SDANS="S":"Summary",1:"Detail") | 
|---|
| 115 | U IO | 
|---|
| 116 | S SDNWPV=1 | 
|---|
| 117 | W SDHDR,?67,"PAGE: ",P | 
|---|
| 118 | W !,?5,"For Encounters Dated ",$$FMTE^XLFDT(SDSCTDT,2)," THRU ",$$FMTE^XLFDT(SDEDT,2) | 
|---|
| 119 | I SDANS="S" W !,?2,"# Enc",?10,"Reason" | 
|---|
| 120 | I SDANS="D" D | 
|---|
| 121 | . W !!,"Note:  The Detail report will ONLY list additional encounter information ",!,"       for the Diagnosis code related Reasons.",! | 
|---|
| 122 | . W !,"Enc #",?12,"Visit #",?24,"Clinic",?42,"Encounter Date/Time",?62,"Patient Name",!,?10,"Reason" | 
|---|
| 123 | W ! F I=1:1:79 W "-" | 
|---|
| 124 | Q | 
|---|
| 125 | ; | 
|---|
| 126 | STORE ; Store the encounter for later use. | 
|---|
| 127 | S SDCT=SDCT+1 | 
|---|
| 128 | I SDOEDAT="" S ^TMP("SDSCCHK",$J,SDCT)="Encounter IEN "_SDOE_" "_SDSCTXT Q | 
|---|
| 129 | I SDPAT="" S ^TMP("SDSCCHK",$J,SDCT)="Encounter IEN "_SDOE_" "_SDSCTXT Q | 
|---|
| 130 | S ^TMP("SDSCCHK",$J,SDCT)=$P(^SC(SDCLIN,0),U,1)_"^"_$$FMTE^XLFDT($P(SDOEDAT,U,1),"5Z")_"^"_SDPNAM_"^"_SDSCTXT | 
|---|
| 131 | S ^TMP("SDSCCHK",$J,"TOTAL",SDSCTXT)=$G(^TMP("SDSCCHK",$J,"TOTAL",SDSCTXT))+1 | 
|---|
| 132 | Q | 
|---|
| 133 | ; | 
|---|
| 134 | STORED ;  Store the diagnosis encounter for detail | 
|---|
| 135 | N DFN,SDPNAM | 
|---|
| 136 | S SDDCT=SDDCT+1 | 
|---|
| 137 | S DFN=SDPAT D DEM^VADPT S SDPNAM=VADM(1) D KVA^VADPT | 
|---|
| 138 | S ^TMP("SDSCCHK",$J,"DX",SDDCT)=SDOE_"^"_SDV0_"^"_$P(^SC(SDCLIN,0),U,1)_"^"_$$FMTE^XLFDT($P(SDOEDAT,U,1),"5Z")_"^"_SDPNAM_"^"_SDSCTXT | 
|---|
| 139 | S ^TMP("SDSCCHK",$J,"TOTAL",SDSCTXT)=$G(^TMP("SDSCCHK",$J,"TOTAL",SDSCTXT))+1 | 
|---|
| 140 | Q | 
|---|
| 141 | ; | 
|---|
| 142 | NBFP() ; Is first-party non-billable based on either clinic, stop code, or patient? | 
|---|
| 143 | S SDFPTX="",SDFPTX=$P($$FIRST^IBRSUTL(SDOE),U,2) I SDFPTX'="" Q 1 | 
|---|
| 144 | Q 0 | 
|---|
| 145 | ; | 
|---|
| 146 | NBTP() ; Is third-party non-billable based on either clinic, stop code, or patient? | 
|---|
| 147 | S SDFPTX="",SDFPTX=$P($$THIRD^IBRSUTL(SDOE),U,2) I SDFPTX'="" Q 1 | 
|---|
| 148 | I '+$$INSUR^IBBAPI(SDPAT,SDOEDT) S SDFPTX="patient is not insured" Q 1 | 
|---|
| 149 | Q 0 | 
|---|