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

PXBCC.m

Go to the documentation of this file.
  1. PXBCC ;ISL/JVS - CURSOR CONTROLS-UTILITY ROUTINES ;10/16/96 10:09
  1. ;;1.0;PCE PATIENT CARE ENCOUNTER;**7,73**;Aug 12, 1996
  1. ;
  1. ; Variable List
  1. ; PXBSAVE= A Second dopy fo the top Margin in a window
  1. ; PXBCNT= A Count of how many Items listed in top window
  1. ;
  1. ZERO ;--ZERO $X & $Y
  1. N DX,DY
  1. S DX=0,DY=0 X ^%ZOSF("XY")
  1. Q
  1. DXDY ;RESET $X $Y
  1. X ^%ZOSF("XY")
  1. Q
  1. INHI() ; Switch to highlighted video (IOINHI must be defined by caller)
  1. S DX=$X#81,DY=$Y#25 W IOINHI X ^%ZOSF("XY")
  1. Q ""
  1. INLO() ; Switch to lowlighted video (IOINLOW must be defined by caller)
  1. S DX=$X#81,DY=$Y#25 W IOINLOW X ^%ZOSF("XY")
  1. Q ""
  1. FIX ;--FIX
  1. D TERM,FULL0 W IOUOFF,IOG0
  1. Q
  1. FIX1 ;--FIX
  1. D TERM,FULL0 W IOUOFF,IOG0
  1. Q
  1. WINDOW(PXBCNT,DOWN) ;--set up window area
  1. N I,IOTM,IOBM
  1. I PXBCNT>10 S IOTM=17
  1. I PXBCNT<11 S IOTM=PXBCNT+7
  1. S PXBSAVE=IOTM I '$D(IOSC) D TERM
  1. S IOBM=(IOSL-1)
  1. W IOSC W @IOSTBM W IORC ;--Create smaller window
  1. I '$D(DOWN) F I=1:1:2 W IOCUD ;-- move currsor down twice
  1. S PXBWIN=""
  1. Q
  1. WIN17(PXBCNT) ;--set up window area on the 17th line
  1. N I,IOTM,IOBM
  1. W IOCUOFF
  1. S IOTM=17
  1. S PXBSAVE=IOTM I '$D(IOSC) D TERM
  1. S IOBM=(IOSL-0)
  1. W IOSC W @IOSTBM W IORC ;--Create smaller window
  1. S PXBWIN=""
  1. W IOCUON
  1. Q
  1. ;
  1. WINDOW1(PXBCNT) ;--set up window area
  1. N I,IOTM,IOBM
  1. S IOBM=IOSL-1
  1. W IOSC W @IOSTBM W IORC ;--Create smaller window
  1. F I=1:1:2 W IOCUD ;-- move currsor down once
  1. Q
  1. ;
  1. TERM ;--set up the terminal variables
  1. N X
  1. S X="IOSGRO;IOSTBM;IOCUU;IOSC;IORC;IOCUD;IOHOME;IOELALL;IORVON;IORVOFF;IOCUF;IONEL;IOBON;IOBOFF;IOUON;IOUOFF;IOELEOL;IOEDALL;IOEDEOP;IOCUB;IOECH;IOELBOL;IOIND"
  1. D ENDR^%ZISS,GSET^%ZISS
  1. S X="IOINLOW;IOINHI;IOINORM;IOCUOFF;IOCUON;IORI;IOIND;IORESET;IOCUOFF;IOCUON;IOSGR0"
  1. D ENDR^%ZISS
  1. I IOSTBM="" S IOSTBM=1
  1. Q
  1. FULL ;--set terminal to full scrolling window
  1. N IOTM,IOBM,X
  1. K PXBWIN
  1. I '$D(IOSTBM) D TERM
  1. I IOSTBM]"" S IOTM=1,IOBM=(IOSL-(1)) W IOSC W @IOSTBM W IORC
  1. S X=IOM X ^%ZOSF("RM")
  1. Q
  1. FULL0 ;--set terminal to full scrolling window
  1. N IOTM,IOBM,X
  1. I '$D(IOSTBM) D TERM
  1. I IOSTBM]"" S IOTM=1,IOBM=IOSL W IOSC W @IOSTBM W IORC
  1. S X=IOM X ^%ZOSF("RM")
  1. Q
  1. CLEAR1 ;--clean out all cursor control varibles
  1. D KILL^%ZISS,GKILL^%ZISS
  1. Q
  1. UNDON ;--underline on
  1. I '$D(IOUON) D TERM^PXBCC
  1. W IOUON
  1. Q
  1. UNDOFF ;--underline off
  1. I '$D(IOUON) D TERM^PXBCC
  1. W IOUOFF
  1. Q
  1. REVCPT(LINE,PXRVON) ;--Reverse Video a particular CPT CODE,PROVIDER OR POV
  1. ;
  1. ; INPUT: LINE = Selection from PXBSAM array
  1. ; PXRVON = Flag to turn reverse video on/off
  1. ; where: 1 = reverse video on
  1. ; 0 = reverse video off
  1. ;
  1. Q:$G(NOREV)=1
  1. N ENTRY,XLINE,I,IOTM,IOBM,COL,DX,DY
  1. S ENTRY=$G(PXBSAM(LINE))
  1. ;Actual line on which CPT code displayed
  1. S XLINE=(PXBSAM(LINE,"LINE")#10)+4
  1. I XLINE<5 S XLINE=XLINE+10
  1. I '$D(IOSC) D TERM
  1. S COL=4
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COL W IOCUF
  1. S DY=XLINE,DX=COL D DXDY
  1. I $G(PXRVON) W IORVON,$P(ENTRY,"^",1),IORVOFF
  1. I '$G(PXRVON) W IORVOFF,$P(ENTRY,"^",1)
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. REVPRV(LINE) ;--Reverse Video a particular CPT CODE,PROVIDER OR POV
  1. Q:$G(NOREV)=1 Q:$G(FROM)["CPT" Q:$G(FROM)["PL"
  1. N ENTRY,XLINE,I,IOTM,IOBM,COL,DX,DY
  1. S ENTRY=$G(PXBSAM(LINE)),XLINE=(LINE#10)+4
  1. I XLINE<5 S XLINE=XLINE+10
  1. I '$D(IOSC) D TERM
  1. S COL=4
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COL W IOCUF
  1. S DY=XLINE,DX=COL D DXDY
  1. W IORVON,$P(ENTRY,"^",1),IORVOFF
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. REVPOV(LINE) ;--Reverse Video a particular CPT CODE,PROVIDER OR POV
  1. Q:$G(NOREV)=1
  1. N ENTRY,XLINE,I,IOTM,IOBM,COL,DX,DY
  1. S ENTRY=$G(PXBSAM(LINE)),XLINE=(LINE#10)+4
  1. I XLINE<5 S XLINE=XLINE+10
  1. I '$D(IOSC) D TERM
  1. S COL=4
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COL W IOCUF
  1. S DY=XLINE,DX=COL D DXDY
  1. W IORVON,$J($P($P(ENTRY,"^",1),".",1),4),".",$P($P(ENTRY,"^",1),".",2),IORVOFF
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. REVSTP(LINE) ;--Reverse Video a particular CPT CODE,PROVIDER OR POV
  1. Q:$G(NOREV)=1
  1. N ENTRY,XLINE,I,IOTM,IOBM,COL,DX,DY
  1. S ENTRY=$G(PXBSAM(LINE)),XLINE=(LINE#10)+4
  1. I XLINE<5 S XLINE=XLINE+10
  1. I '$D(IOSC) D TERM
  1. S COL=4
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COL W IOCUF
  1. S DY=XLINE,DX=COL D DXDY
  1. W IORVON,$P(ENTRY,"^",1),IORVOFF
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. ;
  1. UREV(LINE) ;--Reverse Video a particular CPT CODE,PROVIDER OR POV
  1. Q
  1. ;--**OUT OF ORDER
  1. N ENTRY,XLINE,I,IOTM,IOBM,DX,DY
  1. S ENTRY=$G(PXBSAM(LINE)),XLINE=LINE+4
  1. I '$D(IOSC) D TERM
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:4 W IOCUF
  1. S DY=XLINE,DX=COL D DXDY
  1. W $P(ENTRY,"^",1)
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. ;
  1. RREV(LINE,COLUMN,ENTRY) ;--Reverse REQUESTED information
  1. Q:$G(NOREV)=1
  1. N XLINE,I,IOTM,IOBM,DX,DY
  1. S XLINE=LINE+1
  1. I '$D(IOSC) D TERM
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COLUMN W IOCUF
  1. S DY=XLINE,DX=COLUMN D DXDY
  1. W IOELEOL,IOINHI,ENTRY,IOINLOW
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. RREVST(LINE,COLUMN,ENTRY) ;--Reverse REQUESTED information
  1. Q:$G(NOREV)=1
  1. N XLINE,I,IOTM,IOBM,DX,DY
  1. S XLINE=LINE+1
  1. I '$D(IOSC) D TERM
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COLUMN W IOCUF
  1. S DY=XLINE,DX=COLUMN D DXDY
  1. W IORVON,ENTRY,IORVOFF
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. RREVH(LINE,COLUMN,ENTRY) ;--Reverse REQUESTED information
  1. Q:$G(NOREV)=1
  1. N XLINE,I,IOTM,IOBM,DX,DY
  1. S XLINE=LINE+1
  1. I '$D(IOSC) D TERM
  1. W IOSC S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. F I=1:1:XLINE W IOCUD
  1. F I=1:1:COLUMN W IOCUF
  1. S DY=XLINE,DX=COLUMN D DXDY
  1. W IOELEOL,IOINHI,IOUON,ENTRY,IOINLOW,IOUON F I=1:1:5 W " "
  1. W IOUOFF
  1. S IOTM=PXBSAVE,IOBM=IOSL W @IOSTBM W IORC
  1. Q
  1. LOC(LINE,COLUMN) ;--Locate Cursor to specified position
  1. N PXBOS
  1. S PXBOS=^%ZOSF("OS")
  1. I PXBOS'["MSM" N DY,DX S DY=LINE,DX=COLUMN X IOXY,^%ZOSF("XY") Q
  1. N XLINE,I,IOTM,IOBM,DX,DY
  1. W IOCUOFF
  1. I '$D(IOSTBM) D TERM
  1. S IOTM=1,IOBM=IOSL W @IOSTBM W IOHOME D ZERO
  1. I $D(LINE) F I=1:1:LINE W IOIND
  1. F I=1:1:COLUMN W IOCUF
  1. I $D(LINE) S DY=LINE
  1. E S DY=$Y
  1. S DX=COLUMN D DXDY
  1. W IOCUON
  1. Q
  1. ;
  1. ERASE ;---ERASE THE LIST GOING UPWARDS
  1. N PXI
  1. I '$D(IOCUU) D TERM^PXBCC
  1. D LOC^PXBCC(15,1)
  1. S PXI=0 F I=1:1:11 W IORI,IOELALL
  1. Q