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

BDGSVL1.m

Go to the documentation of this file.
  1. BDGSVL1 ; IHS/ANMC/LJF - SCHED VISIT LISTING ;
  1. ;;5.3;PIMS;;APR 26, 2002
  1. ;
  1. EN ; -- main entry point for BDG SCHED VISITS
  1. I $E(IOST,1,2)'="C-" D INIT,PRINT Q
  1. NEW VALMCNT D TERM^VALM0,CLEAR^VALM1
  1. D EN^VALM("BDG SCHED VISITS")
  1. D CLEAR^VALM1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. NEW X
  1. S VALMHDR(1)=$$SP(15)_$$CONF^BDGF
  1. S X="For "_$$FMTE^XLFDT(BDGBD)_" to "_$$FMTE^XLFDT(BDGED)
  1. S VALMHDR(2)=$$SP(79-$L(X)\2)_X
  1. S X="Scheduled "_$S(BDGVT="A":"Admissions",BDGVT="D":"Day Surgeries",BDGVT="O":"Outpatient Visits",1:"Visits - All Types")
  1. S X=X_" (Sorted by "_$P(BDGS1,U,2)_" & "_$P(BDGS2,U,2)_")"
  1. S VALMHDR(3)=$$SP(79-$L(X)\2)_X
  1. ;
  1. S X="CAP"_BDGRT D @X ;set up captions based on type for report
  1. ;
  1. S VALMSG=$$SP(5)_"Authorizing Provider/Case Mgr/Referred By"
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. NEW DATE,END,BDGN,TYPE,SORT1,SORT2,X
  1. K ^TMP("BDGSVL",$J),^TMP("BDGSVL1",$J)
  1. S VALMCNT=0
  1. ;
  1. S DATE=BDGBD-.0001,END=BDGED+.24
  1. F S DATE=$O(^BDGSV("D",DATE)) Q:'DATE Q:(DATE>END) D
  1. . S BDGN=0
  1. . F S BDGN=$O(^BDGSV("D",DATE,BDGN)) Q:'BDGN D
  1. .. ;
  1. .. S TYPE=$$GET1^DIQ(9009016.7,BDGN,.03,"I")
  1. .. I (BDGVT'=4),(BDGVT'=TYPE) Q ;not type selected
  1. .. ;
  1. .. ; screen out no-shows, cancels and errors if asked to
  1. .. I 'BDGEX S X=$$GET1^DIQ(9009016.7,BDGN,.16,"I") I X]"",X'="PA" Q
  1. .. ;
  1. .. S SORT1=$$GET1^DIQ(9009016.7,BDGN,+BDGS1)
  1. .. I SORT1="" S X=$P($P(BDGS1,U),";",2) I X S SORT1=$$GET1^DIQ(9009016.7,BDGN,X) ;if other fields can be used (i.e. service)
  1. .. I SORT1="" S SORT1="??"
  1. .. ;
  1. .. S SORT2=$$GET1^DIQ(9009016.7,BDGN,+BDGS2)
  1. .. I SORT2="" S X=$P($P(BDGS2,U),";",2) I X S SORT2=$$GET1^DIQ(9009016.7,BDGN,X) ;if other fields can be used (i.e. service)
  1. .. I SORT2="" S SORT2="??"
  1. .. ;
  1. .. ; build sorted list
  1. .. S ^TMP("BDGSVL1",$J,SORT1,SORT2,BDGN)=""
  1. ;
  1. ; now take sorted list and build display (detailed or brief)
  1. S SORT1=0
  1. F S SORT1=$O(^TMP("BDGSVL1",$J,SORT1)) Q:SORT1="" D
  1. . S SORT2=0
  1. . F S SORT2=$O(^TMP("BDGSVL1",$J,SORT1,SORT2)) Q:SORT2="" D
  1. .. S BDGN=0
  1. .. F S BDGN=$O(^TMP("BDGSVL1",$J,SORT1,SORT2,BDGN)) Q:'BDGN D
  1. ... I BDGRT="D" D DETAIL(BDGN) Q
  1. ... I BDGRT="B" D BRIEF(BDGN)
  1. ;
  1. I '$D(^TMP("BDGSVL",$J)) D SET("No data found",.VALMCNT)
  1. K ^TMP("BDGSVL1",$J)
  1. Q
  1. ;
  1. DETAIL(IEN) ;build detailed display
  1. NEW LINE,X
  1. S LINE=$E($$GET1^DIQ(9009016.7,IEN,.01),1,18) ;patient
  1. S LINE=$$PAD(LINE,20)_$J($$GET1^DIQ(9009016.7,IEN,.011),6) ;chart #
  1. S LINE=$$PAD(LINE,28)_$$GET1^DIQ(9009016.7,IEN,.012) ;age
  1. S LINE=$$PAD(LINE,33)_$$GET1^DIQ(2,+$G(^BDGSV(IEN,0)),.02,"I") ;sex
  1. S LINE=$$PAD(LINE,36)_$$GET1^DIQ(9009016.7,IEN,.02) ;date
  1. S LINE=$$PAD(LINE,49)_$$VSTTYPE(IEN) ;vst type
  1. S X=$$GET1^DIQ(9009016.7,IEN,.16) I X="" S X="OPEN/PENDING"
  1. S LINE=$$PAD($$PAD(LINE,54)_X,67) ;disposition
  1. S LINE=LINE_$$GET1^DIQ(9009016.7,IEN,.013) ;community
  1. D SET(LINE,.VALMCNT)
  1. ;
  1. S LINE=$$SP(5)_$$LOC(IEN) ;location
  1. S LINE=$$PAD(LINE,14)_$$SRV(IEN) ;service
  1. S LINE=$$PAD(LINE,21)_"LOS:"_$$GET1^DIQ(9009016.7,IEN,.13) ;expctd los
  1. S LINE=$$PAD(LINE,27)_$E($$GET1^DIQ(9009016.7,IEN,.04),1,18) ;prov
  1. S LINE=LINE_"/"_$E($$GET1^DIQ(9009016.7,IEN,.05),1,18) ;case mgr
  1. S LINE=LINE_"/"_$E($$GET1^DIQ(9009016.7,IEN,.06),1,18) ;ref prov
  1. D SET(LINE,.VALMCNT)
  1. ;
  1. S LINE=$$SP(5)_"Dx: "_$$GET1^DIQ(9009016.7,IEN,201) ;diagnosis
  1. S X=$$GET1^DIQ(9009016.7,IEN,101,"I")
  1. I X]"" S LINE=$$PAD(LINE,58)_" TRVL:"_X ;travel
  1. S LINE=LINE_" "_$$HOUSING(IEN) ;housing
  1. D SET(LINE,.VALMCNT)
  1. ;
  1. S X=$$GET1^DIQ(9009016.7,IEN,202) I X]"" D ;procedure, if any
  1. . S LINE=$$PAD($$SP(5)_X,53)_"Scheduled for "
  1. . S LINE=LINE_$$GET1^DIQ(9009016.7,IEN,.14)
  1. . D SET(LINE,.VALMCNT)
  1. ;
  1. S X=$$GET1^DIQ(9009016.7,IEN,102),Y=$$GET1^DIQ(9009016.7,IEN,106)
  1. I (X]"")!(Y]"") D ;travel details or escort info
  1. . S LINE=$$SP(5)_$S(X]"":X_" "_Y,1:Y)
  1. . S LINE=$$PAD(LINE,$L(LINE)+2)_$$ESCORT(IEN)
  1. . D SET(LINE,.VALMCNT)
  1. ;
  1. ; other comments
  1. S X=$$GET1^DIQ(9009016.7,IEN,203) I X]"" D SET($$SP(5)_X,.VALMCNT)
  1. D SET("",.VALMCNT) ;blank line between patients
  1. ;
  1. Q
  1. ;
  1. BRIEF(IEN) ;build brief display
  1. NEW LINE,X,Y,Z
  1. S LINE=$E($$GET1^DIQ(9009016.7,IEN,.01),1,18) ;patient
  1. S LINE=$$PAD(LINE,20)_$J($$GET1^DIQ(9009016.7,IEN,.011),6) ;chart #
  1. S LINE=$$PAD(LINE,28)_$$GET1^DIQ(9009016.7,IEN,.02) ;date
  1. S LINE=$$PAD(LINE,41)_$$VSTTYPE(IEN) ;vst type
  1. S LINE=$$PAD(LINE,46)_$$LOC(IEN) ;location
  1. S LINE=$$PAD(LINE,55)_$$SRV(IEN) ;service
  1. S LINE=$$PAD(LINE,61)_$$GET1^DIQ(9009016.7,IEN,.04) ;provider
  1. D SET(LINE,.VALMCNT)
  1. ;
  1. S LINE=$$SP(5)_"("_$E($$GET1^DIQ(9009016.7,IEN,.013),1,20) ;community
  1. S X=$$GET1^DIQ(9009016.7,IEN,.16) I X="" S X="OPEN/PENDING"
  1. S LINE=$$PAD($$PAD(LINE,28)_X,40) ;disposition
  1. ;
  1. S LINE=LINE_" TRVL:"_$$GET1^DIQ(9009016.7,IEN,101,"I") ;travel
  1. S LINE=$$PAD(LINE,50)_$$HOUSING(IEN) ;housing
  1. ;
  1. ;
  1. S LINE=$$PAD(LINE,65)_$$GET1^DIQ(9009016.7,IEN,.06)_")" ;ref prov
  1. D SET(LINE,.VALMCNT)
  1. D SET("",.VALMCNT) ;blank line between patients
  1. Q
  1. ;
  1. SET(DATA,NUM) ; put display line into array
  1. S NUM=NUM+1
  1. S ^TMP("BDGSVL",$J,NUM,0)=DATA
  1. Q
  1. ;
  1. CAPB ; set up brief caption
  1. S VALMCAP=$$PAD(" Patient/Community",20)_"Chart# Expected On Type"
  1. S VALMCAP=$$PAD(VALMCAP_" Ward/Cln Srv Provider/Referring",79)
  1. Q
  1. ;
  1. CAPD ; set up detailed caption
  1. S VALMCAP=$$PAD(" Patient",20)_"Chart# Age Sex Expected On Type"
  1. S VALMCAP=$$PAD(VALMCAP_" Status Community",79)
  1. Q
  1. ;
  1. PRINT ; print report to paper
  1. U IO D HDG
  1. NEW LINE
  1. S LINE=0 F S LINE=$O(^TMP("BSDSVL",$J,LINE)) Q:'LINE D
  1. . I $Y>(IOSL-4) D HDG
  1. . W !,^TMP("BSDSVL",$J,LINE,0)
  1. D ^%ZISC,EXIT
  1. Q
  1. ;
  1. HDG ; heading for paper report
  1. D HDR W @IOF,?30,"Scheduled Visit Listing"
  1. NEW I F I=1:1 Q:'$D(VALMHDR(I)) W !,VALMHDR(I)
  1. W !,$$REPEAT^XLFSTR("=",80)
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K ^TMP("BDGSVL",$J)
  1. K BDGBD,BDGED,BDGVT,BDGEX,BDGS1,BDGS2,BDGRT
  1. Q
  1. ;
  1. EXPND ; -- expand code
  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. VSTTYPE(N) ; returns printable abbreviated visit type
  1. NEW X,Y,Z
  1. S X=$$GET1^DIQ(9009016.7,N,.03,"I") ;visit type
  1. S Y=$$GET1^DIQ(9009016.7,N,.17) ;observation?
  1. S Z=$$GET1^DIQ(9009016.7,N,.15) ;same day admit?
  1. Q $S(X="O":"OPT",Y="YES":"DSO",Z="YES":"SDA",X="A":"INP",X="D":"DS",1:"")
  1. ;
  1. LOC(N) ; return hospital location (ward or clinic)
  1. NEW X,Y
  1. ; get ward abbreviation
  1. S X=$$GET1^DIQ(9009016.7,N,.09,"I")
  1. I X S X=$$GET1^DIQ(9009016.5,X,.02)
  1. ; get clinic abbreviation
  1. S Y=$$GET1^DIQ(9009016.7,N,.11,"I") I Y S Y=$$GET1^DIQ(44,Y,1)
  1. ; set location (ward or clinic or "" if day surgery)
  1. Q $S(X]"":X,Y]"":Y,BDGVT="D":"",1:"Loc ??")
  1. ;
  1. SRV(N) ; return service (treating specialty or surgical service)
  1. NEW X,Y,Z
  1. S X=$$GET1^DIQ(9009016.7,N,.08,"I") I X S X=$$GET1^DIQ(45.7,X,99)
  1. S Y=$E($$GET1^DIQ(9009016.7,N,.121),1,5)
  1. S Z=$$GET1^DIQ(9009016.7,N,.03,"I") ;visit type
  1. Q $S(X]"":X,Y]"":Y,Z="O":"",1:"Srv ??")
  1. ;
  1. HOUSING(N) ; returns brief summary of housing data
  1. NEW X,Y
  1. S X=$$GET1^DIQ(9009016.7,IEN,103,"I") I X="" Q "" ;housing authorized?
  1. S Y=$$GET1^DIQ(9009016.7,IEN,104) ;# of days
  1. S Z=$$GET1^DIQ(9009016.7,IEN,105,"I") ;housing status
  1. Q "HOUS:"_X_$S(Y]"":"x"_Y,1:"")_$S(Z]"":"("_Z_")",1:"")
  1. ;
  1. ESCORT(N) ; return summary of escort info
  1. NEW X,Y
  1. S X=$$GET1^DIQ(9009016.7,N,107,"I") I X]"" S X="TRVL:"_X
  1. S Y=$$GET1^DIQ(9009016.7,N,108),Y1=$$GET1^DIQ(9009016.7,N,109)
  1. S Y2=$$GET1^DIQ(9009016.7,N,110)
  1. I Y]"" S Y="HOUS:"_Y_$S(Y1]"":"x"_Y1,1:"")_$S(Y2]"":"("_Y2_")",1:"")
  1. Q X_" "_Y_" "_$$GET1^DIQ(9009016.7,N,111)