| 1 | ORWDXM  ; SLC/KCM/JLI - Order Dialogs, Menus;10:42 AM  3/29/02 10:47AM  4/3/2002 11AM  4/5/2002 4:30PM
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,132**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | MENU(LST,DLG)   ; Return menu contents for an order dialog
 | 
|---|
| 5 |  ; LST(0)=name^# cols^path switch^^^ Key Variables (pieces 6-20)
 | 
|---|
| 6 |  ; LST(n)=col^row^type^ien^formid^autoaccept^display text^mnemonic
 | 
|---|
| 7 |  ;        ^displayonly
 | 
|---|
| 8 |  N ILST,I,COL,ROW,IEN,TYP,FID,AUT,MNE,DON,X,X0,X5,NUMCOL
 | 
|---|
| 9 |  S X0=$G(^ORD(101.41,DLG,0)),X5=$G(^(5)),ILST=0,NUMCOL=1
 | 
|---|
| 10 |  ;S COL=$P(X5,U) S:'COL COL=80 S COL=80\COL
 | 
|---|
| 11 |  S LST(0)=$P(X0,U,2)_U_NUMCOL_U_$P(X5,U,3)
 | 
|---|
| 12 |  S $P(LST(0),U,6)=$$KEYVAR^ORWDXM3(DLG) ; key vars start at 6th piece
 | 
|---|
| 13 |  S I=0 F  S I=$O(^ORD(101.41,DLG,10,I)) Q:'I  D
 | 
|---|
| 14 |  . S X=$G(^ORD(101.41,DLG,10,I,0))
 | 
|---|
| 15 |  . S ROW=$P(X,U),COL=$P(ROW,".",2),ROW=$P(ROW,".",1)
 | 
|---|
| 16 |  . I COL>NUMCOL S NUMCOL=COL
 | 
|---|
| 17 |  . S IEN=+$P(X,U,2),MNE=$P(X,U,3),DON=$P(X,U,5),X=$P(X,U,4)
 | 
|---|
| 18 |  . S X0=$G(^ORD(101.41,IEN,0)),X5=$G(^(5))
 | 
|---|
| 19 |  . S TYP=$P(X0,U,4),FID=+$P(X5,U,5),AUT=$P(X5,U,8)
 | 
|---|
| 20 |  . I '$L(X) S X=$P($G(^ORD(101.41,IEN,0)),U,2)
 | 
|---|
| 21 |  . S ILST=ILST+1,LST(ILST)=COL_U_ROW_U_TYP_U_IEN_U_FID_U_AUT_U_X_U_MNE_U_DON
 | 
|---|
| 22 |  S $P(LST(0),U,2)=NUMCOL
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 | PROMPTS(LST,DLG)        ; Return prompting info for generic dialog
 | 
|---|
| 25 |  ; LST(n)=ID^REQ^HID^PROMPT^TYPE^DOMAIN^DEFAULT^IDFLT^HELP^XREF^SCR
 | 
|---|
| 26 |  N I,X,ILST,SEQ,REQ,HID,ITM,IDX,PRMT,HLP,DFLT,IDFLT,TYP,DOM,ID,WP,SCR
 | 
|---|
| 27 |  S ILST=0
 | 
|---|
| 28 |  S SEQ=0 F  S SEQ=$O(^ORD(101.41,DLG,10,"B",SEQ)) Q:'SEQ  D
 | 
|---|
| 29 |  . S I=0 F  S I=$O(^ORD(101.41,DLG,10,"B",SEQ,I)) Q:'I  D
 | 
|---|
| 30 |  . . S X=$G(^ORD(101.41,DLG,10,I,0))
 | 
|---|
| 31 |  . . S ITM=$P(X,U,2),REQ=+$P(X,U,6),IDX=$P(X,U,10),PRMT=$P(X,U,14)
 | 
|---|
| 32 |  . . I '$L(PRMT) S PRMT=$P(X,U,4)
 | 
|---|
| 33 |  . . S HLP=$P($G(^ORD(101.41,DLG,10,I,1)),U,1)
 | 
|---|
| 34 |  . . S HID=$E($G(^ORD(101.41,DLG,10,I,3)),1,3)="I 0"
 | 
|---|
| 35 |  . . S SCR="" I $L($G(^ORD(101.41,DLG,10,I,4))) S SCR=DLG_":"_I
 | 
|---|
| 36 |  . . S X=$G(^ORD(101.41,ITM,0)) I '$L(PRMT) S PRMT=$P(X,U,2)
 | 
|---|
| 37 |  . . S X=$G(^ORD(101.41,ITM,1)),TYP=$P(X,U),DOM=$P(X,U,2),ID=$P(X,U,3)
 | 
|---|
| 38 |  . . S X=$G(^ORD(101.41,DLG,10,I,7)) D XDFLT(X,TYP,DOM,.IDFLT,.DFLT)
 | 
|---|
| 39 |  . . I '$L(ID) S ID="ID"_ITM
 | 
|---|
| 40 |  . . S ILST=ILST+1
 | 
|---|
| 41 |  . . S LST(ILST)="~"_ID_U_REQ_U_HID_U_PRMT_U_TYP_U_DOM_U_DFLT_U_IDFLT_U_HLP_U_IDX_U_SCR
 | 
|---|
| 42 |  . . ; loop here to append any default word processing
 | 
|---|
| 43 |  . . S WP=0 F  S WP=$O(^ORD(101.41,DLG,10,I,8,WP)) Q:'WP  D
 | 
|---|
| 44 |  . . . S ILST=ILST+1,LST(ILST)="t"_$G(^ORD(101.41,DLG,10,I,8,WP,0))
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 | XDFLT(CODE,TYPE,DOMAIN,IVAL,EVAL) ; return internal, external default values
 | 
|---|
| 47 |  S (IVAL,EVAL)="" Q:'$L(CODE)
 | 
|---|
| 48 |  ; set err trap here?
 | 
|---|
| 49 |  N ID,REQ,HID,PRMT,TYP,DOM,DFLT,IDFLT,HLP,Y  ; to protect PROMPTS
 | 
|---|
| 50 |  X CODE
 | 
|---|
| 51 |  S IVAL=$G(Y),EVAL=IVAL
 | 
|---|
| 52 |  I TYPE="D",IVAL S EVAL=$$FMTE^XLFDT(IVAL)
 | 
|---|
| 53 |  I TYPE="P",IVAL,DOMAIN S EVAL=$$GET1^DIQ(+DOMAIN,IVAL_",",.01)
 | 
|---|
| 54 |  I TYPE="S",$L(IVAL) S EVAL=$P($P(DOMAIN,IVAL_":",2),";",1)
 | 
|---|
| 55 |  I TYPE="Y",$L(IVAL) S EVAL=$S(IVAL=1:"YES",1:"NO")
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 | DLGNAME(VAL,DLG)        ; Return name(s) of dialog & base dialog given IEN
 | 
|---|
| 58 |  ; VAL=InternalName^DisplayName^BaseDialogIEN^BaseDialogName
 | 
|---|
| 59 |  N INT,EXT,BIEN,BNAM
 | 
|---|
| 60 |  S INT=$P($G(^ORD(101.41,DLG,0)),U),EXT=$P($G(^(0)),U,2)
 | 
|---|
| 61 |  S BNAM=INT,BIEN=DLG
 | 
|---|
| 62 |  I $P(^ORD(101.41,DLG,0),U,4)="Q" D
 | 
|---|
| 63 |  . N DGRP S DGRP=$P($G(^ORD(101.41,DLG,0)),U,5) Q:'DGRP
 | 
|---|
| 64 |  . S BIEN=$$DEFDLG^ORWDXQ(DGRP),BNAM=$P(^ORD(101.41,BIEN,0),U)
 | 
|---|
| 65 |  S VAL=INT_U_EXT_U_BIEN_U_BNAM
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 | FORMID(VAL,DLG) ; Return the FormID for a dialog
 | 
|---|
| 68 |  S VAL=+$P($G(^ORD(101.41,DLG,5)),U,5) Q:VAL
 | 
|---|
| 69 |  I $P($G(^ORD(101.41,DLG,0)),U,4)="Q" D
 | 
|---|
| 70 |  . N DGRP S DGRP=$P($G(^ORD(101.41,DLG,0)),U,5) Q:'DGRP
 | 
|---|
| 71 |  . S DLG=$$DEFDLG^ORWDXQ(DGRP) Q:'DLG
 | 
|---|
| 72 |  . S VAL=+$P($G(^ORD(101.41,DLG,5)),U,5)
 | 
|---|
| 73 |  I 'VAL,$P($G(^ORD(101.41,DLG,0)),U,7)=$O(^DIC(9.4,"C","OR",0)) D
 | 
|---|
| 74 |  . S VAL=152  ; use generic "on the fly" form
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | MSTYLE(VAL)     ; Return the menu style for the system
 | 
|---|
| 77 |  S VAL=+$$GET^XPAR("SYS","ORWDXM ORDER MENU STYLE",1,"I")
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | LOADSET(LST,DLG)        ; Return the contents of an order set
 | 
|---|
| 80 |  ; LST(0): SetDisplayText^Key Variables
 | 
|---|
| 81 |  ; LST(n): DlgIEN^DlgType^DisplayText^OrderableItemIENs(OIIEN;OIIEN;..)
 | 
|---|
| 82 |  N SEQ,DA,ITM,TYP,ILST,X,OIENS,PKGINFO
 | 
|---|
| 83 |  S LST(0)=$P(^ORD(101.41,DLG,0),U,2)_U_$$KEYVAR^ORWDXM3(DLG),ILST=0
 | 
|---|
| 84 |  S SEQ="" F  S SEQ=$O(^ORD(101.41,DLG,10,"B",SEQ)) Q:SEQ=""  D
 | 
|---|
| 85 |  . S DA=0 F  S DA=$O(^ORD(101.41,DLG,10,"B",SEQ,DA)) Q:'DA  D
 | 
|---|
| 86 |  . . S X=$G(^ORD(101.41,DLG,10,DA,0)),ITM=$P(X,U,2),X=$P(X,U,4)
 | 
|---|
| 87 |  . . Q:'ITM  Q:'$D(^ORD(101.41,+ITM,0))
 | 
|---|
| 88 |  . . S (OIENS,PKGINFO)=""
 | 
|---|
| 89 |  . . S TYP=$P(^ORD(101.41,ITM,0),U,4)
 | 
|---|
| 90 |  . . S OIENS=$$OIIFN(+ITM)
 | 
|---|
| 91 |  . . S PKGINFO=$$PKGINF(+ITM)
 | 
|---|
| 92 |  . . I '$L(X) S X=$P($G(^ORD(101.41,ITM,5)),U,4)
 | 
|---|
| 93 |  . . I '$L(X) S X=$P($G(^ORD(101.41,ITM,0)),U,2)
 | 
|---|
| 94 |  . . I '$L(X) S X="Display Name Missing"
 | 
|---|
| 95 |  . . S ILST=ILST+1,LST(ILST)=ITM_U_TYP_U_X_U_OIENS_U_PKGINFO
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | PKGINF(DLG) ; Get Package based on the DLG ID
 | 
|---|
| 98 |  N PKGID,PKGNM
 | 
|---|
| 99 |  S PKGID="",PKGNM=""
 | 
|---|
| 100 |  S:$D(^ORD(101.41,DLG,0)) PKGID=$P(^(0),U,7)
 | 
|---|
| 101 |  I PKGID D
 | 
|---|
| 102 |  . S:$D(^DIC(9.4,PKGID,0)) PKGNM=$P(^(0),U,2)
 | 
|---|
| 103 |  Q PKGNM
 | 
|---|
| 104 | OIIFN(DLG) ; Get Orderable Item IENs based on the DLG
 | 
|---|
| 105 |  N OIDX,OINODE,OINUM,OIIENS,OI0
 | 
|---|
| 106 |  S (OIIENS,OINODE,OIIENS)=""
 | 
|---|
| 107 |  S OINUM=0
 | 
|---|
| 108 |  S OIDX=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0))
 | 
|---|
| 109 |  S:$D(^ORD(101.41,DLG,6,"D",OIDX)) OINODE=$O(^(OIDX,0))
 | 
|---|
| 110 |  S:OINODE OINUM=$P(^ORD(101.41,DLG,6,OINODE,0),U,3)
 | 
|---|
| 111 |  I OINUM  F OI0=1:1:OINUM  S OIIENS=OIIENS_^(OI0)_";"
 | 
|---|
| 112 |  Q OIIENS
 | 
|---|
| 113 | AUTOACK(REC,ORVP,ORNP,ORL,ORIT)       ; Place a quick order without verify step
 | 
|---|
| 114 |  N ORDG,ORDUZ,ORSTS,OREVENT,ORCAT,ORDA,ORTS,ORNEW,ORCHECK,ORLOG
 | 
|---|
| 115 |  N ORDIALOG,ORIFN,ORLEAD,ORTRAIL
 | 
|---|
| 116 |  S ORVP=ORVP_";DPT(",ORL(2)=ORL_";SC(",ORL=ORL(2)
 | 
|---|
| 117 |  S DGRP=$P($G(^ORD(101.41,ORIT,0)),U,5) Q:'DGRP
 | 
|---|
| 118 |  S ORDIALOG=$$DEFDLG^ORWDXQ(DGRP)
 | 
|---|
| 119 |  I ORDIALOG=$O(^ORD(101.41,"B","PSO OERR",0)) S ORCAT="O"      ; temp
 | 
|---|
| 120 |  I ORDIALOG=$O(^ORD(101.41,"B","PSJ OR PAT OE",0)) S ORCAT="I" ; temp
 | 
|---|
| 121 |  D GETDLG1^ORCD(ORDIALOG)
 | 
|---|
| 122 |  D GETORDER^ORCD("^ORD(101.41,"_ORIT_",6)")
 | 
|---|
| 123 |  ; check required fields?
 | 
|---|
| 124 |  D EN^ORCSAVE
 | 
|---|
| 125 |  S REC="" I ORIFN D GETBYIFN^ORWORR(.REC,ORIFN)
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 | ALLRSP(QUIK)    ; Return 1 if quick order has values for all responses
 | 
|---|
| 128 |  N ALLOK,DLG,ITM,PRMT
 | 
|---|
| 129 |  S ALLOK=1,DLG=+$$DEFDLG^ORWDXQ(+$P($G(^ORD(101.41,QUIK,0)),U,5))
 | 
|---|
| 130 |  S ITM=0 F  S ITM=$O(^ORD(101.41,DLG,10,ITM)) Q:'ITM  D  Q:'ALLOK
 | 
|---|
| 131 |  . Q:$P($G(^ORD(101.41,DLG,10,ITM,0)),U,8)=1
 | 
|---|
| 132 |  . S PRMT=$P(^ORD(101.41,DLG,10,ITM,0),U,2)
 | 
|---|
| 133 |  . I '$$HASRSP(QUIK,PRMT) S ALLOK=0
 | 
|---|
| 134 |  Q ALLOK
 | 
|---|
| 135 | HASRSP(QUIK,PRMT)    ; Return 1 if quick order has response for prompt
 | 
|---|
| 136 |  N FND,RSP S FND=0
 | 
|---|
| 137 |  S RSP=0 F  S RSP=$O(^ORD(101.41,QUIK,6,RSP)) Q:'RSP  D  Q:FND
 | 
|---|
| 138 |  . I $P(^ORD(101.41,QUIK,6,RSP,0),U,2)=PRMT S FND=1
 | 
|---|
| 139 |  Q FND
 | 
|---|
| 140 |   
 | 
|---|