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

BSDCCR5.m

Go to the documentation of this file.
  1. BSDCCR5 ; IHS/ANMC/LJF - CLINIC CAPACITY REPORT CONT. ;
  1. ;;5.3;PIMS;;APR 26, 2002
  1. ;COPY OF SCRPW75 BEFORE PATCH #223
  1. ;IHS/ANMC/LJF 10/05/2000 removed time from date appt made in ^TMP
  1. ; 10/06/2000 added call to IHS footer code
  1. ; 6/15/2001 added code for Cache (Set $P of undef global)
  1. ; 3/13/2002 only process for selected clinics
  1. ;
  1. ;Input: SDBDT=beginning date
  1. ;Input: SDEDT=ending date
  1. ;Input: SDEX='0' for user report, '1' for Austin extract
  1. ;Output: ^TMP("SDNAVA",$J) array in the format:
  1. ; ^TMP("SDNAVA",$J,division)='x'
  1. ; ^TMP("SDNAVA",$J,division,credit_pair)='x'
  1. ; ^TMP("SDNAVA",$J,division,credit_pair,clinic_ifn)='x'
  1. ; ^TMP("SDNAVA",$J,division;credit_pair,clinic_ifn,date_scheduled)='x'
  1. ; where 'x' = flag '0' appts.^ave. flag '0' wait time^flag
  1. ; '1' appts.^ave. flag '1' wait time^flag '2'
  1. ; appts.^ave. flag '2' wait time^flag '3' appts.
  1. ; ^ave. flag '3' wait time
  1. ;
  1. N SDT,SDCT,DFN,SDADT,SDAP,SDAP0,SDWAIT,SDCL,SDFLAG,SDX,SDI,SC0,SDCP
  1. S SDT=SDBDT-1,(SDOUT,SDCT)=0
  1. K ^TMP("SDXNAVA",$J),^TMP("SDNAVA",$J)
  1. ;
  1. ;IHS/ANMC/LJF 3/13/2002 use IHS xref so only selected clinics used
  1. ; original VA code
  1. ;F S SDT=$O(^DPT("ASADM",SDT)) Q:SDOUT!'SDT!(SDT>SDEDT) S DFN=0 D
  1. ;.F S DFN=$O(^DPT("ASADM",SDT,DFN)) Q:SDOUT!'DFN S SDADT=0 D
  1. ;..F S SDADT=$O(^DPT("ASADM",SDT,DFN,SDADT)) Q:SDOUT!'SDADT D
  1. ;...S SDCT=SDCT+1 I SDCT#1000=0 D STOP Q:SDOUT
  1. ;...S SDAP0=$G(^DPT(DFN,"S",SDADT,0)) Q:$P(SDAP0,U,19)'=SDT
  1. ;...S SDCL=+SDAP0 Q:SDCL<1 S SDFLAG=+$P(SDAP0,U,26)
  1. ;...S SDWAIT=$S(SDADT<SDT:0,1:$$FMDIFF^XLFDT(SDADT,SDT,1))
  1. ;...S $P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+1))=$P($G(^TMP("SDXNAVA",$J,SDCL)),U,((SDFLAG*2)+1))+1
  1. ;...S $P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+2))=$P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+2))+SDWAIT
  1. ;...Q:SDEX=1!(SDFMT'="D")
  1. ;...Q
  1. ;..Q
  1. ;.Q
  1. ;
  1. ;IHS code using AIHSDAM xref on file 44 instead of ASADM on file 2
  1. NEW BSDCL,X,BSDN
  1. S X=0 F S X=$O(SDSORT(X)) Q:X="" S BSDCL(SDSORT(X))=X
  1. S SDCL=0 F S SDCL=$O(BSDCL(SDCL)) Q:'SDCL D
  1. . S SDT=SDBDT-1
  1. . F S SDT=$O(^SC("AIHSDAM",SDCL,SDT)) Q:'SDT!(SDT>SDEDT) D
  1. .. S SDADT=0 F S SDADT=$O(^SC("AIHSDAM",SDCL,SDT,SDADT)) Q:'SDADT D
  1. ... S BSDN=0
  1. ... F S BSDN=$O(^SC("AIHSDAM",SDCL,SDT,SDADT,BSDN)) Q:'BSDN D
  1. .... S SDCT=SDCT+1 I SDCT#1000=0 D STOP Q:SDOUT
  1. .... S SDWAIT=$S(SDADT<SDT:0,1:$$FMDIFF^XLFDT(SDADT,SDT,1))
  1. ....;
  1. ....S SDFLAG=0 ;IHS/ANMC/LJF 10/5/2000
  1. ....;
  1. ....;IHS/ANMC/LJF 6/15/2001
  1. ....I '$D(^TMP("SDXNAVA",$J,SDCL)) S ^TMP("SDXNAVA",$J,SDCL)=""
  1. ....I '$D(^TMP("SDXNAVA",$J,SDCL,(SDT\1))) S ^TMP("SDXNAVA",$J,SDCL,(SDT\1))=""
  1. ....;IHS/ANMC/LJF 6/15/2001 end of mods
  1. ....;
  1. ....S $P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+1))=$P($G(^TMP("SDXNAVA",$J,SDCL)),U,((SDFLAG*2)+1))+1
  1. ....S $P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+2))=$P(^TMP("SDXNAVA",$J,SDCL),U,((SDFLAG*2)+2))+SDWAIT
  1. ....Q:SDEX=1!(SDFMT'="D")
  1. ....;
  1. ....;IHS/ANMC/LJF 10/5/2000
  1. ....;S $P(^TMP("SDXNAVA",$J,SDCL,SDT),U,((SDFLAG*2)+1))=$P($G(^TMP("SDXNAVA",$J,SDCL,SDT)),U,((SDFLAG*2)+1))+1
  1. ....;S $P(^TMP("SDXNAVA",$J,SDCL,SDT),U,((SDFLAG*2)+2))=$P(^TMP("SDXNAVA",$J,SDCL,SDT),U,((SDFLAG*2)+2))+SDWAIT
  1. ....S $P(^TMP("SDXNAVA",$J,SDCL,(SDT\1)),U,((SDFLAG*2)+1))=$P($G(^TMP("SDXNAVA",$J,SDCL,(SDT\1))),U,((SDFLAG*2)+1))+1
  1. ....S $P(^TMP("SDXNAVA",$J,SDCL,(SDT\1)),U,((SDFLAG*2)+2))=$P(^TMP("SDXNAVA",$J,SDCL,(SDT\1)),U,((SDFLAG*2)+2))+SDWAIT
  1. ;IHS/ANMC/LJF 10/5/2000 end of mods
  1. ;IHS/ANMC/LJF 3/13/2002 end of mods
  1. ;
  1. ;
  1. Q:SDOUT S SDCL=0
  1. F S SDCL=$O(^TMP("SDXNAVA",$J,SDCL)) Q:'SDCL D
  1. .S SC0=$G(^SC(SDCL,0)) Q:'$L(SC0) Q:'$$CPAIR^BSDCCR1(SC0,.SDCP)
  1. .S SDIV=$$DIV^BSDCCR1(SC0) Q:'$L(SDIV)
  1. .Q:'$D(^TMP("SD",$J,SDIV,SDCP,SDCL))
  1. .S:'$D(^TMP("SDNAVA",$J,SDIV,SDCP)) ^TMP("SDNAVA",$J,SDIV,SDCP)=""
  1. .I SDMD S:'$D(^TMP("SDNAVA",$J,0,SDCP)) ^TMP("SDNAVA",$J,0,SDCP)=""
  1. .S SDX=^TMP("SDXNAVA",$J,SDCL),^TMP("SDNAVA",$J,SDIV,SDCP,SDCL)=$$AVE(SDX)
  1. .I SDMD S ^TMP("SDNAVA",$J,0,SDCP,SDCL)=$$AVE(SDX)
  1. .;
  1. .;IHS/ANMC/LJF 6/15/2001 add line for Cache
  1. .I SDMD,'$D(^TMP("SDNAVA",$J,0)) S ^TMP("SDNAVA",$J,0)=""
  1. .I '$D(^TMP("SDNAVA",$J,SDIV)) S ^TMP("SDNAVA",$J,SDIV)=""
  1. .I SDMD,'$D(^TMP("SDNAVA",$J,0,SDCP)) S ^TMP("SDNAVA",$J,0,SDCP)=""
  1. .I '$D(^TMP("SDNAVA",$J,SDIV,SDCP)) S ^TMP("SDNAVA",$J,SDIV,SDCP)=""
  1. .;IHS/ANMC/LJF end of new code
  1. .;
  1. .F SDI=1:1:8 S $P(^TMP("SDNAVA",$J,SDIV),U,SDI)=$P($G(^TMP("SDNAVA",$J,SDIV)),U,SDI)+$P(SDX,U,SDI)
  1. .I SDMD F SDI=1:1:8 S $P(^TMP("SDNAVA",$J,0),U,SDI)=$P($G(^TMP("SDNAVA",$J,0)),U,SDI)+$P(SDX,U,SDI)
  1. .F SDI=1:1:8 S $P(^TMP("SDNAVA",$J,SDIV,SDCP),U,SDI)=$P(^TMP("SDNAVA",$J,SDIV,SDCP),U,SDI)+$P(SDX,U,SDI)
  1. .I SDMD F SDI=1:1:8 S $P(^TMP("SDNAVA",$J,0,SDCP),U,SDI)=$P(^TMP("SDNAVA",$J,0,SDCP),U,SDI)+$P(SDX,U,SDI)
  1. .S SDT=0 F S SDT=$O(^TMP("SDXNAVA",$J,SDCL,SDT)) Q:SDOUT!'SDT D
  1. ..S SDX=^TMP("SDXNAVA",$J,SDCL,SDT),^TMP("SDNAVA",$J,SDIV,SDCP,SDCL,SDT)=$$AVE(SDX)
  1. ..Q
  1. .Q
  1. S SDIV="" F S SDIV=$O(^TMP("SDNAVA",$J,SDIV)) Q:'$L(SDIV) D
  1. .S SDCP=0 F S SDCP=$O(^TMP("SDNAVA",$J,SDIV,SDCP)) Q:'SDCP D
  1. ..S SDX=^TMP("SDNAVA",$J,SDIV,SDCP),^TMP("SDNAVA",$J,SDIV,SDCP)=$$AVE(SDX)
  1. ..Q
  1. .Q
  1. S SDIV="" F S SDIV=$O(^TMP("SDNAVA",$J,SDIV)) Q:SDIV="" D
  1. .S SDX=^TMP("SDNAVA",$J,SDIV),^TMP("SDNAVA",$J,SDIV)=$$AVE(SDX)
  1. .Q
  1. K ^TMP("SDXNAVA",$J)
  1. Q
  1. ;
  1. AVE(SDX) ;Calculate averages
  1. ;Input: SDX=string of appointment totals and total waiting time
  1. ;Output: string of appointment totals and average waiting time
  1. N SDI,SDY
  1. F SDI=2,4,6,8 D
  1. .S SDY=+$P(SDX,U,(SDI-1)),$P(SDX,U,(SDI-1))=SDY
  1. .S $P(SDX,U,SDI)=$FN($S(SDY=0:0,1:$P(SDX,U,SDI)/SDY),"",1)
  1. .Q
  1. Q SDX
  1. ;
  1. STOP ;Check for stop task request
  1. S:$D(ZTQUEUED) (SDOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
  1. ;
  1. ;Input: SDTX=array to return text
  1. D FOOT^BSDCCRL(.SDTX) Q ;IHS/ANMC/LJF 10/6/2000
  1. S SDTX(1)=SDLINE
  1. S SDTX(2)="NOTE: TYPE '0' activity represents appointments scheduled during the report time frame that were not indicated by the user or by"
  1. S SDTX(3)="calculation to be ""next available"" appointments. TYPE '1' activity represents appointments defined by the user as being ""next"
  1. S SDTX(4)="available"" appointments. TYPE '2' activity represents appointments calculated to be ""next available"" appointments. TYPE '3'"
  1. S SDTX(5)="activity represents appointments indicated both by the user and by calculation to be ""next available"" appointments. WAIT TIME is"
  1. S SDTX(6)="the average number of days from the date an appointment was scheduled to the date it is to be performed."
  1. S SDTX(7)=SDLINE
  1. Q