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

SDMHPRO1.m

Go to the documentation of this file.
  1. SDMHPRO1 ;MAF/ALB,JAS - MENTAL HEALTH PROACTIVE HIGH RISK REPORT (BGJ CONT.) ; MAR 29, 2024@14:00
  1. ;;5.3;Scheduling;**588,877**;Aug 13,1993;Build 14
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. DATA ; Set up the data for the patient
  1. ; piece 1 = dfn
  1. ; piece 2 = Appointment Date and time
  1. ; piece 3 = status N(Noshow) or NA (Noshow with auto rebook)
  1. ; piece 4 = PID last 4 of SSN
  1. ; piece 5 = clinic ien ^SC(
  1. ; piece 6 = stop code ien ^DIC(40.7
  1. ;
  1. ;
  1. EN ;PRINT OF THE ^TMP
  1. N SDXDIV,SDXCLIN,SDXDFN,SDXSTOP,SDXREM,SDXNM,SDCOUNT,SDATE
  1. S (SDXDFN,SDXREM,SDCOUNT)=0
  1. K SDPAT
  1. I $D(^TMP(NAMSPC1,$J)) D TOTAL^SDMHPRO
  1. S SDXDIV=""
  1. F S SDXDIV=$O(^TMP(NAMSPC1,$J,SDXDIV)) Q:SDXDIV']""!(SDUP) D
  1. .S SDCOUNT=0
  1. .I SDTL="CLIN" D N SDX S SDX=$$SETSTR(" ",X,1,79) D SET1(SDX)
  1. ..S SDXNM=""
  1. ..F S SDXNM=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXNM)) Q:SDXNM']""!(SDUP) D
  1. ...S SDATE=0
  1. ...F S SDATE=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXNM,SDATE)) Q:'SDATE!(SDUP) D
  1. ....S SDXCLIN=""
  1. ....F S SDXCLIN=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXNM,SDATE,SDXCLIN)) Q:SDXCLIN']""!(SDUP) D
  1. .....S SDXSTOP=0
  1. .....F S SDXSTOP=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXNM,SDATE,SDXCLIN,SDXSTOP)) Q:'SDXSTOP!(SDUP) D
  1. ......I $D(^TMP(NAMSPC1,$J,SDXDIV,SDXNM,SDATE,SDXCLIN,SDXSTOP)) Q:$D(SDPAT(SDXDIV,$O(^DPT("B",$E(SDXNM,1,30),0)))) D PRT
  1. .N SDX S SDX=$$SETSTR(" ",X,1,81) D SET1(SDX)
  1. Q
  1. ;
  1. ;
  1. PRT ;Print report
  1. N SDX,SDXX
  1. D COUNT^SDMHPRO
  1. I '$D(SDXFLG(SDXDIV)) D HEAD^SDMHPRO S SDXFLG(SDXDIV)=1,SDXFLG(SDXDIV,SDXCLIN)=1
  1. I $D(SDXFLG(SDXDIV)),'$D(SDXFLG(SDXDIV)) S SDX=$$SETSTR("",X,1,80) D SET1(SDX) D HEAD1^SDMHPRO S SDXFLG(SDXDIV)=1
  1. N SDXNODE,SDXID,SDXDT,SDXSTAT,SDXSORT1,SDXSORT2,SDXCLIEN,SDX,SDDSS
  1. S SDXSORT1=$S(SDTL="MEN":SDXREM,SDTL="STOP":SDXSTOP,1:SDXCLIN)
  1. S SDXSORT2=$S(SDTL="CLIN":SDXSTOP,1:SDXCLIN)
  1. S SDXNODE=$G(^TMP(NAMSPC1,$J,SDXDIV,SDXNM,SDATE,SDXCLIN,SDXSTOP))
  1. S SDXDFN=$P(SDXNODE,"^",1) Q:SDXDFN']""
  1. S SDXID=$E($P(SDXNODE,"^",4),1,5)
  1. S SDXDT=$P(SDXNODE,"^",2)
  1. S SDXSTAT=$P(SDXNODE,"^",3)
  1. S SDXCLIEN=$P(SDXNODE,"^",5)
  1. S SDDSS=$P($G(^DIC(40.7,+$P(SDXNODE,"^",6),0)),"^",2)
  1. S SDPAT(SDXDIV,SDXDFN)=""
  1. I '$D(SDXFLG(SDXDIV)) D HEAD1^SDMHPRO S SDXFLG(SDXDIV)=1
  1. S SDXDT=$$FMTE^XLFDT(SDXDT,"5")
  1. D SET
  1. S SDXX=$$SETSTR(SDCOUNT,X,1,2)_$$SETSTR($P(^DPT(SDXDFN,0),"^",1),X,3,20)_$$SETSTR(SDXID,X,2,5) I SDCOUNT=$P($G(TOTAL(SDXDIV)),"^",1) S SDCOUNT=0
  1. D FUT
  1. Q
  1. ;
  1. ;
  1. SETSTR(W,X,Y,Z) ;SET UP THE STRING
  1. ;W= String
  1. ;X= Variable to set it into
  1. ;Y= column to set it into
  1. ;Z= length of the string
  1. S X=$$SETSTR^SDUL1(W,X,Y,Z)
  1. Q X
  1. SET1(X) ;Sets the XMTEXT global
  1. S SDLN=SDLN+1,^TMP("SDMHP",$J,SDLN,0)=X Q
  1. SET ;
  1. S X="" S SDLN=SDLN+1,^TMP("SDPRO1",$J,SDLN,0)=X
  1. Q
  1. ;
  1. ;
  1. FUT ; FUTURE SCHEDULED APPTS.
  1. N SDARRAY,SDCOUNT,SDX,X1,X2,X,SDPRODAY
  1. S SDPRODAY=$$GET^XPAR("SYS^PKG.SCHEDULING","SDMH PROACTIVE DAYS",1,"Q")
  1. S SDPRODAY=$S(SDPRODAY]"":SDPRODAY,1:30)
  1. ;Find Scheduled apointments for SDPRODAY days using scheduling API
  1. S X1=DT,X2=SDPRODAY D C^%DTC S SDX=X
  1. S SDARRAY(1)=DT_";"_SDX
  1. S SDARRAY("SORT")="P"
  1. S SDARRAY(3)="NT;R"
  1. S SDARRAY(4)=SDXDFN
  1. S SDARRAY("FLDS")="1;2;3;4;10;13"
  1. S SDCOUNT=$$SDAPI^SDAMA301(.SDARRAY)
  1. I SDCOUNT>0 D Q:SDUP
  1. .;Get info on future scheduled appointments and display it
  1. . S SDX="",X=""
  1. . N SDFA,SDFNODE,SDFUTDT
  1. . S SDFA=0 F S SDFA=$O(^TMP($J,"SDAMA301",SDXDFN,SDFA)) Q:SDFA="" D ;!($P($G(SDFA),".",1))'=$P(SDBEG,".",1) D
  1. ..S (SDX,X)=""
  1. ..S SDFUTDT=$$FMTE^XLFDT(SDFA,"5") S SDFNODE=^TMP($J,"SDAMA301",SDXDFN,SDFA)
  1. ..N SDCLCD S SDCLCD=$P($P($G(SDFNODE),"^",2),";",1) I SDCLCD]"" S SDCLCD=$P($G(^SC(SDCLCD,0)),"^",15) Q:SDXDIV'=$P($G(^DG(40.8,SDCLCD,0)),"^",1)
  1. ..I '$D(SDXX) S SDX=$$SETSTR(SDFUTDT,X,32,16)_$$SETSTR($P($P(SDFNODE,"^",2),";",2),X,2,30)
  1. ..I $D(SDXX) S SDX=SDXX_$$SETSTR(SDFUTDT,X,2,16)_$$SETSTR($P($P(SDFNODE,"^",2),";",2),X,2,30) K SDXX
  1. ..D SET1(SDX)
  1. .N SDX S SDX=$$SETSTR(" ",X,1,81) D SET1(SDX)
  1. .Q
  1. I SDCOUNT'>0 D
  1. .S (SDX,X)=""
  1. .S SDX=" Future Scheduled Appointments: NO APPOINTMENTS SCHEDULED WITHIN "_SDPRODAY_$S(SDPRODAY=1:" DAY",1:" DAYS")
  1. .S SDX=$$SETSTR(SDX,X,1,80) D SET1(SDX)
  1. ;.S SDX=$$SETSTR(" Future Scheduled Appointments: NO APPOINTMENTS SCHEDULED WITHIN 30 DAYS",X,1,80) D SET1(SDX)
  1. K ^TMP($J,"SDAMA301")
  1. Q
  1. ;
  1. ;
  1. PID(DFN) ; Return PID
  1. ; INPUT - DFN
  1. ; OUTPUT - PID or 'UNKNOWN'
  1. N VA
  1. D PID^VADPT6
  1. Q $S(VA("BID")]"":VA("BID"),1:"UNKNOWN")
  1. ;