- PSGCAP ;BIR/CML3-ACTION PROFILE (#2) ;04 APR 96 / 1:10 PM
- ;;5.0; INPATIENT MEDICATIONS ;**111**;16 DEC 97
- N PSJNEW,PSGPTMP,PPAGE S PSJNEW=1
- ;
- D ENCV^PSGSETU I $D(XQUIT) Q
- ;
- START ;
- S (PSGAP,PSGP,PSGAPWD,PSGAPWG)=0,(PSGAPWDN,PSGAPWGN)="",PSGSSH="AP" S PSGPTMP=0,PPAGE=1
- D ^PSGSEL G:PSGSS="^"!(PSGSS="") DONE D @PSGSS I (Y'="^OTHER"),(Y'>0) W !!?3,"No patient(s) selected. Option terminated." G START
- ;
- ORS I '$G(PSGAPWG) S PSGAPS="P" G ORS1
- S PSGAPS="T" I $S(PSGSS'="P":1,1:PSGPAT>1) F W !!,"Sort Action Profiles by (T)eam or Treating (P)rovider? T// " R PSGAPS:DTIME D Q1 Q:PSGAPS]""
- ORS1 G:PSGAPS="^" START D NOW^%DTC S PSGDT=% F N="START","STOP" D GDT G:$D(DIRUT) START
- F W !!,"Print (A)ll active orders, or (E)xpiring orders only? A// " R PSGAPO:DTIME D Q2 Q:PSGAPO]""
- G:PSGAPO="^" START
- G:$$MEDTYPE^PSJMDIR($G(PSGWD)) START S PSGMTYPE=Y
- K ZTSAVE F X="PSGAPS","PSGAPO","PSGAPSD","PSGAPFD","PSGMTYPE","PSGP","PSGSS","PSGAPWD","PSGAPWG","PSGAPWDN","PSGAPWGN","PSGPAT(","PSGPTMP","PPAGE" S ZTSAVE(X)=""
- S PSGTIR="ENQ^PSGCAP0",ZTDESC="ACTION PROFILE" D ENDEV^PSGTI G:POP START G:$D(IO("Q")) DONE
- W !,"...this may take a few minutes...(you really should QUEUE this report)..." D ENQ^PSGCAP0
- ;
- ;
- DONE ;
- D ENKV^PSGSETU K CA,CNTR,DIAG,DO,DRG,FD,LQ,N,NF,ND,ND2,PSJJORD,PAGE,PDOB,PN,PND,PSEX,PSGAP,PSGAPWD,PSGAPWDN,PSGAPWG,PSGAPWGN,PSGDICA,PSGPAT,PSGSS
- K PSGSSH,RB,RTE,SD,SI,SM,ST,STRT,STP,STT,WS,WT,S1,ZTOUT,PSGAPFD,PSGAPSD,PSGAPS,PSGAPO,PSJACNWP,PSJDLW,PSJOPC,PSJPWDO,PSGWD
- K PSGADR,PSGALG,PSGEXPDT,PSGMTYPE,PSJSI,PSJSTOP,PSJTEAM,PST,QST
- K ^TMP($J)
- Q
- ;
- GDT ;
- K DIR NEW MINDT S:N="START" MINDT=PSGDT-.0001,DIR("B")="NOW" S:N="STOP" MINDT=PSGAPSD,DIR("B")=$$ENDD^PSGMI(PSGAPSD)
- S DIR(0)="DA^"_MINDT_":9999999.9999:EFTX",DIR("?")="^D DTM^PSGCAP",DIR("A")="Enter "_$S(N["R":"START",1:"STOP")_" date/time: " D ^DIR K DIR Q:$D(DIRUT)
- I X'="^" S:N["R" PSGAPSD=$S(Y'>0:PSGDT,Y#1:+$E(Y,1,12),1:Y+.0001) S:N["O" PSGAPFD=$S(Y'>0:9999999,Y#1:+$E(Y,1,12),1:Y+.24)
- Q
- ;
- G ; get ward group
- S DIC="^PS(57.5,",DIC(0)="QEAMZ",DIC("A")="Select WARD GROUP: " W ! D ^DIC K DIC S:Y>0 PSGAPWG=+Y,PSGAPWGN=Y(0,0) I Y<0,X="^OTHER" D
- . S (Y,PSGAPWG,PSGAPWGN)="^OTHER",(PSGAPWD,PSGAPWDN)="zz"
- Q
- ;
- C ;
- K DIR S DIR(0)="FAO",DIR("A")="Select CLINIC: "
- S DIR("?")="^D CDIC^PSGVBW" W ! D ^DIR
- CDIC ;
- K DIC S DIC="^SC(",DIC(0)="QEMIZ" D ^DIC K DIC S:+Y>0 CL=+Y
- W:X["?" !!,"Enter the clinic you want to use to select patients for processing.",!
- Q
- L ;
- K DIR S DIR(0)="FAO",DIR("A")="Select CLINIC GROUP: "
- S DIR("?")="^D LDIC^PSGVBW" W ! D ^DIR
- LDIC ;
- K DIC S DIC="^PS(57.8,",DIC(0)="QEMI" D ^DIC K DIC S:+Y>0 CG=+Y
- W:X["?" !!,"Enter the name of the clinic group you want to use to select patients for processing."
- Q
- W ; get ward
- S DIC="^DIC(42,",DIC(0)="QEAMZ",DIC("A")="Select WARD: " W ! D ^DIC K DIC S:Y>0 (PSGWD,PSGAPWD)=+Y,PSGAPWDN=Y(0,0) Q
- ;
- P ; get patient
- K PSGPAT,PSJPWDO,PSGWD
- S PSGPAT=0 F CNTR=1:1 S:CNTR>1 PSGDICA="another" D ENP^PSGGAO Q:PSGP'>0 S PSGPAT(PSGP)="",PSGPAT=PSGPAT+1 S:'$G(PSJPWDO) (PSGWD,PSJPWDO)=PSJPWD S PSGWD=$S('$G(PSGWD):0,PSJPWDO=PSJPWD:PSJPWD,1:0)
- S Y=$S(PSGPAT:1,1:-1) K PSGDICA Q
- ;
- DTM ;
- S Y=PSGDT D D^DIQ S T=$P(Y,"@",2),Y=$P(Y,",")
- W !!?2,"Enter a ",N," date. If a time is not entered for the ",N," date, the",!,$S(N["R":"beginning",1:"end")," of the day is assumed and used."
- W !?2,"If you wish to enter a ",$S(N["R":"start",1:"stop")," date of ",Y,", you must enter a TIME of day",!,"of ",T," or greater. Any date after ",Y," does not need time entered.",! S Y=-1 Q
- ;
- Q1 ;
- W:'$T $C(7) S:'$T PSGAPS="^" Q:PSGAPS="^"
- I PSGAPS="" S PSGAPS="T" W " (TEAM)" Q
- I PSGAPS?.E1C.E S PSGAPS="" W $C(7)," ??" Q
- I PSGAPS?1."?" W !!?2,"Enter 'T' (or press RETURN) to sort and print patients by TEAM. Enter 'P'",!,"to sort and print patients by treating PROVIDER." S PSGAPS="" Q
- F Q=1:1:$L(PSGAPS) I $E(PSGAPS,Q)?1L S PSGAPS=$E(PSGAPS,1,Q-1)_$C($A($E(PSGAPS,Q))-32)_$E(PSGAPS,Q+1,$L(PSGAPS))
- F X="TEAM","PROVIDER" I $P(X,PSGAPS)="" W $P(X,PSGAPS,2) S PSGAPS=$E(X) Q
- E W $C(7)," ??" S PSGAPS=""
- Q
- ;
- Q2 ;
- W:'$T $C(7) S:'$T PSGAPO="^" Q:PSGAPO="^"
- I PSGAPO="" S PSGAPO="A" W " (ALL)" Q
- I PSGAPO?.E1C.E S PSGAPO="" W $C(7)," ??" Q
- I PSGAPO?1."?" W !!?2,"Enter 'A' (or press RETURN) to print ALL ACTIVE orders for the patient(s)",!,"selected. Enter 'E' to print only orders that will EXPIRE within the date",!,"range selected for the patient(s) selected." S PSGAPO="" Q
- F Q=1:1:$L(PSGAPO) I $E(PSGAPO,Q)?1L S PSGAPO=$E(PSGAPO,1,Q-1)_$C($A($E(PSGAPO,Q))-32)_$E(PSGAPO,Q+1,$L(PSGAPO))
- F X="ALL","EXPIRING" I $P(X,PSGAPO)="" W $P(X,PSGAPO,2) S PSGAPO=$E(X) Q
- E W $C(7)," ??" S PSGPAS=""
- Q
- ENLM ;Entry point for PSJ LM AP2 protocol
- N PSJNEW,PSGPTMP,PPAGE S PSJNEW=1
- S PSGPTMP=0,PPAGE=1
- D ENCV^PSGSETU I $D(XQUIT) Q
- S PSGPAT=PSGP,PSGPAT(DFN)="",(PSGAPWD,PSGAPWG)=0,(PSGAPWDN,PSGAPWGN)="",PSGSS="P",PSGAPS="T" D ORS1
- S PSJNKF=1 G DONE
- PSGCAP ;BIR/CML3-ACTION PROFILE (#2) ;04 APR 96 / 1:10 PM
- +1 ;;5.0; INPATIENT MEDICATIONS ;**111**;16 DEC 97
- +2 NEW PSJNEW,PSGPTMP,PPAGE
- SET PSJNEW=1
- +3 ;
- +4 DO ENCV^PSGSETU
- IF $DATA(XQUIT)
- QUIT
- +5 ;
- START ;
- +1 SET (PSGAP,PSGP,PSGAPWD,PSGAPWG)=0
- SET (PSGAPWDN,PSGAPWGN)=""
- SET PSGSSH="AP"
- SET PSGPTMP=0
- SET PPAGE=1
- +2 DO ^PSGSEL
- IF PSGSS="^"!(PSGSS="")
- GOTO DONE
- DO @PSGSS
- IF (Y'="^OTHER")
- IF (Y'>0)
- WRITE !!?3,"No patient(s) selected. Option terminated."
- GOTO START
- +3 ;
- ORS IF '$GET(PSGAPWG)
- SET PSGAPS="P"
- GOTO ORS1
- +1 SET PSGAPS="T"
- IF $SELECT(PSGSS'="P":1,1:PSGPAT>1)
- FOR
- WRITE !!,"Sort Action Profiles by (T)eam or Treating (P)rovider? T// "
- READ PSGAPS:DTIME
- DO Q1
- IF PSGAPS]""
- QUIT
- ORS1 IF PSGAPS="^"
- GOTO START
- DO NOW^%DTC
- SET PSGDT=%
- FOR N="START","STOP"
- DO GDT
- IF $DATA(DIRUT)
- GOTO START
- +1 FOR
- WRITE !!,"Print (A)ll active orders, or (E)xpiring orders only? A// "
- READ PSGAPO:DTIME
- DO Q2
- IF PSGAPO]""
- QUIT
- +2 IF PSGAPO="^"
- GOTO START
- +3 IF $$MEDTYPE^PSJMDIR($GET(PSGWD))
- GOTO START
- SET PSGMTYPE=Y
- +4 KILL ZTSAVE
- FOR X="PSGAPS","PSGAPO","PSGAPSD","PSGAPFD","PSGMTYPE","PSGP","PSGSS","PSGAPWD","PSGAPWG","PSGAPWDN","PSGAPWGN","PSGPAT(","PSGPTMP","PPAGE"
- SET ZTSAVE(X)=""
- +5 SET PSGTIR="ENQ^PSGCAP0"
- SET ZTDESC="ACTION PROFILE"
- DO ENDEV^PSGTI
- IF POP
- GOTO START
- IF $DATA(IO("Q"))
- GOTO DONE
- +6 WRITE !,"...this may take a few minutes...(you really should QUEUE this report)..."
- DO ENQ^PSGCAP0
- +7 ;
- +8 ;
- DONE ;
- +1 DO ENKV^PSGSETU
- KILL CA,CNTR,DIAG,DO,DRG,FD,LQ,N,NF,ND,ND2,PSJJORD,PAGE,PDOB,PN,PND,PSEX,PSGAP,PSGAPWD,PSGAPWDN,PSGAPWG,PSGAPWGN,PSGDICA,PSGPAT,PSGSS
- +2 KILL PSGSSH,RB,RTE,SD,SI,SM,ST,STRT,STP,STT,WS,WT,S1,ZTOUT,PSGAPFD,PSGAPSD,PSGAPS,PSGAPO,PSJACNWP,PSJDLW,PSJOPC,PSJPWDO,PSGWD
- +3 KILL PSGADR,PSGALG,PSGEXPDT,PSGMTYPE,PSJSI,PSJSTOP,PSJTEAM,PST,QST
- +4 KILL ^TMP($JOB)
- +5 QUIT
- +6 ;
- GDT ;
- +1 KILL DIR
- NEW MINDT
- IF N="START"
- SET MINDT=PSGDT-.0001
- SET DIR("B")="NOW"
- IF N="STOP"
- SET MINDT=PSGAPSD
- SET DIR("B")=$$ENDD^PSGMI(PSGAPSD)
- +2 SET DIR(0)="DA^"_MINDT_":9999999.9999:EFTX"
- SET DIR("?")="^D DTM^PSGCAP"
- SET DIR("A")="Enter "_$SELECT(N["R":"START",1:"STOP")_" date/time: "
- DO ^DIR
- KILL DIR
- IF $DATA(DIRUT)
- QUIT
- +3 IF X'="^"
- IF N["R"
- SET PSGAPSD=$SELECT(Y'>0:PSGDT,Y#1:+$EXTRACT(Y,1,12),1:Y+.0001)
- IF N["O"
- SET PSGAPFD=$SELECT(Y'>0:9999999,Y#1:+$EXTRACT(Y,1,12),1:Y+.24)
- +4 QUIT
- +5 ;
- G ; get ward group
- +1 SET DIC="^PS(57.5,"
- SET DIC(0)="QEAMZ"
- SET DIC("A")="Select WARD GROUP: "
- WRITE !
- DO ^DIC
- KILL DIC
- IF Y>0
- SET PSGAPWG=+Y
- SET PSGAPWGN=Y(0,0)
- IF Y<0
- IF X="^OTHER"
- Begin DoDot:1
- +2 SET (Y,PSGAPWG,PSGAPWGN)="^OTHER"
- SET (PSGAPWD,PSGAPWDN)="zz"
- End DoDot:1
- +3 QUIT
- +4 ;
- C ;
- +1 KILL DIR
- SET DIR(0)="FAO"
- SET DIR("A")="Select CLINIC: "
- +2 SET DIR("?")="^D CDIC^PSGVBW"
- WRITE !
- DO ^DIR
- CDIC ;
- +1 KILL DIC
- SET DIC="^SC("
- SET DIC(0)="QEMIZ"
- DO ^DIC
- KILL DIC
- IF +Y>0
- SET CL=+Y
- +2 IF X["?"
- WRITE !!,"Enter the clinic you want to use to select patients for processing.",!
- +3 QUIT
- L ;
- +1 KILL DIR
- SET DIR(0)="FAO"
- SET DIR("A")="Select CLINIC GROUP: "
- +2 SET DIR("?")="^D LDIC^PSGVBW"
- WRITE !
- DO ^DIR
- LDIC ;
- +1 KILL DIC
- SET DIC="^PS(57.8,"
- SET DIC(0)="QEMI"
- DO ^DIC
- KILL DIC
- IF +Y>0
- SET CG=+Y
- +2 IF X["?"
- WRITE !!,"Enter the name of the clinic group you want to use to select patients for processing."
- +3 QUIT
- W ; get ward
- +1 SET DIC="^DIC(42,"
- SET DIC(0)="QEAMZ"
- SET DIC("A")="Select WARD: "
- WRITE !
- DO ^DIC
- KILL DIC
- IF Y>0
- SET (PSGWD,PSGAPWD)=+Y
- SET PSGAPWDN=Y(0,0)
- QUIT
- +2 ;
- P ; get patient
- +1 KILL PSGPAT,PSJPWDO,PSGWD
- +2 SET PSGPAT=0
- FOR CNTR=1:1
- IF CNTR>1
- SET PSGDICA="another"
- DO ENP^PSGGAO
- IF PSGP'>0
- QUIT
- SET PSGPAT(PSGP)=""
- SET PSGPAT=PSGPAT+1
- IF '$GET(PSJPWDO)
- SET (PSGWD,PSJPWDO)=PSJPWD
- SET PSGWD=$SELECT('$GET(PSGWD):0,PSJPWDO=PSJPWD:PSJPWD,1:0)
- +3 SET Y=$SELECT(PSGPAT:1,1:-1)
- KILL PSGDICA
- QUIT
- +4 ;
- DTM ;
- +1 SET Y=PSGDT
- DO D^DIQ
- SET T=$PIECE(Y,"@",2)
- SET Y=$PIECE(Y,",")
- +2 WRITE !!?2,"Enter a ",N," date. If a time is not entered for the ",N," date, the",!,$SELECT(N["R":"beginning",1:"end")," of the day is assumed and used."
- +3 WRITE !?2,"If you wish to enter a ",$SELECT(N["R":"start",1:"stop")," date of ",Y,", you must enter a TIME of day",!,"of ",T," or greater. Any date after ",Y," does not need time entered.",!
- SET Y=-1
- QUIT
- +4 ;
- Q1 ;
- +1 IF '$TEST
- WRITE $CHAR(7)
- IF '$TEST
- SET PSGAPS="^"
- IF PSGAPS="^"
- QUIT
- +2 IF PSGAPS=""
- SET PSGAPS="T"
- WRITE " (TEAM)"
- QUIT
- +3 IF PSGAPS?.E1C.E
- SET PSGAPS=""
- WRITE $CHAR(7)," ??"
- QUIT
- +4 IF PSGAPS?1."?"
- WRITE !!?2,"Enter 'T' (or press RETURN) to sort and print patients by TEAM. Enter 'P'",!,"to sort and print patients by treating PROVIDER."
- SET PSGAPS=""
- QUIT
- +5 FOR Q=1:1:$LENGTH(PSGAPS)
- IF $EXTRACT(PSGAPS,Q)?1L
- SET PSGAPS=$EXTRACT(PSGAPS,1,Q-1)_$CHAR($ASCII($EXTRACT(PSGAPS,Q))-32)_$EXTRACT(PSGAPS,Q+1,$LENGTH(PSGAPS))
- +6 FOR X="TEAM","PROVIDER"
- IF $PIECE(X,PSGAPS)=""
- WRITE $PIECE(X,PSGAPS,2)
- SET PSGAPS=$EXTRACT(X)
- QUIT
- +7 IF '$TEST
- WRITE $CHAR(7)," ??"
- SET PSGAPS=""
- +8 QUIT
- +9 ;
- Q2 ;
- +1 IF '$TEST
- WRITE $CHAR(7)
- IF '$TEST
- SET PSGAPO="^"
- IF PSGAPO="^"
- QUIT
- +2 IF PSGAPO=""
- SET PSGAPO="A"
- WRITE " (ALL)"
- QUIT
- +3 IF PSGAPO?.E1C.E
- SET PSGAPO=""
- WRITE $CHAR(7)," ??"
- QUIT
- +4 IF PSGAPO?1."?"
- WRITE !!?2,"Enter 'A' (or press RETURN) to print ALL ACTIVE orders for the patient(s)",!,"selected. Enter 'E' to print only orders that will EXPIRE within the date",!,"range selected for the patient(s) selected."
- SET PSGAPO=""
- QUIT
- +5 FOR Q=1:1:$LENGTH(PSGAPO)
- IF $EXTRACT(PSGAPO,Q)?1L
- SET PSGAPO=$EXTRACT(PSGAPO,1,Q-1)_$CHAR($ASCII($EXTRACT(PSGAPO,Q))-32)_$EXTRACT(PSGAPO,Q+1,$LENGTH(PSGAPO))
- +6 FOR X="ALL","EXPIRING"
- IF $PIECE(X,PSGAPO)=""
- WRITE $PIECE(X,PSGAPO,2)
- SET PSGAPO=$EXTRACT(X)
- QUIT
- +7 IF '$TEST
- WRITE $CHAR(7)," ??"
- SET PSGPAS=""
- +8 QUIT
- ENLM ;Entry point for PSJ LM AP2 protocol
- +1 NEW PSJNEW,PSGPTMP,PPAGE
- SET PSJNEW=1
- +2 SET PSGPTMP=0
- SET PPAGE=1
- +3 DO ENCV^PSGSETU
- IF $DATA(XQUIT)
- QUIT
- +4 SET PSGPAT=PSGP
- SET PSGPAT(DFN)=""
- SET (PSGAPWD,PSGAPWG)=0
- SET (PSGAPWDN,PSGAPWGN)=""
- SET PSGSS="P"
- SET PSGAPS="T"
- DO ORS1
- +5 SET PSJNKF=1
- GOTO DONE