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

ADGSRVL.m

Go to the documentation of this file.
  1. ADGSRVL ; IHS/ADC/PDW/ENM - PRINT PATIENTS BY SERVICE ; [ 03/25/1999 11:48 AM ]
  1. ;;5.0;ADMISSION/DISCHARGE/TRANSFER;;MAR 25, 1999
  1. ;
  1. W @IOF,!!!!?25,"Print Patient List by Treating Specialty",!!
  1. ;
  1. ;***> choose all services or just one
  1. ALL K DIR S DIR(0)="YO",DIR("B")="NO"
  1. S DIR("A")="Print for ALL Treating Specialties?" D ^DIR
  1. G:$D(DIRUT) END I Y=1 S DGZSRT="A" G DEV
  1. ;
  1. SRV K DIR S DIR(0)="PO^45.7:EMQZ",DIR("A")="Select Treating Specialty"
  1. D ^DIR G END:$D(DTOUT),ALL:$D(DUOUT),END:$D(DIROUT),SRV:Y=-1
  1. S DGZSRT=+Y
  1. ;
  1. ;***> get print device
  1. DEV S %ZIS="PQ" D ^%ZIS G END:POP,QUE:$D(IO("Q")) U IO G START
  1. QUE K IO("Q") S ZTRTN="START^ADGSRVL",ZTDESC="PRINT PATIENT LIST"
  1. S ZTSAVE("DGZSRT")="" D ^%ZTLOAD D ^%ZISC K ZTSK
  1. END K Y,DGZSRT,DIR D HOME^%ZIS Q
  1. ;
  1. ;
  1. START ;***> initialize variables
  1. S DGTY="INPATIENT LIST BY SERVICE"
  1. S (DGLIN,DGLIN2)="",$P(DGLIN,"=",80)="",$P(DGLIN2,"-",80)=""
  1. S DGDUZ=$P(^VA(200,DUZ,0),U,2),DGFAC=$P(^DIC(4,DUZ(2),0),U)
  1. S DGPAGE=0 D HEAD
  1. S DGSTOP="" S DGSV=$S(DGZSRT="A":0,1:DGZSRT) G FIND1:DGSV>0
  1. ;
  1. ;***> get services, then all patients in each service
  1. FIND S DGSV=$O(^DPT("ATR",DGSV)) G END1:DGSV=""
  1. FIND1 S DFN=0 W !,$P(^DIC(45.7,DGSV,0),U) ;print service name
  1. I $Y>(IOSL-5) D NEWPG G END2:DGSTOP=U
  1. FIND2 S DFN=$O(^DPT("ATR",DGSV,DFN)) W "." G PRINT:DFN=""
  1. G FIND2:'$D(^DPT(DFN,.103)),FIND2:'$D(^DPT(DFN,0))
  1. S DGCHT=$S($D(^AUPNPAT(DFN,41,DUZ(2),0)):$P(^(0),U,2),1:"??") ;chart#
  1. S:+DGCHT DGX=6-$L(DGCHT) F DGI=1:1:DGX S DGCHT="0"_DGCHT
  1. S DGCHT=$E(DGCHT,1,2)_"-"_$E(DGCHT,3,4)_"-"_$E(DGCHT,5,6)
  1. S DGNM=$P(^DPT(DFN,0),U),DGA(DGNM,DFN)=DGCHT G FIND2 ;set DGA array
  1. ;
  1. ;***> print all patients for this srv, then get another or go to end
  1. PRINT I '$D(DGA) W !!?10,"*** NO PATIENTS CURRENTLY ADMITTED TO THIS SERVICE ***",!! G END1
  1. S DGNM=0 D WRITE K DGA G END2:DGSTOP=U,FIND:DGZSRT="A",END1
  1. ;
  1. ;***> print patient info
  1. WRITE S DGNM=$O(DGA(DGNM)) Q:DGNM="" S DFN=0
  1. W1 S DFN=$O(DGA(DGNM,DFN)) G WRITE:DFN="" S DGX=DGA(DGNM,DFN)
  1. W !?20,$E(DGNM,1,25),?50,DGX ;patient name & chart #
  1. W ?60,$E($G(^DPT(DFN,.1)),1,3) ;ward
  1. W ?70,$G(^DPT(DFN,.101)) ;room-bed
  1. I $Y>(IOSL-5) D NEWPG Q:DGSTOP=U
  1. G W1
  1. ;
  1. ;
  1. END1 ;***> eoj
  1. I IOST["C-" D PRTOPT^ADGVAR
  1. END2 D ^%ZISC I $D(ZTQUEUED) Q
  1. K DFN,DGSTOP,DGNM,DGA,DGSV,DGPAGE,DGTIME,DGCITY,DGTY,DGX,DGCHT,DGZSRT
  1. K DGDUZ,DGFAC,DGLIN,DGLIN2,DIR
  1. Q
  1. ;
  1. NEWPG ;***> subrtn for end of page control
  1. I IOST'?1"C-".E D HEAD S DGSTOP="" Q
  1. K DIR S DIR(0)="E" D ^DIR S DGSTOP=X
  1. I DGSTOP'=U D HEAD
  1. Q
  1. ;
  1. I (IOST["C-")!(DGPAGE>0) W @IOF
  1. S DGPAGE=DGPAGE+1
  1. W ?11,"*****Confidential Patient Data Covered by Privacy Act*****"
  1. W !?80-$L(DGFAC)/2,DGFAC,!,DGDUZ
  1. W ?80-$L(DGTY)/2,DGTY,?70,"Page: ",DGPAGE,! D ^%T
  1. S Y=DT X ^DD("DD") W ?80-$L(Y)/2,Y,!,DGLIN
  1. W !,"Service",?20,"Patient",?50,"Chart #"
  1. W ?60,"Ward",?70,"Room-Bed",!,DGLIN2,!
  1. Q