1 | ORWDX2 ; SLC/JM - Order dialog utilities ;11/09/2006
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**246**;Dec 17, 1997;Build 8
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | NXT() ; -- Gets index in array
|
---|
7 | S ILST=ILST+1
|
---|
8 | Q ILST
|
---|
9 | ;
|
---|
10 | EXTVAL(IVAL,DLG) ; External value given a dlg ptr
|
---|
11 | N ORDIALOG
|
---|
12 | S ORDIALOG(DLG,0)=$P($G(^ORD(101.41,DLG,1)),U,1,2)
|
---|
13 | S ORDIALOG(DLG,1)=IVAL
|
---|
14 | I $E(ORDIALOG(DLG,0))="R",(+IVAL'=IVAL) Q IVAL ; free text date/time
|
---|
15 | Q $$EXT^ORCD(DLG,1) ; all others
|
---|
16 | ;
|
---|
17 | XROOT ; Part of LOADRSP^ORWDX - moved here because of routine size
|
---|
18 | N CHKDOSE,DOSE,INSTR
|
---|
19 | S (ILST,I)=0,CHKDOSE=$$CHKDOSES
|
---|
20 | F S I=$O(@ROOT@(I)) Q:I'>0 D
|
---|
21 | . S DLG=$P(@ROOT@(I,0),U,2),INST=$P(^(0),U,3)
|
---|
22 | . S ID=$P($G(^ORD(101.41,DLG,1)),U,3)
|
---|
23 | . I '$L(ID) S ID="ID"_DLG
|
---|
24 | . S VAL=$G(@ROOT@(I,1))
|
---|
25 | . I $P($G(^ORD(101.41,DLG,0)),U)="OR GTX ADDITIVE" S ID="ADDITIVE"
|
---|
26 | . I $E(RSPID)="C",(ID="START"),VAL Q ; skip literal start time on copy
|
---|
27 | . S LST($$NXT)="~"_DLG_U_INST_U_ID
|
---|
28 | . I $L(VAL) D
|
---|
29 | .. S LST($$NXT)="i"_VAL,LST($$NXT)="e"_$$EXTVAL(VAL,DLG)
|
---|
30 | .. I CHKDOSE D DOSEINFO
|
---|
31 | . I $D(@ROOT@(I,2))>1 D
|
---|
32 | .. S J=0 F S J=$O(@ROOT@(I,2,J)) Q:J'>0 D
|
---|
33 | ... S LST($$NXT)="t"_$G(@ROOT@(I,2,J,0))
|
---|
34 | I CHKDOSE D FIXDOSES
|
---|
35 | I $E(ROOT,1,4)="^TMP" K ^TMP("ORWDXMQ",$J)
|
---|
36 | Q
|
---|
37 | ;
|
---|
38 | CHKDOSES() ; Returns true if doses may need to be modified
|
---|
39 | Q $$PATCH^XPDUTL("PSS*1.0*78")&($T(DOSE^PSSORUTE)'="")
|
---|
40 | ;
|
---|
41 | DOSEINFO ; Collect pointers to dose information
|
---|
42 | I ID="INSTR" S INSTR(INST)=ILST-1
|
---|
43 | I ID="DOSE",+VAL>0 S DOSE(INST)=ILST-1 ; +VAL filters out local dosages
|
---|
44 | Q
|
---|
45 | ;
|
---|
46 | FIXDOSES ; Update doses for those saved before PSS*1*78 was installed
|
---|
47 | N CODE,OLDDOSE,IDX,NEWDOSE,IIDX
|
---|
48 | S IIDX=0
|
---|
49 | F S IIDX=$O(INSTR(IIDX)) Q:'+IIDX D
|
---|
50 | . I +$G(INSTR(IIDX))>0,+$G(DOSE(IIDX))>0 D
|
---|
51 | .. S OLDDOSE=$E(LST(INSTR(IIDX)),2,999)
|
---|
52 | .. S NEWDOSE=$$DOSE^PSSORUTE(OLDDOSE)
|
---|
53 | .. I OLDDOSE'=NEWDOSE D
|
---|
54 | ... F IDX=0:1:1 D
|
---|
55 | .... S CODE=$E(LST(INSTR(IIDX)+IDX),1)
|
---|
56 | .... S LST(INSTR(IIDX)+IDX)=CODE_NEWDOSE
|
---|
57 | .. S OLDDOSE=$P(LST(DOSE(IIDX)),"&",5)
|
---|
58 | .. S NEWDOSE=$$DOSE^PSSORUTE(OLDDOSE)
|
---|
59 | .. I OLDDOSE'=NEWDOSE D
|
---|
60 | ... F IDX=0:1:1 D
|
---|
61 | .... S $P(LST(DOSE(IIDX)+IDX),"&",5)=NEWDOSE
|
---|
62 | Q
|
---|