| 1 | ORWDOR ; SLC/KCM - Generic Orders calls for Windows Dialogs [ 08/05/96  8:21 AM ];03:50 PM  17 Jun 1998
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,164,253**;Dec 17, 1997
 | 
|---|
| 3 | NXT() ; -- returns next available index in return data array
 | 
|---|
| 4 |  S ILST=ILST+1
 | 
|---|
| 5 |  Q ILST
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | VMSLCT(LST) ; return default lists for vitals dialog
 | 
|---|
| 8 |  N ILST S ILST=0
 | 
|---|
| 9 |  S LST($$NXT)="~Measurements" D MEAS
 | 
|---|
| 10 |  S LST($$NXT)="~Schedules"    D SCHED
 | 
|---|
| 11 |  Q
 | 
|---|
| 12 | MEAS ; called from VMSLCT
 | 
|---|
| 13 |  N I,X
 | 
|---|
| 14 |  S X="" F  S X=$O(^ORD(101.43,"S.V/M",X)) Q:X=""  D
 | 
|---|
| 15 |  . S I=$O(^ORD(101.43,"S.V/M",X,0))
 | 
|---|
| 16 |  . S LST($$NXT)="i"_I_U_$P(^ORD(101.43,"S.V/M",X,I),U,2)
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | SCHED ; called from VMSLCT
 | 
|---|
| 19 |  N I,X
 | 
|---|
| 20 |  S X="" F  S X=$O(^PS(51.1,"APGMRV",X)) Q:X=""  D
 | 
|---|
| 21 |  . S I=$O(^PS(51.1,"APGMRV",X,0)),LST($$NXT)="i"_I_U_X
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | VALNUM(ERR,X,DOM)       ; return error if invalid number
 | 
|---|
| 24 |  N LOW,HIGH,DEC
 | 
|---|
| 25 |  S LOW=$P(DOM,":"),HIGH=$P(DOM,":",2),DEC=$P(DOM,":",3),ERR=0
 | 
|---|
| 26 |  I $L($P(X,"."))>24 S ERR="1^Exceeded maximum number of 24 characters" Q
 | 
|---|
| 27 |  I X'?.1"-".N.1".".N S ERR="1^Entry must be numeric" Q
 | 
|---|
| 28 |  I X>HIGH!(X<LOW) S ERR="1^Out of Range - value must be between "_LOW_" and "_HIGH_" inclusive" Q
 | 
|---|
| 29 |  I $L($P(+X,".",2))>DEC D
 | 
|---|
| 30 |  . I DEC=0 S ERR="1^No decimal places allowed"
 | 
|---|
| 31 |  . E  I DEC=1 S ERR="1^Only one decimal place allowed"
 | 
|---|
| 32 |  . E  S ERR="1^No more than "_DEC_" decimal places allowed"
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | LKSCRN(ORLST,FROM,DIR,REF,GBL,SCR) ; Return a set of entries from xref in REF
 | 
|---|
| 35 |  ; .Y=returned list, FROM=text to $O from, DIR=$O direction,
 | 
|---|
| 36 |  ; REF=subscript indirection global ref including xref,
 | 
|---|
| 37 |  ; GBL=standard FM global ref, SCR=reference to screen in 101.41
 | 
|---|
| 38 |  N I,IEN,CNT,X,Y,D,ORTYPE
 | 
|---|
| 39 |  S I=0,CNT=44,SCR=$G(SCR)
 | 
|---|
| 40 |  I $L(SCR) S SCR=$G(^ORD(101.41,+SCR,10,+$P(SCR,":",2),4))
 | 
|---|
| 41 |  S D=$P(REF,"""",2),ORTYPE="D" ;for OI screen
 | 
|---|
| 42 |  F  Q:I'<CNT  S FROM=$O(@REF@(FROM),DIR) Q:FROM=""  D
 | 
|---|
| 43 |  . S IEN=0 F  S IEN=$O(@REF@(FROM,IEN)) Q:'IEN  D
 | 
|---|
| 44 |  . . ; if screen, set naked ref & Y, then execute screen
 | 
|---|
| 45 |  . . I $L(SCR) S Y=IEN,X=$P($G(@(GBL_"Y,0)")),U) X SCR Q:'$T
 | 
|---|
| 46 |  . . S I=I+1,ORLST(I)=IEN_"^"_FROM
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | MNUTREE(LST,ROOT)        ; return menu tree for a menu type dialog
 | 
|---|
| 49 |  N ILST S ILST=0
 | 
|---|
| 50 |  S ILST=ILST+1,LST(ILST)=ROOT_U_$P(^ORD(101.41,ROOT,0),U,2)_"^0^+"
 | 
|---|
| 51 |  D LSTCHLD(ROOT)
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | LSTCHLD(PARENT) ; list descendends of this node (recursive)
 | 
|---|
| 54 |  N CHILD,I,J
 | 
|---|
| 55 |  S I=0 F  S I=$O(^ORD(101.41,PARENT,10,"B",I)) Q:'I  D
 | 
|---|
| 56 |  . S J=0 F  S J=$O(^ORD(101.41,PARENT,10,"B",I,J)) Q:'J  D
 | 
|---|
| 57 |  . . S CHILD=+$P(^ORD(101.41,PARENT,10,J,0),U,2) Q:'CHILD
 | 
|---|
| 58 |  . . ; also quit if child is not a generic order
 | 
|---|
| 59 |  . . S ILST=ILST+1,LST(ILST)=CHILD_U_$P(^ORD(101.41,CHILD,0),U,2)_U_PARENT
 | 
|---|
| 60 |  . . I $P(^ORD(101.41,CHILD,0),U,4)="M",$D(^ORD(101.41,CHILD,10))>1 D
 | 
|---|
| 61 |  . . . S LST(ILST)=LST(ILST)_"^+"
 | 
|---|
| 62 |  . . . D LSTCHLD(CHILD)
 | 
|---|
| 63 |  Q
 | 
|---|