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

SDMHNS1.m

Go to the documentation of this file.
  1. SDMHNS1 ;MAF/ALB - MENTAL HEALTH NO SHOW REPORT (BGJ CONT.);SEPTEMBER 9, 2010
  1. ;;5.3;Scheduling;**578,588**;Aug13,1993;Build 53
  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. I $D(^TMP(NAMSPC1,$J)) D TOTAL^SDMHNS
  1. S SDXDIV=""
  1. F S SDXDIV=$O(^TMP(NAMSPC1,$J,SDXDIV)) Q:SDXDIV']""!(SDUP) D
  1. .I SDTL="CLIN" D
  1. ..S SDXCLIN=""
  1. ..F S SDXCLIN=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXCLIN)) Q:SDXCLIN']""!(SDUP) D
  1. ...S SDXNM=""
  1. ...F S SDXNM=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXCLIN,SDXNM)) Q:SDXNM']""!(SDUP) I SDXNM]"" D
  1. ....S SDXSTOP=0
  1. ....F S SDXSTOP=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXCLIN,SDXNM,SDXSTOP)) Q:'SDXSTOP!(SDUP) D
  1. .....S SDATE=0
  1. .....F S SDATE=$O(^TMP("SDNS",$J,SDXDIV,SDXCLIN,SDXNM,SDXSTOP,SDATE)) Q:'SDATE!(SDUP) D
  1. ......I $D(^TMP(NAMSPC1,$J,SDXDIV,SDXCLIN,SDXNM,SDXSTOP,SDATE)) D PRT
  1. .I SDTL="STOP" D
  1. ..S SDXSTOP=0
  1. ..F S SDXSTOP=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXSTOP)) Q:SDXSTOP']""!(SDUP) D
  1. ...S SDXNM=""
  1. ...F S SDXNM=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXSTOP,SDXNM)) Q:SDXNM']""!(SDUP) I SDXNM]"" D
  1. ....S SDXCLIN=""
  1. ....F S SDXCLIN=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXSTOP,SDXNM,SDXCLIN)) Q:SDXCLIN']""!(SDUP) D
  1. .....S SDATE=0
  1. .....F S SDATE=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXSTOP,SDXNM,SDXCLIN,SDATE)) Q:SDATE=""!(SDUP) D
  1. ......I $D(^TMP(NAMSPC1,$J,SDXDIV,SDXSTOP,SDXNM,SDXCLIN,SDATE)) D PRT
  1. .I SDTL="MEN" D
  1. ..S SDXREM=""
  1. ..F S SDXREM=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXREM)) Q:SDXREM']""!(SDUP) D
  1. ...S SDXNM=""
  1. ...F S SDXNM=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXREM,SDXNM)) Q:SDXNM']""!(SDUP) I SDXNM]"" D
  1. ....S SDXCLIN=""
  1. ....F S SDXCLIN=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXREM,SDXNM,SDXCLIN)) Q:SDXCLIN']""!(SDUP) D
  1. .....S SDATE=0
  1. .....F S SDATE=$O(^TMP(NAMSPC1,$J,SDXDIV,SDXREM,SDXNM,SDXCLIN,SDATE)) Q:SDATE=""!(SDUP) D
  1. ......I $D(^TMP(NAMSPC1,$J,SDXDIV,SDXREM,SDXNM,SDXCLIN,SDATE)) S SDXSTOP=$P(^TMP(NAMSPC1,$J,SDXDIV,SDXREM,SDXNM,SDXCLIN,SDATE),"^",6) D PRT
  1. Q
  1. ;
  1. ;
  1. PRT ;Print report
  1. N SDX
  1. D COUNT^SDMHNS
  1. I '$D(SDXFLG(SDXDIV)) D HEAD^SDMHNS S SDXFLG(SDXDIV)=1,SDXFLG(SDXDIV,SDXCLIN)=1
  1. I $D(SDXFLG(SDXDIV)),'$D(SDXFLG(SDXDIV,SDXCLIN)) S SDX=$$SETSTR("",X,1,80) D SET1(SDX) D HEAD1^SDMHNS S SDXFLG(SDXDIV,SDXCLIN)=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,SDXSORT1,SDXNM,SDXSORT2,SDATE))
  1. S SDXDFN=$P(SDXNODE,"^",1) Q:SDXDFN']""
  1. S SDXID=$P(SDXNODE,"^",4)
  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. I '$D(SDXFLG(SDXDIV,SDXCLIN)) D HEAD1^SDMHNS S SDXFLG(SDXDIV,SDXCLIN)=1
  1. S SDXDT=$$FMTE^XLFDT(SDXDT,"5")
  1. D SET
  1. ;S SDX=$$SETSTR(SDCOUNT,X,1,2)_$$SETSTR($P(^DPT(SDXDFN,0),"^",1),X,4,20)_$$SETSTR(SDXID,X,2,4)_$$SETSTR(SDXDT,X,6,20)_$$SETSTR(SDXCLIN,X,2,15)_$$SETSTR("*"_SDXSTAT,X,2,4) D SET1(SDX) I SDCOUNT=$P($G(TOTAL(SDXDIV,SDXCLIN)),"^",1) S SDCOUNT=0
  1. N SDPROV S SDPROV=""
  1. S SDX=$$SETSTR(SDCOUNT,X,1,3)_$$SETSTR($P(^DPT(SDXDFN,0),"^",1),X,3,20)_$$SETSTR(SDXID,X,2,5)_$$SETSTR(SDXDT,X,2,16)_$$SETSTR(SDXCLIN,X,2,30) D SET1(SDX) D PROV D
  1. .S SDX=$$SETSTR("*"_SDXSTAT,X,49,5)_$$SETSTR(SDPROV,X,1,26) D SET1(SDX) I SDCOUNT=$P($G(TOTAL(SDXDIV,SDXCLIN)),"^",1) S SDCOUNT=0
  1. ;D PATINFO
  1. ;D NOK
  1. ;D EC
  1. ;D PROV
  1. ;D MHTC
  1. D FUT
  1. ;D RESULTS
  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 strubg
  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("SDNS1",$J,SDLN,0)=X Q
  1. SET ;
  1. S X="" S SDLN=SDLN+1,^TMP("SDNS1",$J,SDLN,0)=X
  1. Q
  1. ;
  1. PATINFO ;Patients home, cell and office phones
  1. N SDPHON,SDX,VAROOT,SDEC6,SDEC5
  1. S DFN=SDXDFN,VAROOT="SDEC6" D ADD^VADPT
  1. I $D(SDEC6) D
  1. . S SDPHON("HOME")=SDEC6(8)
  1. S DFN=SDXDFN,VAOA("A")=5,VAROOT="SDEC5" D OAD^VADPT
  1. I $D(SDEC5) D
  1. . S SDPHON("WORK")=SDEC5(8)
  1. D GETS^DIQ(2,SDXDFN_",",".134","E","SDPHON")
  1. I $D(SDPHON(2,SDXDFN_",")) D
  1. .S SDPHON("CELL")=$G(SDPHON(2,SDXDFN_",",".134","E"))
  1. I $D(SDPHON("HOME")),SDPHON("HOME")]"" S SDX=$$SETSTR("Home: ",X,4,7)_$$HLPHONE^HLFNC(SDPHON("HOME"),,) D SET1(SDX)
  1. I $D(SDPHON("WORK")),SDPHON("WORK")]"" S SDX=$$SETSTR("Work: ",X,4,7)_$$HLPHONE^HLFNC(SDPHON("WORK"),,) D SET1(SDX)
  1. I $D(SDPHON("CELL")),SDPHON("CELL")]"" S SDX=$$SETSTR("Cell: ",X,4,7)_$$HLPHONE^HLFNC(SDPHON("CELL"),,) D SET1(SDX)
  1. Q
  1. ;
  1. ;
  1. NOK ; Next of Kin information
  1. N SDNOK,SDNOK2,SDNOKNM,SDNOKNM2,SDNOKR,SDNOKR2,SDNOKPH,SDNOKPH2,SDNOKPO,SDNOKPO2,SDNOKFL,SDX,SDSET,VAOA,VAROOT,SDEC3,SDEC4,X,SDPHON
  1. S DFN=SDXDFN,VAROOT="SDEC3" D OAD^VADPT
  1. S DFN=SDXDFN,VAOA("A")=3,VAROOT="SDEC4" D OAD^VADPT
  1. D GETS^DIQ(2,SDXDFN_",",".21011;.211011","E","SDPHON")
  1. I $D(SDPHON(2,SDXDFN_",")) D
  1. .S SDPHON("K-WORK")=$G(SDPHON(2,SDXDFN_",",".21011","E"))
  1. .S SDPHON("K2-WORK")=$G(SDPHON(2,SDXDFN_",",".211011","E"))
  1. S SDNOKFL=0
  1. I $D(SDEC3) D
  1. .S SDNOKNM=SDEC3(9),SDNOKR=SDEC3(10),SDNOKPH=SDEC3(8),SDNOKPO=SDPHON("K-WORK")
  1. I $D(SDEC4) D
  1. .S SDNOKNM2=SDEC4(9),SDNOKR2=SDEC4(10),SDNOKPH2=SDEC3(8),SDNOKPO2=SDPHON("K2-WORK")
  1. S X="",SDX="",SDSET=0
  1. I $D(SDNOKNM),SDNOKNM]"" D:'SDNOKFL NOKFL S SDX=$$SETSTR("NOK: "_SDNOKNM,X,6,20) S SDSET=1
  1. I $D(SDNOKNM2),SDNOKNM2]"" D:'SDNOKFL NOKFL S SDX=SDX_$$SETSTR("NOK2: "_SDNOKNM2,X,20,20) S SDSET=1
  1. I SDSET D SET1(SDX)
  1. S X="",SDX="",SDSET=0
  1. I $D(SDNOKR),SDNOKR]"" D:'SDNOKFL NOKFL S SDX=$$SETSTR("Relation: "_SDNOKR,X,6,20) S SDSET=1
  1. I $D(SDNOKR2),SDNOKR2]"" D:'SDNOKFL NOKFL S SDX=SDX_$$SETSTR("Relation: "_SDNOKR2,X,20,20) S SDSET=1
  1. I SDSET D SET1(SDX)
  1. S X="",SDX="",SDSET=0
  1. I $D(SDNOKPH),SDNOKPH]"" D:'SDNOKFL NOKFL S SDX=$$SETSTR(" Phone: ",X,6,12)_$$SETSTR($$HLPHONE^HLFNC(SDNOKPH,,),X,1,15) S SDSET=1
  1. I $D(SDNOKPH2),SDNOKPH2]"" D:'SDNOKFL NOKFL S SDX=SDX_$$SETSTR(" Phone: ",X,13,12)_$$SETSTR($$HLPHONE^HLFNC(SDNOKPH2,,),X,1,15) S SDSET=1
  1. I SDSET D SET1(SDX)
  1. S X="",SDX="",SDSET=0
  1. I $D(SDNOKPO),SDNOKPO]"" D:'SDNOKFL NOKFL S SDX=$$SETSTR("Office Phone: ",X,6,14)_$$SETSTR($$HLPHONE^HLFNC(SDNOKPO,,),X,1,13) S SDSET=1
  1. I $D(SDNOKPO2),SDNOKPO2]"" D:'SDNOKFL NOKFL S SDX=SDX_$$SETSTR("Office Phone: ",X,13,14)_$$SETSTR($$HLPHONE^HLFNC(SDNOKPO2,,),X,1,15) S SDSET=1
  1. I SDSET D SET1(SDX)
  1. Q
  1. ;
  1. ;
  1. NOKFL S SDX=$$SETSTR(" Next of Kin: ",X,1,16) D SET1(SDX) S SDNOKFL=1,SDX=""
  1. Q
  1. ;
  1. ;
  1. EC ;display emergency contact information
  1. N SDEC1,SDEC2,SDX,DFN,X,SDPHON,VAROOT,VAOA
  1. Q:'$G(SDXDFN)
  1. S DFN=SDXDFN
  1. S VAOA("A")=1,VAROOT="SDEC1" D OAD^VADPT ; Get Primary EC
  1. S VAOA("A")=4,VAROOT="SDEC2" D OAD^VADPT ; Get Secondary EC
  1. D GETS^DIQ(2,SDXDFN_",",".33011;.331011","E","SDPHON")
  1. I $D(SDPHON(2,SDXDFN_",")) D
  1. .S SDPHON("E-WORK")=$G(SDPHON(2,SDXDFN_",",".33011","E"))
  1. .S SDPHON("E2-WORK")=$G(SDPHON(2,SDXDFN_",",".331011","E"))
  1. I SDEC1(9)]"" D
  1. .S X=""
  1. . I $D(SDEC1)!($D(SDEC2)) S SDX=$$SETSTR(" Emergency Contact: ",X,1,50) D SET1(SDX)
  1. . ;Contacts name and realtionship
  1. . S SDX=""
  1. . I SDEC1(9)]"" S SDX=$$SETSTR("E-Cont.: ",X,6,10)_$E(SDEC1(9),1,20)
  1. . I SDEC2(9)]"" S SDX=SDX_$$SETSTR("E2-Cont.: ",X,20,10)_$E(SDEC2(9),1,20)
  1. . I SDX]"" D SET1(SDX)
  1. . S SDX=""
  1. . I SDEC1(10)]"" S SDX=$$SETSTR("Relation: ",X,6,10)_SDEC1(10)
  1. . I SDEC2(10)]"" S SDX=SDX_$$SETSTR("Relation: ",X,25,10)_SDEC2(10)
  1. . I SDX]"" D SET1(SDX)
  1. . ;ECs address lines 1, 2 and 3
  1. . S SDX=""
  1. . I SDEC1(1)]"" S SDX=$$SETSTR(SDEC1(1),X,15,20)
  1. . I SDEC2(1)]"" S SDX=SDX_$$SETSTR(SDEC2(1),X,20,20)
  1. . I SDX]"" D SET1(SDX)
  1. . S SDX=""
  1. . I SDEC1(2)]"" S SDX=$$SETSTR(SDEC1(2),X,15,20)
  1. . I SDEC2(2)]"" S SDX=SDX_$$SETSTR(SDEC2(2),X,20,20)
  1. . I SDX]"" D SET1(SDX)
  1. . S SDX=""
  1. . I SDEC1(3)]"" S SDX=$$SETSTR(SDEC1(3),X,15,20)
  1. . I SDEC2(3)]"" S SDX=SDX_$$SETSTR(SDEC2(3),X,20,20)
  1. . I SDX]"" D SET1(SDX)
  1. . S SDX=""
  1. . ;Emergency Contact 1 City, State an Zip+4
  1. . I SDEC1(4)]"" D
  1. . . S SDX=""
  1. . . N SDZ
  1. . . S SDZ=$L(SDEC1(4))
  1. . . S SDX=$$SETSTR(SDEC1(4),X,15,SDZ)
  1. . . I SDEC1(5)]"" S SDX=SDX_", "_$$GET1^DIQ(5,+SDEC1(5),1)
  1. . . S SDX=SDX_" "_$P(SDEC1(11),"^",2)
  1. . ;Emergency Contact 2 City State and Zip+4
  1. . I SDEC2(4)]"" D
  1. . . S SDZ=$L(SDEC2(4))
  1. . . S SDX=SDX_$$SETSTR(SDEC2(4),X,23,SDZ)
  1. . . I SDEC2(5)]"" S SDX=SDX_", "_$$GET1^DIQ(5,+SDEC2(5),1)
  1. . . S SDX=SDX_" "_$P(SDEC2(11),"^",2)
  1. . I SDX]"" D SET1(SDX)
  1. . ;Home and work phones
  1. . S SDX=""
  1. . I SDEC1(8)]"" S SDX=$$SETSTR("Phone: ",X,6,8)_$$HLPHONE^HLFNC(SDEC1(8),,)
  1. . I SDEC2(8)]"" S SDX=SDX_$$SETSTR("Phone: ",X,20,8)_$$HLPHONE^HLFNC(SDEC2(8),,)
  1. . I SDX]"" D SET1(SDX)
  1. . S SDX=""
  1. . I SDPHON("E-WORK")]"" S SDX=$$SETSTR("Work Phone: ",X,6,11)_$$HLPHONE^HLFNC(SDPHON("E-WORK"),,)
  1. . I SDPHON("E2-WORK")]"" S SDX=SDX_$$SETSTR("Work Phone: ",X,17,12)_$$HLPHONE^HLFNC(SDPHON("E2-WORK"),,)
  1. .I SDX]"" D SET1(SDX)
  1. D KVAR^VADPT
  1. Q
  1. ;
  1. ;
  1. PROV ;Clinic Default Provider
  1. N SDPNUM,SDPNODE,SDX
  1. S SDPNUM=0
  1. F SDPNUM=0:0 S SDPNUM=$O(^SC(SDXCLIEN,"PR",SDPNUM)) Q:'(+SDPNUM) I $D(^SC(SDXCLIEN,"PR",SDPNUM,0)) S SDPNODE=^SC(SDXCLIEN,"PR",SDPNUM,0) I $P(SDPNODE,"^",1)&($P(SDPNODE,"^",2)) D Q:SDUP
  1. .S SDPROV=$P(^VA(200,$P(SDPNODE,"^",1),0),"^",1)
  1. Q
  1. ;
  1. ;
  1. MHTC ;Mental Health Treatment Coordinator
  1. S SDX=""
  1. S SDX=$$SETSTR("MHTC: ",X,4,11)
  1. D SET1(SDX)
  1. Q
  1. ;
  1. ;
  1. FUT ; FUTURE SCHEDULED APPTS.
  1. N SDARRAY,SDCOUNT,SDX,X1,X2,X,SDNOSDAY
  1. ;S SDNOSDAY=$$GET^XPAR("PKG.SCHEDULING","SDMH NO SHOW DAYS",1,"E")
  1. S SDNOSDAY=$$GET^XPAR("SYS^PKG.SCHEDULING","SDMH NO SHOW DAYS",1,"Q")
  1. S SDNOSDAY=$S(SDNOSDAY]"":SDNOSDAY,1:30)
  1. ;Find Scheduled apointments witin 30 days using scheduling API
  1. S X1=DT,X2=SDNOSDAY 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. . S SDX=$$SETSTR(" Future Scheduled Appointments: ",X,1,40) D SET1(SDX)
  1. . N SDFA,SDFNODE,SDFUTDT ;,SDFUTCNT
  1. . ;S SDFUTCNT=0 ;List up to 6 future appts for one patient
  1. . S SDFA=0 F S SDFA=$O(^TMP($J,"SDAMA301",SDXDFN,SDFA)) Q:SDFA="" D
  1. ..S (SDX,X)=""
  1. ..S SDFUTDT=$$FMTE^XLFDT(SDFA,"5") S SDFNODE=^TMP($J,"SDAMA301",SDXDFN,SDFA)
  1. ..S SDX=$$SETSTR(SDFUTDT,X,12,18)_$$SETSTR($P($P(SDFNODE,"^",2),";",2),X,2,30)
  1. ..D SET1(SDX)
  1. .Q
  1. I SDCOUNT'>0 D
  1. .S (SDX,X)=""
  1. .S SDX=" Future Scheduled Appointments: NO APPOINTMENTS SCHEDULED WITHIN "_SDNOSDAY_$S(SDNOSDAY=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. RESULTS ;Reminder information
  1. N SDX
  1. S (SDX,X)=""
  1. S SDX=$$SETSTR("Results: ",X,4,9) D SET1(SDX)
  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. ;