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

PXRMXSE1.m

Go to the documentation of this file.
  1. PXRMXSE1 ; SLC/PJH - Build Patient lists for Reminder Due report; 05/13/2016
  1. ;;2.0;CLINICAL REMINDERS;**4,6,12,26,47**;Feb 04, 2005;Build 291
  1. ;
  1. ; Called/jobbed from PXRMXD
  1. ;
  1. ; Input - PXRMSEL,PXRMXTMP
  1. ; PXRM*
  1. ; Output- ^XTMP(PXRMXTMP
  1. ;
  1. ;
  1. START ;
  1. N LIT,TOTAL,TODAY,ZTSTOP,BUSY
  1. S DBDOWN=0
  1. S TOTAL=0,ZTSTOP="",TODAY=$$DT^XLFDT-.0001
  1. ;
  1. K ^TMP($J,"PXRM PATIENT LIST"),^TMP($J,"PXRM PATIENT EVAL")
  1. K ^TMP($J,"PXRM FUTURE APPT"),^TMP($J,"SDAMA301")
  1. K ^TMP($J),^TMP(PXRMRT,$J),^TMP("PXRMDUP",$J)
  1. K ^TMP("PXRMCMB",$J),^TMP("PXRMCMB1",$J),^TMP("PXRMCMB2",$J)
  1. K ^TMP("PXRMCMB3",$J),^TMP("PXRMCMB4",$J)
  1. N PXRMRERR
  1. ;
  1. ;Initialize the busy counter.
  1. S BUSY=0
  1. ;
  1. ;OE/RR team selected (PXRMOTM)
  1. I PXRMSEL="O" D OERR^PXRMXSL1
  1. ;
  1. ;PCMM team selected (PXRMPCM)
  1. I PXRMSEL="T" D PCMMT^PXRMXSL1
  1. ;
  1. N HLIEN,FACILITY
  1. ;Location selected (PXRMLCHL,PXRMCGRP)
  1. I PXRMSEL="L" D G:ZTSTOP=1 EXIT
  1. .;Build Clinic List
  1. .D BHLOC^PXRMXSL1
  1. .;Prior Visits - build patient list in ^TMP
  1. .I PXRMFD="P" D VISITS^PXRMXSL2 I DBDOWN=1 Q
  1. .;Inpatient Admissions and current inpatient locations
  1. .I PXRMFD="A"!(PXRMFD="C") D INPADM^PXRMXSL1
  1. .;Future Appointments - build patient list in ^TMP
  1. .I PXRMFD="F" D APPTS^PXRMXSL2 I DBDOWN=1 Q
  1. .;End task requested
  1. .Q:ZTSTOP=1
  1. ;Update ^XTMP from ^TMP
  1. ;Initialize the busy counter.
  1. S BUSY=0
  1. ;
  1. ;PCMM provider selected (PXRMPRV)
  1. I PXRMSEL="P" D PCMMP^PXRMXSL1
  1. ;
  1. ;Individual Patients selected (PXRMPAT)
  1. I PXRMSEL="I" D IND^PXRMXSL1
  1. ;
  1. ;Patient List selected (PXRMLIST)
  1. I PXRMSEL="R" D LIST^PXRMXSL1
  1. ;
  1. I DBDOWN=1 G EXIT
  1. S START=$H
  1. D EVAL^PXRMXEVL("PXRM PATIENT EVAL",.REMINDER)
  1. D XTMP(START)
  1. ;
  1. ;Update patient list
  1. I PXRMSEL'="I"&(PXRMUSER'="Y")&($G(PXRMLIS1)'="") D
  1. .;If no patients due delete patient list
  1. .I +$O(^TMP($J,"PXRMXPAT",""))=0 D Q
  1. ..N DA,DIK S DA=PXRMLIS1,DIK="^PXRMXP(810.5," D ^DIK
  1. .;Otherwise create patient list
  1. .D UPDLST^PXRMRULE("PXRMXPAT",PXRMLIS1,"","","",PXRMDPAT,PXRMTPAT)
  1. .S $P(^PXRMXP(810.5,PXRMLIS1,0),U,9)=1
  1. K ^TMP($J,"PXRMXPAT")
  1. K ^TMP($J),^TMP(PXRMRT,$J),^TMP("PXRMDUP",$J)
  1. K ^TMP("PXRMCMB",$J),^TMP("PXRMCMB1",$J),^TMP("PXRMCMB2",$J)
  1. K ^TMP("PXRMCMB3",$J),^TMP("PXRMCMB4",$J)
  1. K DBDOWN
  1. ;Sorting is done, produce the output.
  1. D START^PXRMXPR
  1. Q
  1. ;
  1. ERROR(STATUS,ITEM) ;
  1. ;Create XTMP entry for Reminders that error out or could not be
  1. ;determing on evaluation
  1. N ERRNAME
  1. S STATUS=$P(STATUS,U)
  1. S ERRNAME=$P(^PXD(811.9,ITEM,0),U)
  1. I $D(^XTMP(PXRMXTMP,STATUS,ERRNAME))>0,^XTMP(PXRMXTMP,STATUS,ERRNAME)>0 D
  1. .S ^XTMP(PXRMXTMP,STATUS,ERRNAME)=^XTMP(PXRMXTMP,STATUS,ERRNAME)+1
  1. E S ^XTMP(PXRMXTMP,STATUS,ERRNAME)=1
  1. Q
  1. ;
  1. ;End Task requested
  1. EXIT ;
  1. S ZTSK=$G(^XTMP(PXRMXTMP,"PRZTSK"))
  1. I ZTSK>0 D KILL^%ZTLOAD
  1. D EXIT^PXRMXGUT
  1. K DBDOWN
  1. Q
  1. ;
  1. XTMP(START) ;
  1. N CNT,CCNT,DDAT,II,INP,ITEM,LIT,LOC,LSSN,MCNBD,MCNBDR,NAME
  1. N SUB,STATUS,TEMP,TEXT
  1. K ^TMP($J,"PXRM CNBD")
  1. S CCNT=0,MCNBD=$G(^PXRM(800,1,"MIERR")),MCNBDR=0
  1. S BUSY=0,SUB="NAM",TEMP=0,PX="PXRM"
  1. N DDAT,DDUE,DEMARR,DFN,DLAST,DNEXT,FACILITY,NAM,PNAM
  1. S FACILITY="",DDAT="N/A"
  1. F S FACILITY=$O(^TMP(PXRMRT,$J,FACILITY)) Q:FACILITY="" D
  1. .S NAM=""
  1. .F S NAM=$O(^TMP(PXRMRT,$J,FACILITY,NAM)) Q:NAM="" D
  1. ..S LOC=""
  1. ..F S LOC=$O(^TMP(PXRMRT,$J,FACILITY,NAM,LOC)) Q:LOC="" D
  1. ...S DFN=""
  1. ...F S DFN=$O(^TMP(PXRMRT,$J,FACILITY,NAM,LOC,DFN)) Q:DFN="" D
  1. ....D NOTIFY^PXRMXBSY("Evaluating reminders",.BUSY)
  1. ....S INP=$G(^TMP(PXRMRT,$J,FACILITY,NAM,LOC,DFN))
  1. ....S CNT=0 F S CNT=$O(REMINDER(CNT)) Q:CNT'>0 D
  1. .....S ITEM=$P(REMINDER(CNT),U,1),LIT=$P(REMINDER(CNT),U,4)
  1. .....I LIT="" S LIT=$P(REMINDER(CNT),U,2)
  1. .....S STATUS=$G(^TMP($J,"PXRM PATIENT EVAL",DFN,ITEM))
  1. .....I STATUS="" Q
  1. .....I STATUS["ERROR"!(STATUS["CNBD") D
  1. ......D ERROR(STATUS,ITEM) I STATUS["ERROR"!(MCNBDR=1) Q
  1. ......I CCNT=0 D
  1. .......S ^TMP($J,"PXRM CNBD",1,0)=" "_$$LJ^XLFSTR("PATIENT NAME",30)_$$RJ^XLFSTR("LAST 4",8)_" REMINDER"
  1. .......S TEMP=" "
  1. .......F II=1:1:30 S TEMP=TEMP_"-"
  1. .......S TEMP=TEMP_" "
  1. .......F II=1:1:6 S TEMP=TEMP_"-"
  1. .......S TEMP=TEMP_" "
  1. .......F II=1:1:30 S TEMP=TEMP_"-"
  1. .......S ^TMP($J,"PXRM CNBD",2,0)=TEMP
  1. .......S CCNT=2
  1. ......S CCNT=CCNT+1
  1. ......I CCNT>MCNBD S MCNBDR=1 Q
  1. ......S NAME=$P(^DPT(DFN,0),U)
  1. ......S LSSN=$E($P(^DPT(DFN,0),U,9),6,9)
  1. ......S ^TMP($J,"PXRM CNBD",CCNT,0)=" "_$$LJ^XLFSTR(NAME,30)_$$RJ^XLFSTR(LSSN,8)_" "_$$LJ^XLFSTR(LIT,30)
  1. .....;Add reminder status to patient list TMP Global
  1. .....I STATUS["DUE NOW" S ^TMP($J,"PXRMXPAT",DFN,"REM",ITEM)=ITEM_U_STATUS
  1. .....I PXRMREP="D" D SDET^PXRMXDT1(DFN,STATUS,NAM,FACILITY,INP)
  1. .....I PXRMREP="S" D SUM^PXRMXDT1(DFN,STATUS,FACILITY,NAM,LOC)
  1. I $D(^TMP($J,"PXRM CNBD"))>0 D ERRMSG^PXRMXDT1("C")
  1. K ^TMP($J,"PXRM CNBD")
  1. S TEXT="Elapsed time for reminder evaluation: "_$$DETIME^PXRMXSL1(START,$H)
  1. S ^XTMP(PXRMXTMP,"TIMING","REMINDER EVALUATION")=TEXT
  1. I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) W !,TEXT
  1. K ^TMP($J,"PXRM PATIENT EVAL")
  1. Q
  1. ;