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

APCLSRT.m

Go to the documentation of this file.
  1. APCLSRT ; IHS/CMI/LAB - IHS GETS SORT INFO FOR PCC REPORTS ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;SORT CONTROLLER FOR REPORTS
  1. EN D CHKVARS^APCLSRT2
  1. G:$D(APCLQUIT) EXIT
  1. D MENU
  1. EN1 D HEAD,CHOICE,EXIT
  1. Q
  1. CHKNAV ;check for navigation string for file and sort field
  1. I '$D(^APCLSRT(X,4,APCLFILE)) W !,$C(7),$C(7),"Navigation not defined for the File! Notify programmer!",!! S APCLQUIT="" Q
  1. S APCLNAV=$P(^APCLSRT(X,4,APCLFILE,0),U,2)
  1. Q
  1. ;
  1. W:$D(IOF) @IOF
  1. S APCLX="REPORT SORTING UTILITY" W !!?80-$L(APCLX)\2,APCLX K APCLX,APCLFORC
  1. W !
  1. W !,"The ",@APCLRVON,APCLRPT,@APCLRVOF
  1. W " report can be sorted by one or more"
  1. W !,"of the following attributes. "
  1. W "'<<===' indicates a mandatory selection.",!
  1. Q
  1. F S X=$O(^APCLSRT("B",X)) Q:X="" F Y=0:0 S Y=$O(^APCLSRT("B",X,Y)) Q:'Y I $D(^APCLSRT(Y,2,"B",APCLPTMP)) D M1
  1. W ! Q
  1. CHOICE D M2
  1. I (J-1)=1 S APCLZZ=1 G OK
  1. W !!?6,"Your choice (1",$S((J-1)>1:"-"_(J-1),1:""),"): "
  1. R APCLZZ:DTIME I '$T S APCLZZ=U
  1. I APCLZZ=""!(APCLZZ[U) S APCLQUIT="" Q
  1. I APCLZZ'?1N.2N!(APCLZZ>(J-1)) W !!?6,$C(7),"Type ",$S((J-1)>1:"a number from 1",1:"number 1: "),$S((J-1)>1:"-"_(J-1)_":",1:"") W ! G CHOICE
  1. I APCLZZ,APCLZZ'>J G OK
  1. G CHOICE
  1. OK S Z=%APCL(APCLZZ),(X,APCLSNO)=+Z,APCLSNA=$P(Z,U,2),APCLCSTG=APCLCSTG_APCLZZ_U
  1. K Z,%APCLB(X) W:(J-1)>1 " ",APCLSNA
  1. OK1 I BY]"" S BY=BY_","
  1. S APCLREC=^APCLSRT(X,0)
  1. S APCLDIC=^DIC(APCLFILE,0,"GL")
  1. D CHKNAV I $D(APCLQUIT) Q
  1. K J
  1. S BY=BY_APCLNAV
  1. D @("S"_$P(APCLREC,U,2)_"^APCLSRT1")
  1. K APCLNAV,APCLREC
  1. I $D(APCLQUIT) Q
  1. I $D(APCLFORC) K APCLFORC D PRINT Q
  1. I BY["[" S BY="["_$P(BY,"[",2) S BY=$P(BY,"]")_"]" G PRINT
  1. I I<2 D PRINT Q
  1. W !!,"Within ",APCLSNA,", want to sort by another attribute"
  1. S %=2 D YN^DICN
  1. I %Y=U S APCLQUIT="" Q
  1. I "Nn"[$E(%Y) D CHECK G:$D(APCLFORC) OK D PRINT Q
  1. W !!! S APCLN=APCLN+1,I=I-1 G EN1
  1. EXIT K X,J,Y,Z,%Y,APCLZ,APCLZZ,APCLDIC,APCLN,APCLPTMP,BY,FR,TO,FLDS,I,APCLQUIT,APCLFILE,APCLRPT,%,%DT,APCLDM,APCLI,APCLSET,BY1,BY2,DHD,DIC,DIOEND,DIR,DUOUT,B,P,APCLBEGD
  1. K APCLSNO,APCLSNA,%APCL,%APCLB,APCLRVOF,APCLRVON,APCLTRM
  1. K APCLX,APCLY,APCLMAND,APCLCSTG,APCLMANN,APCLMAN,APCLSRT,APCLCST,APCLTRM,APCLREC,APCLNAV,APCLFORC,APCLPS
  1. D ^%ZISC
  1. I '$D(ZTQUEUED) S IOP="HOME" D ^%ZIS
  1. W:$D(IOF) @IOF
  1. Q
  1. M1 N Z
  1. S Z=$O(^APCLSRT(Y,2,"B",APCLPTMP,"")),Z=^(Z)
  1. S I=I+1,%APCLB(Y)=Y_U_X_U_Z
  1. Q
  1. M2 K %APCL S APCLZ=""
  1. F J=1:1 S APCLZ=$O(%APCLB(APCLZ)) Q:'APCLZ S (%APCL(J),APCLSRT)=%APCLB(APCLZ),X=$P(APCLSRT,U,2),Y=$P(APCLSRT,U),Z=$P(APCLSRT,U,3) W:J#2 !?6 W:'(J#2) ?45 W $J(J,3),") ",X I Z W " <<===" S APCLMAND=J,APCLMANN=X,APCLMAN=Y_U_X
  1. K APCLSRT,APCLZ
  1. Q
  1. TITLE ;
  1. S DIR(0)="FO^2:60",DIR("A")="Please enter a TITLE for this report: ",DIR("B")="PATIENT LISTING",DIR("?")="Enter a narrative title that you want to see on this report" D ^DIR K DIR
  1. I $D(DUOUT) S APCLQUIT="" Q
  1. S DHD=X
  1. Q
  1. PRINT ;
  1. D TITLE
  1. Q:$D(APCLQUIT)
  1. PRNT S DIC=APCLDIC
  1. PRT1 S DIOEND="D EOR^APCLSRT"
  1. DIP D EN1^DIP
  1. Q
  1. CHECK I APCLCSTG[(U_APCLMAND_U) Q
  1. S APCLZZ=APCLMAND,APCLFORC="",APCLN=APCLN+1
  1. W !!,$C(7),"You must also sort by"
  1. Q
  1. EOR ;
  1. I $D(IOST),IOST["C-" W !!,"End of report. Strike <CR> to continue" R APCLX:300
  1. W:$D(IOF) @IOF
  1. Q