| 1 | ORWDXQ ; SLC/KCM - Utilities for Quick Orders;06:18 PM  27 Apr 1998
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,245**;Dec 17, 1997;Build 2
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | DLGNAME(VAL,INAME)      ; Return display name for a dialog (DELETE??)
 | 
|---|
| 5 |  N IEN S IEN=$O(^ORD(101.41,"B",INAME,0))
 | 
|---|
| 6 |  S VAL=$P($G(^ORD(101.41,IEN,5)),U,4)
 | 
|---|
| 7 |  Q
 | 
|---|
| 8 | DLGSAVE(VAL,CRC,DNAME,DGRP,RSP)    ; Return IEN of new or existing quick order
 | 
|---|
| 9 |  N ROOT,NM,IEN
 | 
|---|
| 10 |  S ROOT="ORWDQ "_CRC,VAL=0,IEN=+$O(^ORD(101.41,"B",ROOT,0))
 | 
|---|
| 11 |  I IEN=0 D SAVENEW(.VAL,ROOT,DNAME,DGRP,.RSP) I 1
 | 
|---|
| 12 |  E  I $$MATCH(IEN,DGRP,.RSP) S VAL=IEN I 1
 | 
|---|
| 13 |  E  D
 | 
|---|
| 14 |  . D UPDQNAME^ORCMEDT8(IEN)
 | 
|---|
| 15 |  . S ROOT=$$ENSURNEW^ORCMEDT8(ROOT)
 | 
|---|
| 16 |  . D SAVENEW(.VAL,ROOT,DNAME,DGRP,.RSP)
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | OLDELSE E  D  ; this creates other entries if CRC matches...
 | 
|---|
| 19 |  . S NM=ROOT
 | 
|---|
| 20 |  . F  S NM=$O(^ORD(101.41,"B",NM)) Q:$E(NM,1,$L(ROOT))'=ROOT  D
 | 
|---|
| 21 |  . . S IEN=0 F  S IEN=$O(^ORD(101.41,"B",ROOT,0)) Q:IEN'>0  D  Q:VAL
 | 
|---|
| 22 |  . . . I $$MATCH(IEN,DGRP,RSP) S VAL=IEN
 | 
|---|
| 23 |  . . I 'VAL D                         ; new entry by same CRC (rare!)
 | 
|---|
| 24 |  . . . F I=1:1 I '$D(^ORD(101.41,"B",ROOT_" "_I)) Q
 | 
|---|
| 25 |  . . . D SAVENEW(VAL,ROOT_" "_I,DNAME,DGRP,RSP)
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | MATCH(IEN,DGRP,RSP)     ; Called by DLGSAVE
 | 
|---|
| 28 |  ; Return true if the responses passed in match dialog
 | 
|---|
| 29 |  I $P(^ORD(101.41,IEN,0),U,5)'=DGRP Q 0  ; display group must match
 | 
|---|
| 30 |  N TST,RSLT,DLG,INST,VAL,I,J,L
 | 
|---|
| 31 |  S RSLT=1 M TST=RSP
 | 
|---|
| 32 |  S I=0 F  S I=$O(^ORD(101.41,IEN,6,I)) Q:'I  D  Q:'RSLT
 | 
|---|
| 33 |  . S DLG=$P(^ORD(101.41,IEN,6,I,0),U,2),INST=$P(^(0),U,3)
 | 
|---|
| 34 |  . S VAL="ORDIALOG(""WP"","_DLG_","_INST_")"
 | 
|---|
| 35 |  . I $D(^ORD(101.41,IEN,6,I,1)) S VAL=^(1)
 | 
|---|
| 36 |  . I '$D(TST(DLG,INST)) S RSLT=0 Q
 | 
|---|
| 37 |  . I TST(DLG,INST)'=VAL S RSLT=0 Q
 | 
|---|
| 38 |  . I $D(^ORD(101.41,IEN,6,I,2))>1 D  Q:'RSLT
 | 
|---|
| 39 |  . . N A,B,JMAX
 | 
|---|
| 40 |  . . S (J,L)=0 F  S L=$O(^ORD(101.41,IEN,6,I,2,L)) Q:'L  S J=J+1,A(J)=^(L,0)
 | 
|---|
| 41 |  . . S JMAX=J
 | 
|---|
| 42 |  . . S (J,L)=0 F  S L=$O(TST("WP",DLG,INST,L)) Q:'L  S J=J+1,B(J)=TST("WP",DLG,INST,L,0)
 | 
|---|
| 43 |  . . I JMAX'=J S RSLT=0 Q
 | 
|---|
| 44 |  . . S J=0 F  S J=$O(A(J)) Q:'J  S:A(J)'=$G(B(J)) RSLT=0  Q:'RSLT  K A(J),B(J)
 | 
|---|
| 45 |  . . I ($D(A)>1)!($D(B)>1) S RSLT=0
 | 
|---|
| 46 |  . . K TST("WP",DLG,INST)
 | 
|---|
| 47 |  . K TST(DLG,INST)
 | 
|---|
| 48 |  I $D(TST)>1 S RSLT=0
 | 
|---|
| 49 |  Q RSLT
 | 
|---|
| 50 | SAVENEW(ORQDLG,INM,DTX,DG,ORDIALOG)   ; Called by DLGSAVE
 | 
|---|
| 51 |  ; save the entries in ORDIALOG as a new quick order
 | 
|---|
| 52 |  ; INM=.01 name, DTX=display text, DGR=display group
 | 
|---|
| 53 |  S ORQDLG=0,ORDIALOG=$$DEFDLG(DG) Q:'ORDIALOG
 | 
|---|
| 54 |  D GETDLG1^ORCD(ORDIALOG)
 | 
|---|
| 55 |  N FDA,FDAIEN,DIERR,ORDG
 | 
|---|
| 56 |  S FDA(101.41,"+1,",.01)=INM
 | 
|---|
| 57 |  S FDA(101.41,"+1,",2)=DTX
 | 
|---|
| 58 |  S FDA(101.41,"+1,",4)="Q"
 | 
|---|
| 59 |  S FDA(101.41,"+1,",5)=DG
 | 
|---|
| 60 |  D UPDATE^DIE("","FDA","FDAIEN")
 | 
|---|
| 61 |  S ORQDLG=FDAIEN(1)
 | 
|---|
| 62 |  D SAVE^ORCMEDT1
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 | DEFDLG(DG)    ; Return IEN of default dialog for display group
 | 
|---|
| 65 |  N DLG,DAD S DLG=+$P($G(^ORD(100.98,DG,0)),U,4)
 | 
|---|
| 66 |  I 'DLG S DAD=$O(^ORD(100.98,"AD",DG,0)) I DAD S DLG=$$DEFDLG(DAD)
 | 
|---|
| 67 |  Q DLG
 | 
|---|
| 68 | GETQLST(LST,DGRP,PRE)        ; Return quick list for a display group
 | 
|---|
| 69 |  N LVW,ILST,I,X0
 | 
|---|
| 70 |  S PRE=$G(PRE),ILST=0
 | 
|---|
| 71 |  D QV4DG^ORWUL(.LVW,DGRP) S LVW=+LVW Q:'LVW
 | 
|---|
| 72 |  S I=0 F  S I=$O(^ORD(101.44,LVW,10,I)) Q:'I  D
 | 
|---|
| 73 |  . S X0=$G(^ORD(101.44,LVW,10,I,0))
 | 
|---|
| 74 |  . I $P($G(^ORD(101.41,+X0,0)),U,3)]"" Q  ; quick order is disabled
 | 
|---|
| 75 |  . S ILST=ILST+1,LST(ILST)=PRE_X0
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ;N DNAM,DLG,I,ILST,X
 | 
|---|
| 78 |  ;S ILST=0,X="ORWDQ "_$S(+DGRP:$P(^ORD(100.98,DGRP,0),U,3),1:DGRP),PRE=$G(PRE)
 | 
|---|
| 79 |  ;D GETLST^XPAR(.TMP,"ALL",X,"N")
 | 
|---|
| 80 |  ;S I=0 F  S I=$O(TMP(I)) Q:'I  S DLG=+TMP(I) I +DLG D
 | 
|---|
| 81 |  ;. S DNAM=$$GET^XPAR(DUZ_";VA(200,","ORWDQ DISPLAY NAME",DLG,"I")
 | 
|---|
| 82 |  ;. I '$L(DNAM) S DNAM=$P(^ORD(101.41,DLG,0),U,2)
 | 
|---|
| 83 |  ;. I $P($G(^ORD(101.41,DLG,0)),U,3)]"" Q  ; quick order is disabled
 | 
|---|
| 84 |  ;. S ILST=ILST+1,LST(ILST)=PRE_DLG_U_DNAM
 | 
|---|
| 85 |  ;Q
 | 
|---|
| 86 | PUTQLST(VAL,DG,QLST)  ; Save quick list
 | 
|---|
| 87 |  N PNM
 | 
|---|
| 88 |  S PNM="ORWDQ USR"_DUZ_" "_$P(^ORD(100.98,DG,0),U,3)
 | 
|---|
| 89 |  D QVSAVE^ORWUL(.VAL,PNM,.QLST)
 | 
|---|
| 90 |  D EN^XPAR(DUZ_";VA(200,","ORWDQ QUICK VIEW","`"_DG,PNM)
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;N PNM,USER,I,DLG,QNM,CUR
 | 
|---|
| 93 |  ;S PNM="ORWDQ "_$P(^ORD(100.98,DG,0),U,3),USER=DUZ_";VA(200,"
 | 
|---|
| 94 |  ;D NDEL^XPAR(USER,PNM) ; remove all instances for this quick list
 | 
|---|
| 95 |  ;S I=0 F  S I=$O(QLST(I)) Q:'I  D ADD^XPAR(USER,PNM,I,"`"_+QLST(I))
 | 
|---|
| 96 |  ;S I=0 F  S I=$O(QLST(I)) Q:'I  D
 | 
|---|
| 97 |  ;. S DLG=+QLST(I),QNM=$P(QLST(I),U,2)
 | 
|---|
| 98 |  ;. S CUR=$$GET^XPAR(USER,"ORWDQ DISPLAY NAME",DLG,"I")
 | 
|---|
| 99 |  ;. I QNM=CUR Q
 | 
|---|
| 100 |  ;. I CUR="",(QNM=$P($G(^ORD(101.41,DLG,0)),U,2)) Q
 | 
|---|
| 101 |  ;. D EN^XPAR(USER,"ORWDQ DISPLAY NAME","`"_DLG,QNM)
 | 
|---|
| 102 |  ;Q
 | 
|---|
| 103 | GETQNAM(VAL,CRC)    ; Return current quick name
 | 
|---|
| 104 |  N ROOT S ROOT="ORWDQ "_CRC,VAL=""
 | 
|---|
| 105 |  I '$D(^ORD(101.41,"B",ROOT)) Q
 | 
|---|
| 106 |  S DLG=$O(^ORD(101.41,"B",ROOT,0))
 | 
|---|
| 107 |  ; S VAL=$$GET^XPAR(DUZ_";VA(200,","ORWDQ DISPLAY NAME",DLG,"I")
 | 
|---|
| 108 |  I '$L(VAL) S VAL=$P($G(^ORD(101.41,DLG,0)),U,2)
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | PUTQNAM(VAL,DLG,QNAM)   ; Save display name for a quick order dialog
 | 
|---|
| 111 |  ; see if DLG used QNAM as display text (quit if so)
 | 
|---|
| 112 |  ; otherwise save in ORWDQ DISPLAY NAME
 | 
|---|
| 113 |  Q
 | 
|---|