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

BSDCHKIN.m

Go to the documentation of this file.
  1. BSDCHKIN ;cmi/anch/maw - BSD CheckIn Auto Refresh 1/25/2007 1:06:21 PM
  1. ;;5.3;PIMS;**1007,1009**;FEB 27, 2007
  1. ;
  1. EN ;EP; -- main entry point for BSDAM CHECKIN LIST
  1. ; variables already set coming into this routine:
  1. ; SDCLN = clinic ien in file
  1. ; BSDDT = date of clinic appointments to list
  1. ;
  1. K ^TMP("BSDCHK",$J)
  1. K ^TMP("SDAM",$J)
  1. S SDAMTYP="C"
  1. D CLN
  1. ;Q:'$D(SDCLN) cmi/anch/maw 8/15/2007 orig line
  1. Q:'$D(BSDCLN) ;cmi/anch/maw 8/15/2007 new line
  1. D DR
  1. Q:'$G(BSDDT)
  1. D EN1
  1. Q
  1. ;
  1. ;D REFRESH(BSDDT,.VAUTC)
  1. EN1 ;PEP; entry point when clinic or clinic array is known - see technical documentation
  1. D TERM^VALM0
  1. NEW VALMCNT D EN^VALM("BSDAM CHECKIN LIST")
  1. D KILL^AUPNPAT,KVA^VADPT,CLEAR^VALM1
  1. Q
  1. ;
  1. GUI(BSDCLN,BSDDT) ;-- future GUI entry point for display
  1. Q
  1. ;
  1. CLN ;-- lets get the clinic
  1. K VAUTD
  1. I $G(BSDDIV) D ;division assumed
  1. . I '$D(DIV) Q ;no division variable set
  1. . I DIV="" S VAUTD=1 Q ;already set to all divisions
  1. . S VAUTD=0,VAUTD(DIV)=$$DIVNM^BSDU(DIV) ;division already set
  1. I '$D(VAUTD) D ASK2^SDDIV I Y<0 S BSDQ="" Q
  1. D GETCLN
  1. Q
  1. ;
  1. GETCLN ;-- get clinics
  1. S DIC(0)="AEMQZ",DIC="^SC(",DIC("A")="Select Clinic: "
  1. S DIC("S")="I $P(^(0),U,3)=""C""&'$G(^(""OOS""))&$S(VAUTD:1,$D(VAUTD(+$P(^(0),U,15))):1,'+$P(^(0),U,15)&$D(VAUTD(+$O(^DG(40.8,0)))):1,1:0)"
  1. S DIC("W")=$$INACTMSG^BSDU ;IHS/ANMC/LJF 8/17/2000 added this line
  1. D ^DIC
  1. I $D(DUOUT) K BSDCLN Q
  1. Q:Y<0
  1. ;S SDCLN=+Y ;cmi/anch/maw 8/15/2007 orig line
  1. I '$$ACTV^BSDU(+Y,DT) D
  1. . S X="** Inactivated on "_$$INACTVDT^BSDU(+Y)_" **"
  1. . D EN^DDIOL(.X)
  1. S BSDCLN(+Y)="" ;cmi/anch/maw multiple clinics
  1. ;D EXPNDPC^BSDU(2,.SDCLN) ;cmi/anch/maw 8/15/2007 orig line
  1. D EXPNDPC^BSDU(2,.Y)
  1. G GETCLN
  1. Q
  1. ;
  1. DR ;-- select date range
  1. S %DT="AE",%DT("A")="Select Date: ",%DT("B")=$$FMTE^XLFDT(DT)
  1. D ^%DT
  1. I Y=-1 K BSDDT Q
  1. S BSDDT=+Y
  1. S SDBEG=BSDDT_".0001"
  1. S SDEND=BSDDT_".9999"
  1. Q
  1. ;
  1. REFRESH(BSDDT,BSDCLNA) ;-- lets build the date/time order array
  1. N BSDA,BSDB,BSDE
  1. S BSDB=BSDDT_".0001",BSDE=BSDDT_".9999"
  1. S BSDA=0 F S BSDA=$O(BSDCLNA(BSDA)) Q:'BSDA D
  1. . N BSDDTA
  1. . S BSDDTA=BSDB F S BSDDTA=$O(^SC(BSDA,"S",BSDDTA)) Q:BSDDTA>BSDE!('BSDDTA) D
  1. .. N BSDDA
  1. .. S BSDDA=0 F S BSDDA=$O(^SC(BSDA,"S",BSDDTA,1,BSDDA)) Q:'BSDDA D
  1. ... Q:'$P($G(^SC(BSDA,"S",BSDDTA,1,BSDDA,"C")),U)
  1. ... N BSDCHK,BSDPAT
  1. ... S BSDPAT=$P($G(^SC(BSDA,"S",BSDDTA,1,BSDDA,0)),U)
  1. ... S BSDCHK=$P($G(^SC(BSDA,"S",BSDDTA,1,BSDDA,"C")),U)
  1. ... S ^TMP("SDAM",$J,BSDA,BSDCHK,BSDPAT)=""
  1. Q
  1. ;
  1. INIT1 ; added line label
  1. D CLEAR^VALM1 ;IHS/ANMC/LJF 8/18/2000
  1. S X="CHECKED IN" D LIST
  1. INITQ Q
  1. ;
  1. HDR ; -- screen head
  1. N X,SDX,SDLNX S SDLNX=2
  1. S SDLNX=1
  1. ;I SDAMTYP="C" D HDRC
  1. S X=$P(SDAMLIST,"^",2)
  1. S VALMHDR(SDLNX)=X
  1. ;S X="* - New GAF Required",VALMHDR(SDLNX)=$$SETSTR^VALM1(X,VALMHDR(SDLNX),34,30) ;IHS/ANMC/LJF 6/1/2000
  1. S VALMHDR(SDLNX)=$$SETSTR^VALM1($$FDATE^VALM1(SDBEG)_" thru "_$$FDATE^VALM1(SDEND),VALMHDR(SDLNX),59,22)
  1. S SDLNX=SDLNX+1
  1. S X=IORVON_"Auto Refresh is: "_IORVOFF_" "_$S($G(BSDRF):"ON",1:"OFF")
  1. S VALMHDR(SDLNX)=X
  1. Q
  1. ;
  1. HDRC ;-- clinic header
  1. ; input: SDCLN := ifn of pat
  1. ; output: VALMHDR() := hdr array
  1. ;
  1. N BSDDA,BSDCLNA
  1. S BSDCLNA=""
  1. S BSDDA=0 F S BSDDA=$O(BSDCLN(BSDDA)) Q:'BSDDA D
  1. . N BSDCLNE
  1. . S BSDCLNE=$E($P(^SC(BSDDA,0),U),1,45)
  1. . S BSDCLNA=BSDCLNE_"/"_BSDCLNA
  1. ;S VALMHDR(1)=$E($P("Clinic: "_$G(^SC(SDCLN,0)),"^",1),1,45) ;for proper display of clinic name for SD*5.3*189
  1. S VALMHDR(1)="Clinic: "_BSDCLNA ;for proper display of clinic name for SD*5.3*189
  1. Q
  1. ;
  1. FNL ; -- what to do after action
  1. K ^TMP("SDAM",$J),^TMP("SDAMIDX",$J),^TMP("VALMIDX",$J),^BSDTMP("BSDCHK",$J)
  1. K SDAMCNT,SDFLDD,SDACNT,VALMHCNT,SDPRD,SDFN,SDCLN,SDAMLIST,SDT,SDATA,SDBEG,SDEND,DFN,Y,SDAMTYP,SDY,X,SDCL,Y,SDDA,VALMY
  1. K BSDCLN,BSDCLNA
  1. Q
  1. ;
  1. BLD ; -- entry point to bld list
  1. ; input: SDAMLIST := list to build
  1. D:'$D(SDAMLIST) GROUP("ALL",.SDAMLIST)
  1. ;I SDAMTYP="C" D BLD1 ;cmi/anch/maw 8/15/2007 orig line
  1. I SDAMTYP="C" D MCLN(.BSDCLN)
  1. BLDQ Q
  1. ;
  1. LIST ; -- find and build
  1. ; input: X := status group
  1. ; output: SDAMLIST := array of status'
  1. ;
  1. I X["CANCELLED",$G(SDAMTYP)="C" S VALMBCK="" W !!,*7,"You must be viewing a patient to list cancelled appointments." D PAUSE^VALM1 G LISTQ
  1. D GROUP(X,.SDAMLIST),BLD
  1. S VALMBCK="R"
  1. LISTQ Q
  1. ;
  1. GROUP(GROUP,SDAMLIST) ; -- find list
  1. S (I,SDAMLIST)="" F S I=$O(SDAMLIST(I)) Q:I="" K SDAMLIST(I)
  1. S GROUP=+$O(^SD(409.62,"B",GROUP,0))
  1. G GROUPQ:'$D(^SD(409.62,GROUP,0)) S SDAMLIST=^(0)
  1. S I=$G(^SD(409.62,GROUP,1)) S:I]"" SDAMLIST("SCR")=I
  1. S I=0 F S I=$O(^SD(409.63,"C",GROUP,I)) Q:'I S SDAMLIST(I)=""
  1. GROUPQ Q
  1. ;
  1. FUT ; -- change date range
  1. S X1=DT,X2=999 D C^%DTC
  1. S SDEBG=DT,SDEND=X,X="FUTURE" K VALMHDR
  1. D LIST
  1. FUTQ Q
  1. ;
  1. MCLN(BSDCLNM) ;-- loop through array and call BLD1
  1. N VA,SDAMDD,SDNAME,SDMAX,SDLARGE,DFN,SDCL,BL,XC,XW,AC,AW,TC,TW,NC,NW,SC,SW,SDT,SDDA ; done for speed see INIT^SDAM10
  1. D INIT^SDAM10
  1. S VALMBG=2 ;to reset top of data
  1. N BSDDA
  1. S BSDDA=0 F S BSDDA=$O(BSDCLNM(BSDDA)) Q:'BSDDA D
  1. . N BSDCLNE,BSDLN
  1. . S BSDLN=" "
  1. . S BSDACNT=SDACNT
  1. . S SDACNT=0
  1. . D SET^BSDCHKI1(BSDLN)
  1. . S SDACNT=BSDACNT
  1. . S SDCLN=BSDDA
  1. . S BSDCLNE=$P(^SC(SDCLN,0),U)
  1. . S BSDLN="Clinic: "_BSDCLNE
  1. . S BSDACNT=SDACNT
  1. . S SDACNT=0
  1. . D SET^BSDCHKI1(BSDLN)
  1. . S SDACNT=BSDACNT
  1. . D BLD1
  1. Q
  1. ;
  1. BLD1 ; -- scan apts
  1. ;N VA,SDAMDD,SDNAME,SDMAX,SDLARGE,DFN,SDCL,BL,XC,XW,AC,AW,TC,TW,NC,NW,SC,SW,SDT,SDDA ; done for speed see INIT^SDAM10
  1. ;D INIT^SDAM10 cmi/anch/maw moved to MCLN
  1. N BSDCHK,BSDDFN
  1. F SDT=SDBEG:0 S SDT=$O(^SC(SDCLN,"S",SDT)) Q:'SDT!($P(SDT,".",1)>SDEND) D
  1. .F SDDA=0:0 S SDDA=$O(^SC(SDCLN,"S",SDT,1,SDDA)) Q:'SDDA D
  1. .. Q:'$P($G(^SC(SDCLN,"S",SDT,1,SDDA,"C")),U)
  1. .. S BSDCHK=$P($G(^SC(SDCLN,"S",SDT,1,SDDA,"C")),U)
  1. .. S BSDDFN=$P($G(^SC(SDCLN,"S",SDT,1,SDDA,0)),U)
  1. .. S ^TMP("BSDCHK",$J,SDCLN,BSDCHK,BSDDFN)=SDT_U_SDDA
  1. N BSDTDA,BSDTIEN
  1. S BSDTDA="" F S BSDTDA=$O(^TMP("BSDCHK",$J,SDCLN,BSDTDA),-1) Q:'BSDTDA D
  1. . S BSDTIEN=0 F S BSDTIEN=$O(^TMP("BSDCHK",$J,SDCLN,BSDTDA,BSDTIEN)) Q:'BSDTIEN D
  1. .. N BSDTDTA
  1. .. S BSDTDTA=$G(^TMP("BSDCHK",$J,SDCLN,BSDTDA,BSDTIEN))
  1. .. S SDDA=$P(BSDTDTA,U,2)
  1. .. S SDT=$P(BSDTDTA,U)
  1. .. S DFN=BSDTIEN
  1. .. S BSDCHKIN=BSDTDA
  1. .. I $D(^SC(SDCLN,"S",SDT,1,SDDA,0)) S DFN=+^(0) D PID^VADPT I $D(^DPT(DFN,"S",SDT,0)),$$VALID^SDAM2(DFN,SDCLN,SDT,SDDA) S SDATA=^DPT(DFN,"S",SDT,0),SDCL=SDCLN,SDNAME=VA("BID")_" "_$P($G(^DPT(DFN,0)),U) D:SDCLN=+SDATA BLD1^BSDCHKI1
  1. D NUL^SDAM10,LARGE^SDAM10:$D(SDLARGE)
  1. S $P(^TMP("SDAM",$J,0),U,4)=VALMCNT
  1. Q
  1. ;
  1. TOFF ;-- toggle off auto refresh
  1. S BSDRF=0
  1. D RF
  1. Q
  1. ;
  1. TON ;-- toggle on auto refresh
  1. S BSDCNT=0
  1. S BSDRF=1
  1. F D RF Q:'$G(BSDRF)
  1. Q
  1. ;
  1. RF ;-- refresh the screen now
  1. S X="CHECKED IN" D LIST ;cmi/maw 7/16/2008 to auto refresh clinic checkin list will add to patch 1009
  1. S VALMBCK="R"
  1. D EXIT
  1. Q:'$G(BSDRF)
  1. S DIR(0)="Y"
  1. S DIR("A")="Turn Auto Refresh Off "
  1. S DIR("B")="N"
  1. S DIR("T")=58
  1. D ^DIR
  1. K DIR
  1. I $G(Y) D TOFF
  1. Q
  1. ;
  1. EXIT ; -- exit action for protocol
  1. I $D(VALMBCK),VALMBCK="R" D REFRESH^VALM S VALMBCK=$P(VALMBCK,"R")_$P(VALMBCK,"R",2)
  1. Q
  1. ;
  1. HLP ; -- help for list
  1. I $D(X),X'["??" D HLPS,PAUSE^VALM1 G HLPQ
  1. D CLEAR^VALM1
  1. F I=1:1 S SDX=$P($T(HELPTXT+I),";",3,99) Q:SDX="$END" D PAUSE^VALM1:SDX="$PAUSE" Q:'Y W !,$S(SDX["$PAUSE":"",1:SDX)
  1. ;
  1. ;IHS/ANMC/LJF 10/10/2001 modified lines below
  1. ;W !,"Possible actions are the following:"
  1. ;D HLPS,PAUSE^VALM1 S VALMBCK="R"
  1. D CLEAR^VALM1 ;new line
  1. ;IHS/ANMC/LJF 10/10/2001 end of mods
  1. ;
  1. HLPQ K SDX,Y Q
  1. ;
  1. EX ;-- expand the entry
  1. S VALMBG=3
  1. D EN^SDAMEP
  1. S VALMBG=2
  1. Q
  1. ;
  1. HLPS ; -- short help
  1. S X="?" D DISP^XQORM1 W ! Q
  1. ;
  1. HELPTXT ; -- help text
  1. ;;Enter action by typing the name(s), or abbreviation(s).
  1. ;;
  1. ;;$END