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

BSDPVW.m

Go to the documentation of this file.
  1. BSDPVW ; IHS/ANMC/LJF - PROVIDER WEEKLY SCHEDULE ;
  1. ;;5.3;PIMS;;APR 26, 2002
  1. ;
  1. WEEK ; -- select week by picking any date within that week
  1. NEW BSDDT
  1. S BSDDT=$$READ^BDGF("DO^::EX","Select DATE","TODAY","D DTHELP^BSDPVW")
  1. Q:BSDDT<1
  1. ;
  1. ;
  1. EN ; -- main entry point for BSDAM PROVIDER WEEK
  1. NEW VALMCNT
  1. D TERM^VALM0,CLEAR^VALM1
  1. D EN^VALM("BSDAM PROVIDER WEEK")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. S VALMHDR(1)=$$SP(10)_"Appointments for "_$$GET1^DIQ(200,BSDPRV,.01)
  1. S VALMHDR(1)=VALMHDR(1)_" for week of "_$$FMTE^XLFDT(BSDDT)
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. K ^TMP("BSDPVD",$J),^TMP("BSDPVD1",$J)
  1. S VALMCNT=0
  1. ;
  1. ; loop thru provider's clinics and then appts for date range
  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=$$FMADD^XLFDT(BSDDT,7)_".24"
  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. ... 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,.VALMCNT) Q
  1. ;
  1. ; put sorted list into display array
  1. NEW DATE,CLN,IEN,DATA,BSDCNT,LINE,X,I,LASTTM,ENDTM,LASTDT
  1. S (DATE,LASTDT)=0,BSDCNT=1
  1. F S DATE=$O(^TMP("BSDPVD1",$J,DATE)) Q:'DATE D
  1. . ;
  1. . ; mark beginning of new date
  1. . I (DATE\1)'=LASTDT D
  1. .. I +$G(LASTDT)'=0 D SET("","",BSDCNT,.VALMCNT) ;extra line
  1. .. S X="Appointments for "_$$FMTE^XLFDT(DATE,"D")
  1. .. D SET($$SP(79-$L(X)\2)_X,"",BSDCNT,.VALMCNT)
  1. .. S LASTDT=DATE\1
  1. . ;
  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 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(LASTTM) D
  1. .... S X=$E($P(DATE,".",2),1,2)-$E(LASTTM,1,2) ;difference in hours
  1. .... F I=1:1:X D SET("","",BSDCNT,.VALMCNT) ;determines # of lines
  1. ... S LASTTM=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,.VALMCNT)
  1. ... S BSDCNT=$G(BSDCNT)+1 ;number on display page
  1. ;
  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("BSDPVD2",$J),^TMP("BSDPVD",$J)
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. DTHELP ;EP; help for date range question
  1. D MSG^BDGF("Enter the beginning date for the report.",2,0)
  1. D MSG^BDGF("The display will display appointments for that date",1,0)
  1. D MSG^BDGF("and the next 6 for a week's worth.",1,1)
  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)
  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. ;