| 1 | SPNAHOC4 ;HISC/DAD-AD HOC REPORTS: MACRO OUTPUT ; [ 02/21/95  4:02 PM ]
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;;01/02/1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN1 ; *** Set the output macro flag
 | 
|---|
| 5 |  S SPNMOUTP=1
 | 
|---|
| 6 |  W !!?3,"You will be prompted for an output"
 | 
|---|
| 7 |  W !?3,"device when you exit the ",SPNTYPE(0)," menu. ",$C(7)
 | 
|---|
| 8 |  R SP:SPNDTIME
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 | EN2 ; *** Print the macro report
 | 
|---|
| 11 |  K %ZIS,IOP S %ZIS="QM",%ZIS("A")="   Output macro to device: "
 | 
|---|
| 12 |  W ! D ^%ZIS G:POP EXIT I $D(IO("Q")) K IO("Q") D QVAR,^%ZTLOAD G EXIT
 | 
|---|
| 13 | ENTSK S SPNEXIT=0
 | 
|---|
| 14 |  U IO W:$E(IOST)="C" @IOF
 | 
|---|
| 15 |  W !?19,"=========================================="
 | 
|---|
| 16 |  W !?19,"|| AD HOC REPORT GENERATOR MACRO REPORT ||"
 | 
|---|
| 17 |  W !?19,"=========================================="
 | 
|---|
| 18 |  W !!!,"Report name: ",$E(SPNUNDL,1,67)
 | 
|---|
| 19 |  F SPNTYP="S","P" Q:SPNEXIT  D
 | 
|---|
| 20 |  . W !!,$S(SPNTYP="S":"Sort",1:"Print")," fields:"
 | 
|---|
| 21 |  . W !,$E("-------------",1,13-(SPNTYP="S")),!!,"Macro: "
 | 
|---|
| 22 |  . S X=$P($G(SPNMACRO(SPNTYP)),U,2) W $S(X]"":X,1:$E(SPNUNDL,1,73))
 | 
|---|
| 23 |  . F SPNORDER=1:1:SPNMAXOP(SPNTYP) Q:SPNEXIT  D
 | 
|---|
| 24 |  .. S SPNFIELD=$O(SPNOPTN(SPNTYP,SPNORDER,""))
 | 
|---|
| 25 |  .. S X=$G(SPNOPTN(SPNTYP,SPNORDER,+SPNFIELD))
 | 
|---|
| 26 |  .. S X(1)=$P(X,";"),X(1)=$TR(X(1),$TR(X(1),"+-&!@'#"))
 | 
|---|
| 27 |  .. S X(1)=X(1)_SPNFIELD_$S($P(X,";")]"":";"_$P(X,";",2,99),1:"")
 | 
|---|
| 28 |  .. I SPNTYP="S" D
 | 
|---|
| 29 |  ... S X=$G(FR(SPNORDER)),X(2)=$S(X]"":X,X(1)]"":"Beginning",1:"")
 | 
|---|
| 30 |  ... S X=$G(TO(SPNORDER)),X(3)=$S(X]"":X,X(1)]"":"Ending",1:"")
 | 
|---|
| 31 |  ... Q
 | 
|---|
| 32 |  .. I $D(SPNMACRO(SPNTYP)),X(1)]"" D
 | 
|---|
| 33 |  ... S SPND1=0 F SP=$L(X(1),";"):-1:1 D  Q:SPND1
 | 
|---|
| 34 |  .... S SPND1=$O(^SPNL(154.8,+SPNMACRO(SPNTYP),"FLD","B",$P(X(1),";",1,SP),0))
 | 
|---|
| 35 |  .... Q
 | 
|---|
| 36 |  ... I SPND1 D
 | 
|---|
| 37 |  .... S SP=$G(^SPNL(154.8,+SPNMACRO(SPNTYP),"FLD",SPND1,0)),SPN=$G(^("FRTO"))
 | 
|---|
| 38 |  .... S X(1)=$P(SP,U)
 | 
|---|
| 39 |  .... I SPNTYP="S" F SPI=1,2 S X(SPI+1)=$S($P(SP,U,3):"Ask User",$P(SPN,U,SPI)]"":$E($P(SPN,U,SPI),1,30),SPI=1:"Beginning",1:"Ending")
 | 
|---|
| 40 |  .... Q
 | 
|---|
| 41 |  ... Q
 | 
|---|
| 42 |  .. W ! D PRNTFLD
 | 
|---|
| 43 |  .. Q
 | 
|---|
| 44 |  . D PAUSE
 | 
|---|
| 45 |  . Q
 | 
|---|
| 46 |  G:SPNEXIT EXIT
 | 
|---|
| 47 |  W ! D PRNTHDR(+$G(SPNMACRO("P")))
 | 
|---|
| 48 |  W ! D SORTHDR(+$G(SPNMACRO("S")))
 | 
|---|
| 49 |  W ?46,"Device: ",$E(SPNUNDL,1,26)
 | 
|---|
| 50 |  W:$E(IOST)'="C" @IOF
 | 
|---|
| 51 | EXIT ; *** Exit the macro report
 | 
|---|
| 52 |  D ^%ZISC S SPNMOUTP=0
 | 
|---|
| 53 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | PRNTFLD ; *** Inquire macro entry point
 | 
|---|
| 56 |  S SP=$G(SPNMENU(+SPNFIELD))
 | 
|---|
| 57 |  S SP=$S((SPNTYP="S")&(SP'>0):"",1:$P(SP,U,2))
 | 
|---|
| 58 |  W !?3,SPNORDER,") Field: "
 | 
|---|
| 59 |  W $S(SP]"":SP,SPNFIELD?1.N:"*** CORRUPTED ***",1:$E(SPNUNDL,1,30))
 | 
|---|
| 60 |  W !?6,"Entry: ",$S(X(1)]"":X(1),1:$E(SPNUNDL,1,30))
 | 
|---|
| 61 |  I SPNTYP="S" D
 | 
|---|
| 62 |  . W !?6,"From:  ",$E($S(X(2)]"":X(2),1:SPNUNDL),1,30)
 | 
|---|
| 63 |  . W ?46,"To: ",$E($S(X(3)]"":X(3),1:SPNUNDL),1,30)
 | 
|---|
| 64 |  . Q
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | PRNTHDR(Y) ; *** Print DHD header
 | 
|---|
| 67 |  W !,"Header: ",$P($$DHD(Y),U,2)
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | SORTHDR(Y) ; *** Print DIPCRIT header
 | 
|---|
| 70 |  W !,"Sort criteria in report header: ",$P($$DIPCRIT(Y),U,2)
 | 
|---|
| 71 |  Q
 | 
|---|
| 72 | DHD(Y) ; *** Get Header
 | 
|---|
| 73 |  N X S X=$P($G(^SPNL(154.8,+Y,0)),U,6)
 | 
|---|
| 74 |  Q X_U_$S(X]"":X,1:$E(SPNUNDL,1,72))
 | 
|---|
| 75 | DIPCRIT(Y) ; *** Get DIPCRIT
 | 
|---|
| 76 |  N X S X=$P($G(^SPNL(154.8,+Y,0)),U,5),X=$S(X=0:2,X=1:1,1:0)
 | 
|---|
| 77 |  Q X_U_$S(X=1:"Yes",X=2:"No",1:"( Y / N )")
 | 
|---|
| 78 | PAUSE ; *** Pause at the end of page
 | 
|---|
| 79 |  I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR S SPNEXIT=$S(Y'>0:1,1:0)
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | QVAR ; *** Save variables for queueing
 | 
|---|
| 82 |  S ZTRTN="ENTSK^SPNAHOC4",ZTDESC="Ad Hoc Report Generator Macro Report"
 | 
|---|
| 83 |  F SP="FR(","SPNMAXOP(","SPNMENU(","SPNOPTN(","SPNTEMP","SPNMACRO(","TO(","SPNUNDL" S ZTSAVE(SP)=""
 | 
|---|
| 84 |  Q
 | 
|---|