PXRMXGPR ; SLC/PJH - Reminder Due print calls ;01/09/2006 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 ; ;Called from PXRMXPR ; ;Print Selection criteria HEAD(PSTART) ; I SUB="TOTAL" N NAM S NAM="TOTAL REPORT" I PXRMTABS="Y" D Q .N FFAC,FNAM .S FNAM=NAM .I "CES"[PXRMTABC S FNAM=$TR(FNAM,SEP,"_") .I PXRMFCMB="N","LT"[PXRMSEL D Q ..S FFAC=$TR(FACPNAME,SEP,"_") ..W !,"0"_SEP_FFAC_"_"_FNAM_SEP_SEP .I PXRMFCMB="N","LT"'[PXRMSEL W !,"0"_SEP_FNAM_SEP_SEP Q .I PXRMFCMB="Y" W !,"0"_SEP_"COMBINED_REPORT_"_FNAM_SEP_SEP Q I "LT"[PXRMSEL D .I PXRMFCMB="N" W !,?PSTART,"Facility: ",FACPNAME Q .W !,?PSTART,"Combined Report: " .N FACN,LENGTH,TEXT .S FACN=0,LENGTH=17+PSTART .F S FACN=$O(PXRMFACN(FACN)) Q:'FACN D ..S TEXT=$P(PXRMFACN(FACN),U)_" ("_FACN_")" ..I $O(PXRMFACN(FACN)) S TEXT=TEXT_", " ..I (LENGTH+$L(TEXT))>80 S LENGTH=17+PSTART W !,?(17+PSTART) ..W TEXT S LENGTH=LENGTH+$L(TEXT) I "PTO"[PXRMSEL D .I SUB="TOTAL" W !,?PSTART,NAM Q .W !,?PSTART,"Reminders "_PXRMTX_" for ",NAM I PXRMSEL="L" W !,?PSTART,"Reminders "_PXRMTX_" "_SD_" - ",NAM I PXRMSEL="L" D .I "PF"[PXRMFD W " for ",BD," to ",ED .I PXRMFD="A" W " admissions from ",BD," to ",ED .I PXRMFD="C" W " for current inpatients" I PXRMSEL'="L" W " for ",SD W:PXRMSEL="I" ! ; Q ; ;Output the provider report criteria CRIT(PSTART,PLSTCRIT) ; N CNT,RCCNT,RCDES,RICNT,RIDES,UNDL S CNT=0 S UNDL=$TR($J("",79)," ","_") D LITS^PXRMXPR1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART-8)_"Report Criteria:",CNT=CNT+1 I PXRMTMP'="" S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Report Title:",22)_$P(PXRMTMP,U,3),CNT=CNT+1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Patient Sample:",22)_PXRMFLD,CNT=CNT+1 I PXRMSEL'="L" S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR(PXRMFLD_":",22) D DISP(.CNT,.PLSTCRIT) I PXRMSEL="L" D .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR(PXRMFLD_":",22)_DES,CNT=CNT+1 .I $E(PXRMLCSC,2)'="A" S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",10) D DISP(.CNT,.PLSTCRIT) I $D(PXRMRCAT) D .S RCCNT=0 .F S RCCNT=$O(PXRMRCAT(RCCNT)) Q:'RCCNT D ..S RCDES=$P(PXRMRCAT(RCCNT),U,2) ..I RCCNT=1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Reminder Category:",22)_RCDES_U_6,CNT=CNT+1 ..I RCCNT>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",22)_RCDES .S RICNT=0 .F S RICNT=$O(PXRMREM(RICNT)) Q:'RICNT D ..S RIDES=$P(PXRMREM(RICNT),U,2) ..I RICNT=1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Individual Reminder:",22)_RIDES_U_6,CNT=CNT+1 ..I RICNT>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",22)_RIDES,CNT=CNT+1 S PLSTCRIT(CNT)=U_6,CNT=CNT+1 I PXRMREP="D" D .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Reminder:",22)_RDES,CNT=CNT+1 .;Display future appointments for Reminder Due report only .I PXRMRT="PXRMX" S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_"Appointments:" D ..I PXRMFUT="Y" S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$$LJ^XLFSTR(" ",32-$L(PLSTCRIT(CNT)))_"All Future Appointments",CNT=CNT+1 ..I PXRMFUT="N" S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$$LJ^XLFSTR(" ",32-$L(PLSTCRIT(CNT)))_"Next Appointment only",CNT=CNT+1 I PXRMSEL="P" S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("All/Primary:",22)_CDES,CNT=CNT+1 I PXRMSEL="L" D S CNT=CNT+1 .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Date Range:",22) .I "PAF"[PXRMFD S PLSTCRIT(CNT)=PLSTCRIT(CNT)_BD_" to "_ED Q .I PXRMFD="C" S PLSTCRIT(CNT)=PLSTCRIT(CNT)_"not applicable" Q S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Effective Due Date:",22)_SD,CNT=CNT+1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Date run:",22)_RD,CNT=CNT+1 I PXRMTMP'="" D .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Template Name:",22)_$P(PXRMTMP,U,2),CNT=CNT+1 .I PXRMUSER S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Requested by:",22)_$$GET1^DIQ(200,DUZ,.01)_U_3,CNT=CNT+1 I (PXRMFCMB="Y")!(PXRMLCMB="Y")!(PXRMTCMB="Y") D .N LIT,TEXT .S LIT=$S(PXRMSEL="P":"Providers","OT"[PXRMSEL:"Teams",1:"Locations") .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Combined report:",22) .I PXRMFCMB="Y",PXRMLCMB="Y" S TEXT="Combined Facility and Combined "_LIT .I PXRMFCMB="Y",PXRMLCMB="N" S TEXT="Combined Facility by Individual "_LIT .I PXRMLCMB="Y",PXRMFCMB="N" S TEXT="Combined "_LIT .I PXRMTCMB="Y" S TEXT="Combined "_LIT .S PLSTCRIT(CNT)=PLSTCRIT(CNT)_TEXT,CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMREP="S","IRT"[PXRMTOT,"IR"'[PXRMSEL D .N LIT1,LIT2,LIT3,TEXT .D LIT^PXRMXD .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Summary report:",22) .I PXRMTOT="I" S TEXT=LIT1 .I PXRMTOT="R" S TEXT=LIT2 .I PXRMTOT="T" S TEXT=LIT3 .S PLSTCRIT(CNT)=PLSTCRIT(CNT)_TEXT,CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I $D(PXRMSCAT),PXRMSCAT]"",PXRMFD="P" D OSCAT(PXRMSCAT,PSTART,.CNT,.PLSTCRIT) N CHECK,CNT,NODE,STR S CNT=0 F S CNT=$O(PLSTCRIT(CNT)) Q:CNT'>0 D .S NODE=$G(PLSTCRIT(CNT)),CHECK=$P(NODE,U,2),STR=$P(NODE,U) .I CHECK>0 D CHECK(CHECK) I STR="" Q .W !,STR W !,UNDL,! Q ; ;Display selected teams/providers DISP(CNT,PLSTCRIT) ; N IC S IC="" I PXRMSEL="P" F S IC=$O(PXRMPRV(IC)) Q:IC="" D .I IC=1 S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$P(PXRMPRV(IC),U,2),CNT=CNT+1 .I IC>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMPRV(IC),U,2),CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMSEL="T" F S IC=$O(PXRMPCM(IC)) Q:IC="" D .I IC=1 S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$P(PXRMPCM(IC),U,2),CNT=CNT+1 .I IC>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMPCM(IC),U,2),CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMSEL="O" F S IC=$O(PXRMOTM(IC)) Q:IC="" D .I IC=1 S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$P(PXRMOTM(IC),U,3),CNT=CNT+1 .I IC>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMOTM(IC),U,2),CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMSEL="I" F S IC=$O(PXRMPAT(IC)) Q:IC="" D .I IC=1 S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$P(PXRMPAT(IC),U,2),CNT=CNT+1 .I IC>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMPAT(IC),U,2),CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMSEL="R" F S IC=$O(PXRMLIST(IC)) Q:IC="" D .I IC=1 S PLSTCRIT(CNT)=PLSTCRIT(CNT)_$P(PXRMLIST(IC),U,2),CNT=CNT+1 .I IC>1 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMLIST(IC),U,2),CNT=CNT+1 .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 I PXRMSEL="L" D .I $E(PXRMLCSC)="H" F S IC=$O(^XTMP(PXRMXTMP,"HLOC",IC)) Q:IC="" D ..S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(^XTMP(PXRMXTMP,"HLOC",IC),U,2),CNT=CNT+1 ..S PLSTCRIT(CNT)=U_3,CNT=CNT+1 .I $E(PXRMLCSC)="C" F S IC=$O(PXRMCS(IC)) Q:IC="" D ..S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMCS(IC),U,1)_" "_$P(PXRMCS(IC),U,3),CNT=CNT+1 ..S PLSTCRIT(CNT)=U_3,CNT=CNT+1 .I $E(PXRMLCSC)="G" F S IC=$O(PXRMCGRP(IC)) Q:IC="" D ..S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",32)_$P(PXRMCGRP(IC),U,2),CNT=CNT+1 ..S PLSTCRIT(CNT)=U_3,CNT=CNT+1 Q ; ;Output the service categories OSCAT(SCL,PSTART,CNT,PLSTCRIT) ; N IC,CSTART,EM,SC,SCTEXT S CSTART=PSTART+3 S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",PSTART)_$$LJ^XLFSTR("Service categories:",22)_SCL,CNT=CNT+1 F IC=1:1:$L(SCL,",") D .S SC=$P(SCL,",",IC) .S SCTEXT=$$EXTERNAL^DILFD(9000010,.07,"",SC,.EM) .S PLSTCRIT(CNT)=U_3,CNT=CNT+1 .S PLSTCRIT(CNT)=$$RJ^XLFSTR(" ",CSTART)_SC_" - "_SCTEXT,CNT=CNT+1 Q ; ;If necessary, write the header COL(NEWPAGE) ; I NEWPAGE D Q:DONE .I PXRMTABS="N" D PAGE .I PXRMTABS="Y" W !! D CHECK(0) Q:DONE D HEAD(0) S HEAD=0 I PXRMTABS="Y" Q I PXRMREP="D" D .N PNAM .S PNAM=$P(PXRMREM(1),U,4) I PNAM="" S PNAM=$P(PXRMREM(1),U,2) .W !!,PNAM,": ",COUNT .W:COUNT>1 " patients have the reminder "_PXRMTX .W:COUNT=1 " patient has the reminder "_PXRMTX N IC F IC=0:1:2 W !,?PXRMT(IC),PXRMH(IC) Q ; ;form feed to new page PAGE I ($E(IOST)="C")&(IO=IO(0))&(PAGE>0) D .S DIR(0)="E" .W ! .D ^DIR K DIR I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)) S DONE=1 Q W:$D(IOF)&(PAGE>0) @IOF S PAGE=PAGE+1,FIRST=0 I $E(IOST)="C",IO=IO(0) W @IOF E W ! N TEMP,TEXTLEN S TEMP=$$NOW^XLFDT,TEMP=$$FMTE^XLFDT(TEMP,"P") S TEMP=TEMP_" Page "_PAGE S TEXTLEN=$L(TEMP) W ?(IOM-TEXTLEN),TEMP S TEXTLEN=$L(PXRMOPT) I TEXTLEN>0 D .W !! .W ?((IOM-TEXTLEN)/2),PXRMOPT Q ; ;count of patients in sample TOTAL N LIT I PXRMTABS="Y" D Q .I PXRMREP="D" W !,"0"_SEP_"PATIENTS"_SEP_TOTAL_SEP_"APPLICABLE"_SEP_APPL Q .I PXRMREP="S" W !,"0"_SEP_"PATIENTS"_SEP_TOTAL_SEP_SEP_$TR(SUB,SEP,"_") Q I (PXRMRT="PXRMX")!(PXRMREP="S") W ! ;S LIT=" patient." ;I TOTAL>1 S LIT=" patients." S LIT=$S(TOTAL=0:" patients.",TOTAL=1:" patient.",1:" patients.") W !,"Report run on "_TOTAL_LIT I PXRMREP="D" D .S LIT=$S(APPL=0:" patients.",APPL=1:" patient.",1:" patients.") .W !,"Applicable to "_APPL_LIT Q ; ;Null report prints if no patients found NULL I PXRMSEL="L" D .I PXRMFD="P" W !!,"No patient visits found" .I PXRMFD="A" W !!,"No patient admissions found" .I PXRMFD="C" W !!,"No current inpatient found" .I PXRMFD="F" W !!,"No patient appointments found" I PXRMSEL="P" W !!,"No patients found for provider(s) selected" I "OT"[PXRMSEL W !!,"No patients found for team(s) selected" Q ; ;Null report if no patients due/satisfied - detailed report only NONE D PAGE D HEAD(0) W !!,"No patients with reminders "_PXRMTX Q ; SPACER(TEXT,LENGTH) ; Q ; ;Check for page throw CHECK(CNT) ; I PXRMTABS="N",$Y>(IOSL-BMARG-CNT) D PAGE Q