| [613] | 1 | GMPLMENU ; SLC/MKB -- VALM Utilities for Add Menu sub-list ;5/26/94  15:55
 | 
|---|
 | 2 |  ;;2.0;Problem List;**11**;Aug 25, 1994
 | 
|---|
 | 3 | HDR ; -- header code
 | 
|---|
 | 4 |  N PAT,NUM,LIST S NUM=GMPLCNT_" problem(s) added"
 | 
|---|
 | 5 |  S PAT=$P(GMPDFN,U,2)_"  ("_$P(GMPDFN,U,3)_")"
 | 
|---|
 | 6 |  S VALMHDR(1)=PAT_$J(NUM,79-$L(PAT)),LIST=$P(GMPLSLST,U,2)
 | 
|---|
 | 7 |  S VALMHDR(2)=$J(LIST,$L(LIST)\2+41)
 | 
|---|
 | 8 |  Q
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 | HELP ; -- help code
 | 
|---|
 | 11 |  N X,CNT S CNT=+$G(^TMP("GMPLMENU",$J,"LIST",0))
 | 
|---|
 | 12 |  W !!?4,"You may select one or more of the above listed items by entering"
 | 
|---|
 | 13 |  W !?4,"its display number (1-"_CNT_") at the prompt; if the text if followed"
 | 
|---|
 | 14 |  W !?4,"by '...', all problems under that heading will be displayed for"
 | 
|---|
 | 15 |  W !?4,"selection.  Enter AD to select a problem not listed above."
 | 
|---|
 | 16 |  W !?4,"If you enter a list or range of numbers to add several problems,"
 | 
|---|
 | 17 |  W !?4,"you will be presented with each to complete, one at a time."
 | 
|---|
 | 18 |  W:VALMCNT>10 !?4,"Enter + to see more items, as in the problem list."
 | 
|---|
 | 19 |  W !!,"Press <return> to continue ..." R X:DTIME
 | 
|---|
 | 20 |  S VALMSG=$$MSG,VALMBCK=$S(VALMCC:"",1:"R")
 | 
|---|
 | 21 |  Q
 | 
|---|
 | 22 | EXIT ; -- exit code
 | 
|---|
 | 23 |  N I F I=0:0 S I=$O(XQORM("KEY",I)) Q:I'>0  K XQORM("KEY",I)
 | 
|---|
 | 24 |  K ^TMP("GMPLMENU",$J),GMPLCNT
 | 
|---|
 | 25 |  Q
 | 
|---|
 | 26 |  ;
 | 
|---|
 | 27 | MSG() ; -- set LMgr msg bar
 | 
|---|
 | 28 |  Q "Enter the number of the item(s) you wish to select"
 | 
|---|
 | 29 |  ;
 | 
|---|
 | 30 | BUILD ; -- Build ^TMP("GMPLMENU",$J,"LIST") list to display
 | 
|---|
 | 31 |  N I,LCNT,NUM,ITEM,CODE,GRP,PROBS,ADDED
 | 
|---|
 | 32 |  S (GRP,NUM,LCNT)=0 D CLEAN^VALM10
 | 
|---|
 | 33 |  F  S GRP=$O(^TMP("GMPLMENU",$J,GRP)) Q:GRP'>0  D
 | 
|---|
 | 34 |  . S ITEM=$G(^TMP("GMPLMENU",$J,GRP,0)),PROBS=+$P(ITEM,U,2)
 | 
|---|
 | 35 |  . I 'PROBS D  Q
 | 
|---|
 | 36 |  . . S LCNT=LCNT+1,NUM=NUM+1,^TMP("GMPLMENU",$J,"IDX",NUM)=U_GRP_U_LCNT
 | 
|---|
 | 37 |  . . S ^TMP("GMPLMENU",$J,"LIST",LCNT,0)=$J(NUM,5)_" "_$P(ITEM,U)_" ..."
 | 
|---|
 | 38 |  . . D CNTRL^VALM10(LCNT,1,5,IOINHI,IOINORM)
 | 
|---|
 | 39 | BLD1 . I LCNT,^TMP("GMPLMENU",$J,"LIST",LCNT,0)'="   " S LCNT=LCNT+1,^TMP("GMPLMENU",$J,"LIST",LCNT,0)="   "
 | 
|---|
 | 40 |  . S:+$G(GMPLGRP)=GRP VALMBG=LCNT+1 ; start list display here
 | 
|---|
 | 41 |  . I $L($P(ITEM,U)) D  ; have a hdr
 | 
|---|
 | 42 |  . . S LCNT=LCNT+1,^TMP("GMPLMENU",$J,"LIST",LCNT,0)="      "_$P(ITEM,U)
 | 
|---|
 | 43 |  . . D CNTRL^VALM10(LCNT,7,$L($P(ITEM,U)),IOUON,IOUOFF)
 | 
|---|
 | 44 |  . S I=0 F  S I=$O(^TMP("GMPLMENU",$J,GRP,I)) Q:I'>0  D
 | 
|---|
 | 45 |  . . S LCNT=LCNT+1,NUM=NUM+1
 | 
|---|
 | 46 |  . . S ITEM=$G(^TMP("GMPLMENU",$J,GRP,I)),CODE=$P(ITEM,U,3),ADDED=+$P(ITEM,U,4) ; ITEM=term^text^code, _"^1" if added
 | 
|---|
 | 47 |  . . S ^TMP("GMPLMENU",$J,"LIST",LCNT,0)=$S(ADDED:" X",1:"  ")_$J(NUM,3)_" "_$P(ITEM,U,2)_$S($L(CODE):" ("_CODE_")",1:"")
 | 
|---|
 | 48 |  . . S ^TMP("GMPLMENU",$J,"IDX",NUM)=I_U_GRP_U_LCNT_U_ITEM
 | 
|---|
 | 49 |  . . D CNTRL^VALM10(LCNT,1,5,IOINHI,IOINORM)
 | 
|---|
 | 50 |  . S LCNT=LCNT+1,^TMP("GMPLMENU",$J,"LIST",LCNT,0)="   "
 | 
|---|
 | 51 | BLDQ S ^TMP("GMPLMENU",$J,"LIST",0)=NUM_U_LCNT,VALMCNT=LCNT,GMPLCNT=0,VALMSG=$$MSG
 | 
|---|
 | 52 |  D KEYS
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | KEYS ; -- setup XQORM("KEY") array for menu
 | 
|---|
 | 56 |  N I,PROTCL,NUM S NUM=+$G(^TMP("GMPLMENU",$J,"LIST",0))
 | 
|---|
 | 57 |  S PROTCL=$O(^ORD(101,"B","GMPL LIST SELECT ITEM",0))_"^1"
 | 
|---|
 | 58 |  F I=1:1:NUM S XQORM("KEY",I)=PROTCL
 | 
|---|
 | 59 |  S VALMSG=$$MSG
 | 
|---|
 | 60 |  Q
 | 
|---|
 | 61 |  ;
 | 
|---|
 | 62 | CK ; -- check whether to stop processing after each problem
 | 
|---|
 | 63 |  ; Called from exit action of GMPL LIST XXX protocols
 | 
|---|
 | 64 |  S:$D(GMPQUIT) XQORPOP=1 K GMPQUIT
 | 
|---|
 | 65 |  I $D(DTOUT)!($G(VALMBCK)="Q") S VALMBCK="Q" Q
 | 
|---|
 | 66 |  S VALMBCK="R",VALMSG=$$MSG
 | 
|---|
 | 67 |  Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 | ITEM ; -- select item from menu
 | 
|---|
 | 70 |  N NUM,GMPROB,GMPTERM,GMPICD,GMPSAVED,LCNT,LINE,DUP,ITEM,CODE,GRP,PROB,GMPINDEX
 | 
|---|
 | 71 |  S NUM=+$P(XQORNOD(0),U,3) Q:NUM'>0
 | 
|---|
 | 72 |  S GMPINDEX=$G(^TMP("GMPLMENU",$J,"IDX",NUM)),PROB=+GMPINDEX,GRP=$P(GMPINDEX,U,2)
 | 
|---|
 | 73 |  I 'PROB D  Q  ; expand category
 | 
|---|
 | 74 |  . S ITEM=$G(^TMP("GMPLMENU",$J,+GRP,0)) S:'$D(GMPLGRP) GMPLGRP=+GRP
 | 
|---|
 | 75 |  . S ^TMP("GMPLMENU",$J,+GRP,0)=$P(ITEM,U)_"^1"
 | 
|---|
 | 76 |  S ITEM=$P(GMPINDEX,U,4,6) ; CLU^text^code
 | 
|---|
 | 77 |  S GMPTERM=$S(+ITEM>1:$P(ITEM,U,1,2),1:""),GMPROB=$P(ITEM,U,2)
 | 
|---|
 | 78 |  S CODE=$P(ITEM,U,3),GMPICD=$S('$L(CODE):"799.9",1:CODE)
 | 
|---|
 | 79 |  W !!!,">>>  Adding problem #"_NUM_" '"_GMPROB_"' ..."
 | 
|---|
 | 80 |  S DUP=$$DUPL^GMPLX(+GMPDFN,+GMPTERM,GMPROB)
 | 
|---|
 | 81 |  I DUP,'$$DUPLOK^GMPLX(DUP) G ITQ
 | 
|---|
 | 82 |  D ADD1^GMPL1
 | 
|---|
 | 83 | ITQ I $D(GMPSAVED) D  D HDR
 | 
|---|
 | 84 |  . S GMPREBLD=1,GMPLCNT=GMPLCNT+1,LCNT=+$P(GMPINDEX,U,3)
 | 
|---|
 | 85 |  . S LINE=$G(^TMP("GMPLMENU",$J,"LIST",LCNT,0)),^TMP("GMPLMENU",$J,"LIST",LCNT,0)=" X"_$E(LINE,3,999)
 | 
|---|
 | 86 |  . S ^TMP("GMPLMENU",$J,+GRP,+PROB)=ITEM_"^1" ; problem added
 | 
|---|
 | 87 |  Q
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 | CLU ; -- add problem not on menu, from CLU
 | 
|---|
 | 90 |  N GMPSAVED W !!!,">>> Adding a problem not on the menu ..."
 | 
|---|
 | 91 |  W @IOF D FULL^VALM1,ADD^GMPL1 S VALMBCK="R" I $D(GMPSAVED) S GMPREBLD=1,GMPLCNT=GMPLCNT+1 K VALMHDR
 | 
|---|
 | 92 |  Q
 | 
|---|