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

BSDPVD.m

Go to the documentation of this file.
  1. BSDPVD ; IHS/ANMC/LJF - PROVIDER'S DAILY SCHEDULE ;
  1. ;;5.3;PIMS;**1005**;MAY 28, 2004
  1. ;IHS/OIT/LJF 03/09/2006 PATCH 1005 screen out cancelled appointments
  1. ;
  1. NEW BSDVW,BSDPRV,BSDDT
  1. PROV ; -- select provider to display
  1. S BSDPRV=+$$READ^BDGF("PO^200:EMQZ","Select PROVIDER","","","I $$SCREEN^DGPMDD(+Y)")
  1. Q:BSDPRV<1
  1. D CLINICS ;find all clinics linked to provider
  1. Q:'$D(^TMP("BSDPVD2",$J))
  1. ;
  1. DAYWEEK ; -- select view by day or week
  1. S BSDVW=$$READ^BDGF("SO^D:DAILY;W:WEEKLY","Select DISPLAY TIMEFRAME")
  1. I "DW"'[BSDVW Q
  1. I BSDVW="W" D ^BSDPVW Q ;weekly display
  1. ;
  1. DATE ; -- select day to view
  1. S BSDDT=$$READ^BDGF("DO^::EX","Select DATE","TODAY") I BSDDT<1 D PROV Q
  1. ;
  1. ;
  1. EN ;EP; -- main entry point for BSDAM PROVIDER DAY
  1. NEW VALMCNT
  1. D TERM^VALM0,CLEAR^VALM1
  1. D EN^VALM("BSDAM PROVIDER DAY")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. S VALMHDR(1)=$$SP(15)_$$CONF^BDGF
  1. S VALMHDR(2)=$$SP(15)_"Appointments for "_$$GET1^DIQ(200,BSDPRV,.01)
  1. S VALMHDR(2)=VALMHDR(2)_" for "_$$FMTE^XLFDT(BSDDT,"D")
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. S BSDLN=0
  1. K ^TMP("BSDPVD",$J),^TMP("BSDPVD1",$J)
  1. ;
  1. ; loop thru provider's clinics and then appts for date
  1. NEW CLN,CLNM,IEN,DATE,END,NODE
  1. S CLN=0 F S CLN=$O(^TMP("BSDPVD2",$J,CLN)) Q:'CLN D
  1. . S CLNM=^TMP("BSDPVD2",$J,CLN)
  1. . ;
  1. . S DATE=BSDDT-.0001,END=BSDDT_".2400"
  1. . F S DATE=$O(^SC(CLN,"S",DATE)) Q:'DATE Q:(DATE>END) D
  1. .. S IEN=0 F S IEN=$O(^SC(CLN,"S",DATE,1,IEN)) Q:'IEN D
  1. ... ;
  1. ... ; sort by date,clinic; save clinic ien, patient, length, info
  1. ... S NODE=$G(^SC(CLN,"S",DATE,1,IEN,0)) Q:'NODE
  1. ... Q:$P(NODE,U,9)="C" ;skip if appt cancelled;IHS/OIT/LJF 03/09/2006 PATCH 1005
  1. ... S ^TMP("BSDPVD1",$J,DATE,CLNM,IEN)=$P(NODE,U,1,4)_U_CLN_U_$G(^SC(CLN,"S",DATE,1,IEN,"OB"))
  1. ;
  1. I '$D(^TMP("BSDPVD1",$J)) D SET("NO APPTS FOR PROVIDER","",0,.BSDLN) S VALMCNT=1 Q
  1. ;
  1. ; put sorted list into display array
  1. NEW DATE,CLN,IEN,DATA,BSDCNT,LINE,X,I,LAST,ENDTM
  1. S DATE=0 F S DATE=$O(^TMP("BSDPVD1",$J,DATE)) Q:'DATE D
  1. . S CLN=0 F S CLN=$O(^TMP("BSDPVD1",$J,DATE,CLN)) Q:CLN="" D
  1. .. S IEN=0 F S IEN=$O(^TMP("BSDPVD1",$J,DATE,CLN,IEN)) Q:'IEN D
  1. ... S DATA=^TMP("BSDPVD1",$J,DATE,CLN,IEN)
  1. ... S BSDCNT=$G(BSDCNT)+1 ;number on display page
  1. ... S LINE=$J(BSDCNT,2)_". "_$P($$FMTE^XLFDT(DATE,2),"@",2) ;appt time
  1. ... S ENDTM=$P($$FMTE^XLFDT($$FMADD^XLFDT(DATE,0,0,$P(DATA,U,2))),"@",2)
  1. ... S LINE=LINE_"-"_ENDTM_$TR($P(DATA,U,6),"O","*") ;end time/overbk
  1. ... S LINE=$$PAD(LINE,17)_$E(CLN,1,11) ;end time & clinic
  1. ... S LINE=$$PAD(LINE,30)_$E($$NAMEPRT^BDGF2(+DATA,0),1,18) ;patient
  1. ... S LINE=$$PAD(LINE,50)_$E($P(DATA,U,4),1,29) ;appt info
  1. ... ;
  1. ... ; add extra lines if end time diff hour from last appt
  1. ... I $D(LAST) D
  1. .... S X=$E($P(DATE,".",2),1,2)-$E(LAST,1,2) ;difference in hours
  1. .... F I=1:1:X D SET("","",.BSDCNT,.BSDLN) ;determines # of lines
  1. ... S LAST=ENDTM ;save end time to compare with next appt
  1. ... ;
  1. ... ; now print this appt
  1. ... D SET(LINE,(+DATA)_U_$P(DATA,U,5)_U_DATE,.BSDCNT,.BSDLN)
  1. ;
  1. S VALMCNT=BSDLN
  1. K ^TMP("BSDPVD1",$J)
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K ^TMP("BSDPVD",$J),^TMP("BSDPVD2",$J),VALMCNT
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. SET(DATA,IENS,COUNT,LINE) ; -- put data into display array
  1. S LINE=LINE+1 ;line number
  1. S ^TMP("BSDPVD",$J,LINE,0)=DATA
  1. S ^TMP("BSDPVD",$J,"IDX",LINE,COUNT)=IENS
  1. Q
  1. ;
  1. CLINICS ;EP; -- sets ^tmp for provider's clinics
  1. ; called by ^BDGPV to display provider's appts
  1. ; If BSDQUIET is set & >0 no messages display on screen
  1. ;
  1. NEW CLN,IEN,NAME
  1. K ^TMP("BSDPVD2",$J)
  1. S CLN=0 F S CLN=$O(^SC("AIHSDPR",BSDPRV,CLN)) Q:'CLN D
  1. . S IEN=0 F S IEN=$O(^SC("AIHSDPR",BSDPRV,CLN,IEN)) Q:'IEN D
  1. .. I ^SC("AIHSDPR",BSDPRV,CLN,IEN)'=1 Q ;not default provider
  1. .. S NAME=$$GET1^DIQ(44,CLN,.01)
  1. .. S ^TMP("BSDPVD2",$J,CLN)=NAME
  1. .. Q:$G(BSDQUIET) ;no writing to screen
  1. .. I '$D(^TMP("BSDPVD2",$J)) D MSG^BDGF($$SP(15)_"Provider's Clinics:",2,0)
  1. .. D MSG^BDGF($$SP(18)_NAME,1,0)
  1. Q:$G(BSDQUIET)
  1. I '$D(^TMP("BSDPVD2",$J)) D MSG^BDGF("NO clinics found for provider!",2,1)
  1. E D MSG^BDGF("",1,0)
  1. Q
  1. ;
  1. PAD(D,L) ;EP -- SUBRTN to pad length of data
  1. ; -- D=data L=length
  1. Q $E(D_$$REPEAT^XLFSTR(" ",L),1,L)
  1. ;
  1. SP(N) ; -- SUBRTN to pad N number of spaces
  1. Q $$PAD(" ",N)