GMRCSLM ;SLC/DCM,JFR - List Mgr routine for consult tracking list ;9/8/99 14:52
;;3.0;CONSULT/REQUEST TRACKING;**1,4,14,12,22**;DEC 27, 1997
EN ; -- main entry point for GMRC CONSULT TRACKING
K GMRCOER
S GMRCEN=1 K GMRCQUT
;IF Consults
I $D(GMRCIS) D I $D(GMRCQUT) K GMRCEN,GMRCIS,GMRCQUT Q
.N DIR,DIRUT,DTOUT,DUOUT,Y
.S DIR(0)="SB^R:REQUESTING;C:CONSULTING"
.S DIR("A")="Are you the Requesting site or the Consulting site"
.D ^DIR I $D(DIRUT) S GMRCQUT=1 Q
.S GMRCIS=Y
D SP K GMRCEN I $D(GMRCQUT) K GMRCQUT Q
D EN^VALM("GMRC CONSULT TRACKING")
Q
;
HDR ; -- header code
;override title if IF Consults
I $D(GMRCIS) S VALM("TITLE")="IFC Requests: "_$S(GMRCIS="R":"Requesting",1:"Consulting")_" Site"
D HDR1 ;format line 1 of header
D:$L(GMRCWT) HDR2("")
Q
;
HDR1 ;format VALMHDR(1) with patient information
N GMRCX,GMRCX1,GMRCX2,GMRCX3,TIUCWAD,GMRVSTR,X
;Expects DFN
S GMRVSTR="WT" D EN6^GMRVUTL
S GMRCWT="Wt.(lb): "_$S($L($P(X,U,8)):$P(X,U,8),1:"No Entry")
D DEM^GMRCU ;returns GMRCPNM,GMRCSN,GMRCAGE,SEX,GMRCWARD,GMRCRB,GMRCDOB,GMRCWLI
S GMRCX1=GMRCPNM_" "_GMRCSN
;
S GMRCLOC=+$G(^DIC(42,+GMRCWLI,44))_";SC(" I 'GMRCLOC,'$D(XQAID) S GMRCLOC=""
S GMRCX2="" I +$G(GMRCLOC) D
. N L S L=$G(^SC(+GMRCLOC,0)),GMRCX2=$P(L,U,2)
. S:'$L(GMRCX2) GMRCX2=$E($P(L,U),1,4)
S:$L($G(GMRCRB)) GMRCX2=GMRCX2_"/"_GMRCRB
;
S GMRCX=GMRCX1_$J(GMRCX2,40+($L(GMRCX2)\2)-$L(GMRCX1))
S GMRCX3=" "_GMRCDOB_" ("_GMRCAGE_")"
S TIUCWAD=$$CWAD^ORQPT2(+DFN) S:TIUCWAD]"" GMRCX3=GMRCX3_" <"_TIUCWAD_">"
S VALMHDR(1)=GMRCX_$J(GMRCX3,79-$L(GMRCX))
K VALMHDR(2)
Q
HDR2(GMRCX) ;format VALMHDR(2) with patient weight
S VALMHDR(2)=$G(GMRCX)_$J($G(GMRCWT),79-$L($G(GMRCX)))
Q
;
INIT ; -- init variables and list array
K ^TMP("GMRCR",$J,"LIST")
S DSPLINE=0,DATA="",VALMAR="^TMP(""GMRCR"",$J,""LIST"")"
F LINE=1:1:LNCT S DSPLINE=$O(^TMP("GMRCR",$J,"CS",DSPLINE)) Q:DSPLINE=""!(DSPLINE?1A.E) S DATA=^(DSPLINE,0) D SET^VALM10(LINE,DATA)
S VALMCNT=LNCT,VALMPGE=1,XQORM("A")="Select Action: "
K DSPLINE,DATA,LINE
S:$D(^TMP("GMRC",$J,"CURRENT","MENU")) XQORM("HIJACK")=^("MENU")
Q
;
HELP ; -- help code
N X,DX,DY D FULL^VALM1
W !!,"Enter the display number of the item you wish to act on, or select an action."
W !!,"If you'd like another view of the consults, enter CV."
W !!,"Status key:",!?5,"'a' - active",?27,"'c' - complete",?50,"'dc' - discontinued",!?5,"'p' - pending",?27,"'x' - cancelled",?50,"'pr' - partial results",!?5,"'s' - scheduled",?27,"'e' - expired"
W !!,"Enter ?? to see a list of actions available for navigating the list."
W !!,"Press <return> to continue ..." R X:DTIME
S VALMBCK="R"
; S VALMSG=$$MSG
S (DX,DY)=0 X ^%ZOSF("XY")
D EXIT^GMRCSLMA("R")
Q
;
EXIT ; -- exit code
K ^TMP("GMRCR",$J,"LIST")
K VALMCNT,VALMBCK,VALMPGE
D ^GMRCREXT
Q
;
PHYEN ;Entry Point When Provider's service is known and only needs to look at consults for that service
Q:'$D(DUZ) Q:'$D(^VA(200,DUZ,5)) Q:'$L(^VA(200,DUZ,5))
S DIC="^DIC(49,",DIC(0)="MNO",X=^VA(200,DUZ,5) D ^DIC K DIC S GMRCSSNM=$S($L($P(Y,"^",2)):$P(Y,"^",2),1:"") I $L(GMRCSSNM) S GMRCSS=$O(^GMR(123.5,"B",GMRCSSNM,0))
S GMRCFL=1 D SP I $D(GMRCQUT),GMRCQUT=1 Q
D SPD I $D(GMRCQUT) D END,EXIT Q
K GMRCFL
D AD^GMRCSLM1
I GMRCSSNM'["MEDICINE" D EN^VALM("GMRC CONSULT TRACKING"),END,EXIT Q
D EN^VALM("GMRC TRK MEDICINE CONSULTS"),END,EXIT Q
Q
SP ;;Select a new patient and return DFN and GMRCSSNM to display consults and requested Service.
I $D(VALM) D FULL^VALM1
K GMRCQUT S GMRCDFN1=$S($D(DFN):DFN,1:0)
D SELPT^GMRCS I $S($D(GMRCQUT):1,'$D(DFN):1,1:0) S GMRCQUT=1,DFN=GMRCDFN1 G SPK
I $D(Y),Y<0&(X["^") S GMRCQUT=1 G SPK
I $D(Y),Y<0 S DFN=GMRCDFN1 S GMRCQUT=1 G SPK
I $D(GMRC("NMBR")) D RESET^GMRCSLMV(GMRC("NMBR")) K GMRC("NMBR")
S GMRCWRD=GMRCWARD
I $D(GMRCFL) D SPK Q
D ASRV^GMRCASV I $S($D(GMRCQUT):1,$D(DTOUT):1,$D(DUOUT):1,1:0) K DTOUT,DIROUT,DUOUT S (GMRCQUT,GMRCQIT)=1 Q
S GMRCSS=GMRCDG,GMRCSSNM=$P(^GMR(123.5,GMRCSS,0),"^",1) S GMRCSTCK=""
D EN^GMRCMENU
SPD ;Enter a date range for serching consults; null entry selects all consults and does not exclude by date
D ^GMRCSPD Q:$D(GMRCQUT)
I $D(GMRCEN) D SPK Q ;GMRCEN defined if branched to here from EN^GMRCSLM
S GMRCOER=0
D AD^GMRCSLM1 ;Do not delete. Needed to get new Pt. data into ^TMP("GMRCR",
S VALMCNT=LNCT,VALMBCK="R",VALMPGE=1 K GMRCDFN1
Q
SPQ ;New patient has not been selected - keep current patient
I '$D(DFN),GMRCDFN1<1 S GMRCQUT=1 K GMRCDFN1 Q
S DFN=GMRCDFN1 Q:DFN<1 W " "_GMRCPNM K GMRCDFN1
S VALMBCK="R",GMRCQUT=1 K GMRCDFN1
SPK ;Kill variables
;I $D(GMRCTM),$D(GMRCBM),$D(IOSTBM) S IOTM=GMRCTM,IOBM=IOSTBM
K GMRCDFN1,GMRCBM,GMRCTM
Q
SS ;Select A New Service or ALL SERVICES to Display Patient Consults
K GMRCQUT,GMRCVP S GMRCOER=0
D FULL^VALM1
D ASRV^GMRCASV I $D(GMRCQUT),GMRCQUT=1 Q
S GMRCSS=GMRCDG,GMRCSSNM=$P(^GMR(123.5,GMRCSS,0),"^",1)
D AD^GMRCSLM1,INIT,HDR
S VALMBCK="R",VALMCNT=LNCT
D EN^GMRCACTM,EN^GMRCMENU
I $D(GMRC("NMBR")) D RESET^GMRCSLMV(GMRC("NMBR")) K GMRC("NMBR")
Q
STS ;Select a status for view. i.e., only active, pendings, DC'd, etc.
I $D(IOTM),$D(IOBM),$D(IOSTBM) D FULL^VALM1
S GMRCERR=0
N DIR,X,Y
S DIR(0)="SAOM^dc:Discontinued;c:Complete;p:Pending;a:Active;pr:Partial Results;s:Scheduled;x:Cancelled"
S $P(DIR(0),U,2)="al:All Status's;"_$P(DIR(0),U,2)
S DIR("A")="Only Display Consults With Status of: "
S DIR("B")="All Status's"
I $G(GMRCSTCK) D
. S DIR("A")="Another Status to display: "
. K DIR("B")
D ^DIR
I $D(DUOUT)!($D(DTOUT))!('$L(Y)) G END
D STCK($$LOW^XLFSTR(Y)) I $G(GMRCSTCK)="" D:$D(GMRC("NMBR")) G END
. D RESET^GMRCSLMV(GMRC("NMBR"))
. K GMRC("NMBR")
. Q
I $D(GMRC("NMBR")) D RESET^GMRCSLMV(GMRC("NMBR")) K GMRC("NMBR")
G STS
STCK(RES) ;change code to status
N CODE
I RES="al" S GMRCSTCK="" Q
I RES="dc" S CODE=1
I RES="c" S CODE=2
I RES="p" S CODE=5
I RES="a" S CODE=6
I RES="pr" S CODE=9
I RES="x" S CODE=13
I RES="s" S CODE=8
I $D(GMRCSTCK) I $$FND(CODE) W $C(7),!,"Already selected" Q
I +$G(GMRCSTCK) S GMRCSTCK=GMRCSTCK_","_CODE Q
S GMRCSTCK=CODE
Q
FND(CD) ;status already selected?
I GMRCSTCK=CD Q 1
I $F(GMRCSTCK,(CD_",")) Q 1
I $E(GMRCSTCK,$L(GMRCSTCK))=CD Q 1
Q 0
END K DIR,GMRCERR,Y
Q
GMRCSLM ;SLC/DCM,JFR - List Mgr routine for consult tracking list ;9/8/99 14:52
+1 ;;3.0;CONSULT/REQUEST TRACKING;**1,4,14,12,22**;DEC 27, 1997
EN ; -- main entry point for GMRC CONSULT TRACKING
+1 KILL GMRCOER
+2 SET GMRCEN=1
KILL GMRCQUT
+3 ;IF Consults
+4 IF $DATA(GMRCIS)
Begin DoDot:1
+5 NEW DIR,DIRUT,DTOUT,DUOUT,Y
+6 SET DIR(0)="SB^R:REQUESTING;C:CONSULTING"
+7 SET DIR("A")="Are you the Requesting site or the Consulting site"
+8 DO ^DIR
IF $DATA(DIRUT)
SET GMRCQUT=1
QUIT
+9 SET GMRCIS=Y
End DoDot:1
IF $DATA(GMRCQUT)
KILL GMRCEN,GMRCIS,GMRCQUT
QUIT
+10 DO SP
KILL GMRCEN
IF $DATA(GMRCQUT)
KILL GMRCQUT
QUIT
+11 DO EN^VALM("GMRC CONSULT TRACKING")
+12 QUIT
+13 ;
HDR ; -- header code
+1 ;override title if IF Consults
+2 IF $DATA(GMRCIS)
SET VALM("TITLE")="IFC Requests: "_$SELECT(GMRCIS="R":"Requesting",1:"Consulting")_" Site"
+3 ;format line 1 of header
DO HDR1
+4 IF $LENGTH(GMRCWT)
DO HDR2("")
+5 QUIT
+6 ;
HDR1 ;format VALMHDR(1) with patient information
+1 NEW GMRCX,GMRCX1,GMRCX2,GMRCX3,TIUCWAD,GMRVSTR,X
+2 ;Expects DFN
+3 SET GMRVSTR="WT"
DO EN6^GMRVUTL
+4 SET GMRCWT="Wt.(lb): "_$SELECT($LENGTH($PIECE(X,U,8)):$PIECE(X,U,8),1:"No Entry")
+5 ;returns GMRCPNM,GMRCSN,GMRCAGE,SEX,GMRCWARD,GMRCRB,GMRCDOB,GMRCWLI
DO DEM^GMRCU
+6 SET GMRCX1=GMRCPNM_" "_GMRCSN
+7 ;
+8 SET GMRCLOC=+$GET(^DIC(42,+GMRCWLI,44))_";SC("
IF 'GMRCLOC
IF '$DATA(XQAID)
SET GMRCLOC=""
+9 SET GMRCX2=""
IF +$GET(GMRCLOC)
Begin DoDot:1
+10 NEW L
SET L=$GET(^SC(+GMRCLOC,0))
SET GMRCX2=$PIECE(L,U,2)
+11 IF '$LENGTH(GMRCX2)
SET GMRCX2=$EXTRACT($PIECE(L,U),1,4)
End DoDot:1
+12 IF $LENGTH($GET(GMRCRB))
SET GMRCX2=GMRCX2_"/"_GMRCRB
+13 ;
+14 SET GMRCX=GMRCX1_$JUSTIFY(GMRCX2,40+($LENGTH(GMRCX2)\2)-$LENGTH(GMRCX1))
+15 SET GMRCX3=" "_GMRCDOB_" ("_GMRCAGE_")"
+16 SET TIUCWAD=$$CWAD^ORQPT2(+DFN)
IF TIUCWAD]""
SET GMRCX3=GMRCX3_" <"_TIUCWAD_">"
+17 SET VALMHDR(1)=GMRCX_$JUSTIFY(GMRCX3,79-$LENGTH(GMRCX))
+18 KILL VALMHDR(2)
+19 QUIT
HDR2(GMRCX) ;format VALMHDR(2) with patient weight
+1 SET VALMHDR(2)=$GET(GMRCX)_$JUSTIFY($GET(GMRCWT),79-$LENGTH($GET(GMRCX)))
+2 QUIT
+3 ;
INIT ; -- init variables and list array
+1 KILL ^TMP("GMRCR",$JOB,"LIST")
+2 SET DSPLINE=0
SET DATA=""
SET VALMAR="^TMP(""GMRCR"",$J,""LIST"")"
+3 FOR LINE=1:1:LNCT
SET DSPLINE=$ORDER(^TMP("GMRCR",$JOB,"CS",DSPLINE))
IF DSPLINE=""!(DSPLINE?1A.E)
QUIT
SET DATA=^(DSPLINE,0)
DO SET^VALM10(LINE,DATA)
+4 SET VALMCNT=LNCT
SET VALMPGE=1
SET XQORM("A")="Select Action: "
+5 KILL DSPLINE,DATA,LINE
+6 IF $DATA(^TMP("GMRC",$JOB,"CURRENT","MENU"))
SET XQORM("HIJACK")=^("MENU")
+7 QUIT
+8 ;
HELP ; -- help code
+1 NEW X,DX,DY
DO FULL^VALM1
+2 WRITE !!,"Enter the display number of the item you wish to act on, or select an action."
+3 WRITE !!,"If you'd like another view of the consults, enter CV."
+4 WRITE !!,"Status key:",!?5,"'a' - active",?27,"'c' - complete",?50,"'dc' - discontinued",!?5,"'p' - pending",?27,"'x' - cancelled",?50,"'pr' - partial results",!?5,"'s' - scheduled",?27,"'e' - expired"
+5 WRITE !!,"Enter ?? to see a list of actions available for navigating the list."
+6 WRITE !!,"Press <return> to continue ..."
READ X:DTIME
+7 SET VALMBCK="R"
+8 ; S VALMSG=$$MSG
+9 SET (DX,DY)=0
XECUTE ^%ZOSF("XY")
+10 DO EXIT^GMRCSLMA("R")
+11 QUIT
+12 ;
EXIT ; -- exit code
+1 KILL ^TMP("GMRCR",$JOB,"LIST")
+2 KILL VALMCNT,VALMBCK,VALMPGE
+3 DO ^GMRCREXT
+4 QUIT
+5 ;
PHYEN ;Entry Point When Provider's service is known and only needs to look at consults for that service
+1 IF '$DATA(DUZ)
QUIT
IF '$DATA(^VA(200,DUZ,5))
QUIT
IF '$LENGTH(^VA(200,DUZ,5))
QUIT
+2 SET DIC="^DIC(49,"
SET DIC(0)="MNO"
SET X=^VA(200,DUZ,5)
DO ^DIC
KILL DIC
SET GMRCSSNM=$SELECT($LENGTH($PIECE(Y,"^",2)):$PIECE(Y,"^",2),1:"")
IF $LENGTH(GMRCSSNM)
SET GMRCSS=$ORDER(^GMR(123.5,"B",GMRCSSNM,0))
+3 SET GMRCFL=1
DO SP
IF $DATA(GMRCQUT)
IF GMRCQUT=1
QUIT
+4 DO SPD
IF $DATA(GMRCQUT)
DO END
DO EXIT
QUIT
+5 KILL GMRCFL
+6 DO AD^GMRCSLM1
+7 IF GMRCSSNM'["MEDICINE"
DO EN^VALM("GMRC CONSULT TRACKING")
DO END
DO EXIT
QUIT
+8 DO EN^VALM("GMRC TRK MEDICINE CONSULTS")
DO END
DO EXIT
QUIT
+9 QUIT
SP ;;Select a new patient and return DFN and GMRCSSNM to display consults and requested Service.
+1 IF $DATA(VALM)
DO FULL^VALM1
+2 KILL GMRCQUT
SET GMRCDFN1=$SELECT($DATA(DFN):DFN,1:0)
+3 DO SELPT^GMRCS
IF $SELECT($DATA(GMRCQUT):1,'$DATA(DFN):1,1:0)
SET GMRCQUT=1
SET DFN=GMRCDFN1
GOTO SPK
+4 IF $DATA(Y)
IF Y<0&(X["^")
SET GMRCQUT=1
GOTO SPK
+5 IF $DATA(Y)
IF Y<0
SET DFN=GMRCDFN1
SET GMRCQUT=1
GOTO SPK
+6 IF $DATA(GMRC("NMBR"))
DO RESET^GMRCSLMV(GMRC("NMBR"))
KILL GMRC("NMBR")
+7 SET GMRCWRD=GMRCWARD
+8 IF $DATA(GMRCFL)
DO SPK
QUIT
+9 DO ASRV^GMRCASV
IF $SELECT($DATA(GMRCQUT):1,$DATA(DTOUT):1,$DATA(DUOUT):1,1:0)
KILL DTOUT,DIROUT,DUOUT
SET (GMRCQUT,GMRCQIT)=1
QUIT
+10 SET GMRCSS=GMRCDG
SET GMRCSSNM=$PIECE(^GMR(123.5,GMRCSS,0),"^",1)
SET GMRCSTCK=""
+11 DO EN^GMRCMENU
SPD ;Enter a date range for serching consults; null entry selects all consults and does not exclude by date
+1 DO ^GMRCSPD
IF $DATA(GMRCQUT)
QUIT
+2 ;GMRCEN defined if branched to here from EN^GMRCSLM
IF $DATA(GMRCEN)
DO SPK
QUIT
+3 SET GMRCOER=0
+4 ;Do not delete. Needed to get new Pt. data into ^TMP("GMRCR",
DO AD^GMRCSLM1
+5 SET VALMCNT=LNCT
SET VALMBCK="R"
SET VALMPGE=1
KILL GMRCDFN1
+6 QUIT
SPQ ;New patient has not been selected - keep current patient
+1 IF '$DATA(DFN)
IF GMRCDFN1<1
SET GMRCQUT=1
KILL GMRCDFN1
QUIT
+2 SET DFN=GMRCDFN1
IF DFN<1
QUIT
WRITE " "_GMRCPNM
KILL GMRCDFN1
+3 SET VALMBCK="R"
SET GMRCQUT=1
KILL GMRCDFN1
SPK ;Kill variables
+1 ;I $D(GMRCTM),$D(GMRCBM),$D(IOSTBM) S IOTM=GMRCTM,IOBM=IOSTBM
+2 KILL GMRCDFN1,GMRCBM,GMRCTM
+3 QUIT
SS ;Select A New Service or ALL SERVICES to Display Patient Consults
+1 KILL GMRCQUT,GMRCVP
SET GMRCOER=0
+2 DO FULL^VALM1
+3 DO ASRV^GMRCASV
IF $DATA(GMRCQUT)
IF GMRCQUT=1
QUIT
+4 SET GMRCSS=GMRCDG
SET GMRCSSNM=$PIECE(^GMR(123.5,GMRCSS,0),"^",1)
+5 DO AD^GMRCSLM1
DO INIT
DO HDR
+6 SET VALMBCK="R"
SET VALMCNT=LNCT
+7 DO EN^GMRCACTM
DO EN^GMRCMENU
+8 IF $DATA(GMRC("NMBR"))
DO RESET^GMRCSLMV(GMRC("NMBR"))
KILL GMRC("NMBR")
+9 QUIT
STS ;Select a status for view. i.e., only active, pendings, DC'd, etc.
+1 IF $DATA(IOTM)
IF $DATA(IOBM)
IF $DATA(IOSTBM)
DO FULL^VALM1
+2 SET GMRCERR=0
+3 NEW DIR,X,Y
+4 SET DIR(0)="SAOM^dc:Discontinued;c:Complete;p:Pending;a:Active;pr:Partial Results;s:Scheduled;x:Cancelled"
+5 SET $PIECE(DIR(0),U,2)="al:All Status's;"_$PIECE(DIR(0),U,2)
+6 SET DIR("A")="Only Display Consults With Status of: "
+7 SET DIR("B")="All Status's"
+8 IF $GET(GMRCSTCK)
Begin DoDot:1
+9 SET DIR("A")="Another Status to display: "
+10 KILL DIR("B")
End DoDot:1
+11 DO ^DIR
+12 IF $DATA(DUOUT)!($DATA(DTOUT))!('$LENGTH(Y))
GOTO END
+13 DO STCK($$LOW^XLFSTR(Y))
IF $GET(GMRCSTCK)=""
IF $DATA(GMRC("NMBR"))
Begin DoDot:1
+14 DO RESET^GMRCSLMV(GMRC("NMBR"))
+15 KILL GMRC("NMBR")
+16 QUIT
End DoDot:1
GOTO END
+17 IF $DATA(GMRC("NMBR"))
DO RESET^GMRCSLMV(GMRC("NMBR"))
KILL GMRC("NMBR")
+18 GOTO STS
STCK(RES) ;change code to status
+1 NEW CODE
+2 IF RES="al"
SET GMRCSTCK=""
QUIT
+3 IF RES="dc"
SET CODE=1
+4 IF RES="c"
SET CODE=2
+5 IF RES="p"
SET CODE=5
+6 IF RES="a"
SET CODE=6
+7 IF RES="pr"
SET CODE=9
+8 IF RES="x"
SET CODE=13
+9 IF RES="s"
SET CODE=8
+10 IF $DATA(GMRCSTCK)
IF $$FND(CODE)
WRITE $CHAR(7),!,"Already selected"
QUIT
+11 IF +$GET(GMRCSTCK)
SET GMRCSTCK=GMRCSTCK_","_CODE
QUIT
+12 SET GMRCSTCK=CODE
+13 QUIT
FND(CD) ;status already selected?
+1 IF GMRCSTCK=CD
QUIT 1
+2 IF $FIND(GMRCSTCK,(CD_","))
QUIT 1
+3 IF $EXTRACT(GMRCSTCK,$LENGTH(GMRCSTCK))=CD
QUIT 1
+4 QUIT 0
END KILL DIR,GMRCERR,Y
+1 QUIT