- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORCDLR.m
r613 r623 1 ORCDLR ;SLC/MKB-Utility functions for LR dialogs ;11/22/06 2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**4,29,49,61,71,79,175,243**;Dec 17, 1997;Build 242 3 TEST ; -- Setup ORTEST() array of ordering parameters 4 N OI,TST,WRD,I,DG 5 S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI 6 I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST 7 S WRD="GenWardInstructions" I $O(ORTEST(WRD,0)) D W ! 8 . W ! S I=0 F S I=$O(ORTEST(WRD,I)) Q:I'>0 W !,ORTEST(WRD,I,0) 9 S DG=$P($G(^ORD(101.43,+OI,"LR")),U,6) S:'$L(DG) DG="LAB" 10 S DG=$O(^ORD(100.98,"B",DG,0)) S:DG ORDG=DG 11 Q 12 ; 13 CKTYP ; -- ck type of test [Exit Action] 14 N X,Y S X=$G(ORDIALOG(PROMPT,INST)) Q:'X 15 S Y=$P($G(^ORD(101.43,+X,"LR")),U,7) 16 I (Y="O")!(Y="N") W $C(7),!,"This test may not be ordered anymore. Please select another test." S ORQUIT=1 D WAIT Q 17 Q 18 ; 19 WAIT ; -- Wait for user 20 N X W !,"Press <return> to continue ..." R X:DTIME 21 Q 22 ; 23 SHOWMAX ; -- Setup max days allowed for cont orders 24 K ^TMP($J,"ORCDLR SHOWMAX") 25 D ZERO^PSS51P1(+ORSCH,,,,"ORCDLR SHOWMAX") 26 I $S('$G(ORSCH):1,"CD"'[$P($G(^TMP($J,"ORCDLR SHOWMAX",+ORSCH,5)),U):1,1:0) K ORDIALOG(PROMPT,INST) Q ;just in case 27 ;I $S('$G(ORSCH):1,"CD"'[$P($G(^PS(51.1,+ORSCH,0)),U,5):1,1:0) K ORDIALOG(PROMPT,INST) Q ;just in case 28 N Y,OK S ORSMAX=$G(^TMP($J,"ORCDLR SHOWMAX",+ORSCH,2.5)),ORSTMS=$P($G(^(0)),U,3) 29 ;N Y,OK S ORSMAX=$P($G(^PS(51.1,ORSCH,0)),U,7),ORSTMS=$P($G(^(0)),U,3) 30 S ORSMAX=$S('$G(ORSMAX):ORMAX,$G(ORTYPE)="Z":ORSMAX,ORMAX<ORSMAX:ORMAX,1:ORSMAX),ORSTMS=$S(ORSMAX&ORSTMS:ORSMAX*1440\ORSTMS,1:"") ;set max days, times 31 I FIRST,$G(ORTYPE)="Q" S Y=$G(ORDIALOG(PROMPT,INST)) I $L(Y) S OK=$$CKMAX(Y) Q:OK K ORDIALOG(PROMPT,INST) ;Q if valid, else fall thru and prompt 32 W !!,"Maximum number of days for continuous orders is "_ORSMAX_"; enter a duration",!,"as either a number of days (3) or Xnumber of times (X3).",! 33 K ^TMP($J,"ORCDLR SHOWMAX") 34 Q 35 ; 36 CKMAX(X) ; -- Ck duration X against max allowed 37 N Y S Y=1 38 I +X=X S Y=$S(X<0:"0^Cannot order in the past.",'ORSMAX:1,X'>ORSMAX:1,1:"0^Cannot order more than "_ORSMAX_" days in advance.") G CKQ 39 I (X'?1"X"1.N),(X'?1"x"1.N) S Y="0^Enter either a number of days or X_number of times." G CKQ 40 I ORSTMS,+$E(X,2,9)>ORSTMS S Y="0^Cannot order more than "_ORSTMS_" time* s." G CKQ 41 I 'ORSTMS,+$E(X,2,9)>ORSMAX S Y="0^Cannot order for more than "_ORSMAX_" days." G CKQ ; day of week schedule 42 S Y=1 43 CKQ Q Y 44 ; 45 SAMPLE() ; -- Get default sample from Test for INST 46 N X,Y I $L($G(LRFSAMP)) Q LRFSAMP 47 I (ORCOLLCT="LC")!(ORCOLLCT="I") S X=$G(ORTEST("Lab CollSamp")) G SAMPQ 48 S X=$G(ORTEST("Unique CollSamp")) G:X SAMPQ 49 S X=$G(ORTEST("Default CollSamp")) 50 SAMPQ S Y=+$G(ORTEST("CollSamp",+X)) 51 Q Y 52 ; 53 ENSAMP ; -- Get list of samples to pick from 54 Q:$G(ORDIALOG(PROMPT,"LIST")) N I,CNT,X,Y S (I,CNT)=0 55 F S I=$O(ORTEST("CollSamp",I)) Q:I'>0 S X=$G(ORTEST("CollSamp",I)) D 56 . S Y=$P(X,U,1,2)_" "_$$GET1^DIQ(61,+$P(X,U,3)_",",.01)_" "_$P(X,U,4) 57 . S CNT=CNT+1,ORDIALOG(PROMPT,"LIST",CNT)=Y 58 . S ORDIALOG(PROMPT,"LIST","B",$P(X,U,2))=+X 59 S:CNT ORDIALOG(PROMPT,"LIST")=CNT_$S($$SECTION'="MI":"^1",1:"") 60 Q 61 ; 62 ASKSAMP() ; -- Ask for Collection Sample? 63 N X,Y,DIR,DEFSAMP,SAMP0 64 S DEFSAMP=$G(ORDIALOG(PROMPT,INST)),SAMP0=$G(^LAB(62,+DEFSAMP,0)) 65 I $G(ORTYPE)="Z",DEFSAMP Q 1 66 I (ORCOLLCT="LC")!(ORCOLLCT="I"),$G(ORTEST("Lab CollSamp")) W !!,"Lab will collect "_$P(SAMP0,U)_" "_$P(SAMP0,U,3)_".",! Q 0 67 I $G(ORTEST("Unique CollSamp")),DEFSAMP Q 0 ; unique -> don't ask 68 I 'DEFSAMP!('FIRST) Q 1 ; no default or edit -> ask 69 I $G(ORDIALOG(PROMPT,"LIST"))="1^1" Q 0 ; only one choice 70 S DIR(0)="YA",DIR("A")="Is "_$P(SAMP0,U)_" "_$P(SAMP0,U,3)_" the correct sample to collect? ",DIR("B")="Yes" 71 D ^DIR I $D(DTOUT)!$D(DUOUT) S ORQUIT=1 Q 0 72 D:'Y LIST^ORCD 73 Q 'Y 74 ; 75 SECTION() ; -- Returns Lab section of Orderable Item 76 N PTR,X 77 S PTR=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)) 78 S X=$P($G(^ORD(101.43,+$G(ORDIALOG(PTR,1)),"LR")),U,6) 79 Q X 80 ; 81 SHOWCOMM(SAMP) ; -- Show comments for sample 82 Q:'$G(SAMP) Q:'$G(ORTEST) N ORCOMM,I 83 D SCOM^LR7OR3(+ORTEST,SAMP,.ORCOMM) 84 S I=0 F S I=$O(ORCOMM(I)) Q:I'>0 W !,ORCOMM(I,0) 85 Q 86 ; 87 SPECIMEN() ; -- Get default specimen from Sample for INST 88 N X,Y I $L($G(LRFSPEC)) S Y=LRFSPEC 89 E S X=$$VAL^ORCD("COLLECTION SAMPLE"),Y=+$P($G(^LAB(62,+X,0)),U,2) 90 Q Y 91 ; 92 SPECHELP ; -- Xecutable help for Specimen prompt 93 I '$D(^LAB(61,"E")) D P^ORCDLGH Q 94 W !,"Choose from: " 95 N SP,I,DONE,CNT S (CNT,DONE)=0,SP="" 96 F S SP=$O(^LAB(61,"E",SP)) Q:SP="" S I=+$O(^(SP,0)) I I D 97 . S CNT=CNT+1 I CNT>(IOSL-2) S CNT=0 I '$$MORE^ORCD S DONE=1 Q 98 . W !," "_$P($G(^LAB(61,I,0)),U) 99 Q 100 ; 101 URGENCY ; -- Get list of urgencies to pick from 102 Q:$D(ORDIALOG(PROMPT,"LIST")) N I,J,X 103 I $G(ORTEST("Default Urgency")) S ORDIALOG(PROMPT,"LIST")="1^1",ORDIALOG(PROMPT,"LIST",1)=ORTEST("Default Urgency") Q ; Forced Urgency 104 I '$D(ORTEST("Urgencies")) S ORDIALOG(PROMPT,"LIST")="0^1" Q 105 S (I,J)=0 F S I=$O(ORTEST("Urgencies",I)) Q:I'>0 D 106 . S X=ORTEST("Urgencies",I) I $G(ORCOLLCT)="LC",'$P($G(^LAB(62.05,+X,0)),U,2) Q ; Lab cannot collect 107 . S J=J+1,ORDIALOG(PROMPT,"LIST",J)=X,ORDIALOG(PROMPT,"LIST","B",$P(X,U,2))=+X 108 S ORDIALOG(PROMPT,"LIST")=J_"^1" 109 Q 110 ; 111 ASKURG() ; -- Ask urgency prompt? 112 I $G(ORTEST("Default Urgency")) Q 0 ; Forced Urgency 113 I FIRST,$G(ORL) Q $$GET^XPAR("ALL^"_ORL,"LR ASK URGENCY") 114 Q (+$G(ORDIALOG(PROMPT,"LIST"))>1) 115 ; 116 REQDCOMM() ; -- Process required comments 117 I $O(^TMP("ORWORD",$J,PROMPT,INST,0)) Q 0 ;edit as WP 118 N LRTEST,LRSAMP,LRSPEC,LRTSTN,LRTCOM,LRCCOM,DA,CNT,I,REQDCOMM 119 S LRSAMP=$$VAL^ORCD("COLLECTION SAMPLE"),LRSPEC=$$VAL^ORCD("SPECIMEN") 120 S LRTSTN=1,LRTEST(1)=+ORTEST,DA=$O(^LAB(60,LRTEST(1),3,"B",+LRSAMP,0)) 121 S REQDCOMM=$P($G(^LAB(60,LRTEST(1),3,+DA,0)),U,6) 122 S:'REQDCOMM REQDCOMM=+$P($G(^LAB(60,LRTEST(1),0)),U,19) Q:'REQDCOMM 1 123 I $G(ORTYPE)="Z",$P($G(^LAB(62.07,+REQDCOMM,0)),U)'="ORDER COMMENT" Q 1 124 X:$D(^LAB(62.07,REQDCOMM,.1)) ^(.1) 125 S (CNT,I)=0 K REQDCOMM 126 F S I=$O(LRTCOM(LRTEST(1),I)) Q:I'>0 S CNT=CNT+1,REQDCOMM(CNT,0)=LRTCOM(LRTEST(1),I) 127 S:$L($G(LRCCOM)) CNT=CNT+1,REQDCOMM(CNT,0)=LRCCOM 128 I CNT S REQDCOMM(0)="^^"_CNT_U_CNT_U_DT_U_U,ORDIALOG(PROMPT,INST)="^TMP(""ORWORD"",$J,"_PROMPT_","_INST_")" M ^TMP("ORWORD",$J,PROMPT,INST)=REQDCOMM 129 RQ Q 1 130 ; 131 XHELP(PTR) ; -- Xecutable help 132 I $D(ORDIALOG(PTR,"LIST")),X="?"!$P(ORDIALOG(PTR,"LIST"),U,2) D LIST^ORCD Q 133 D P^ORCDLGH ; ??-help 134 Q 135 ; 136 CHANGED(FLD) ; -- Kill dependent values when FLD changes 137 N PROMPTS,P,NAME,PTR K ORCOLLCT 138 S PROMPTS="COLLECTION SAMPLE^SPECIMEN^WORD PROCESSING 1^START DATE/TIME" 139 S:FLD="OI" PROMPTS="COLLECTION TYPE^"_PROMPTS_"^LAB URGENCY" 140 F P=1:1:$L(PROMPTS,U) S NAME=$P(PROMPTS,U,P),PTR=$O(^ORD(101.41,"AB","OR GTX "_NAME,0)) I PTR K ORDIALOG(PTR,ORI),ORDIALOG(PTR,"LIST") 141 Q 142 ; 143 LB(ORDER) ; -- Returns 1 or 0, if "LB #" is already in text 144 N I,Y S I=0,Y=0 145 F S I=$O(^OR(100,+ORDER,1,I)) Q:I'>0 I $G(^(I,0))["LB #" S Y=1 Q 146 Q Y 147 ; 148 DATE(X) ; Free text input to FM time 149 N %DT,Y 150 D ^%DT 151 Q Y 152 ; 153 XSCH ; -- xecutable help for schedule prompt 154 N X,IFN,CNT,Z,DONE 155 K ^TMP($J,"ORSCLR XSCH") 156 D AP^PSS51P1("LR",,,,"ORSCLR XSCH") 157 W !!,"Choose from:" S CNT=1 158 S X="" F S X=$O(^TMP($J,"ORSCLR XSCH","APLR",X)) Q:X="" S IFN=0 D Q:$G(DONE) 159 .;S X="" F S X=$O(^PS(51.1,"APLR",X)) Q:X="" S IFN=0 D Q:$G(DONE) 160 . F S IFN=$O(^TMP($J,"ORSCLR XSCH","APLR",X,IFN)) Q:IFN'>0 D Q:$G(DONE) 161 . .;F S IFN=$O(^PS(51.1,"APLR",X,IFN)) Q:IFN'>0 D Q:$G(DONE) 162 .. W !," "_X S CNT=CNT+1 Q:CNT'>(IOSL-5) S CNT=0 163 .. W !," '^' TO STOP: " R Z:DTIME S:'$T!(Z["^") DONE=1 164 W ! 165 K ^TMP($J,"ORSCLR XSCH") 166 Q 167 ; 168 MULT(ORIFN,CTYPE,CDATE) ;check multiple orders from VALID^ORCDLR1 169 N KID,OREVENT,ORSTRT,OK,X,Y,%DT 170 I '$D(CTYPE) S CTYPE=$$VALUE^ORCSAVE2(ORIFN,"COLLECT") 171 Q:"SPWC"[CTYPE 0 ; only check LC and I 172 I '$D(CDATE) S CDATE=$$VALUE^ORCSAVE2(ORIFN,"START") 173 D AM^ORCSAVE2:CDATE="AM",NEXT^ORCSAVE2:CDATE="NEXT" ; returns X 174 S %DT="T" S:'$D(X) X=CDATE D ^%DT I Y<1 Q 0 175 D SCHEDULE^ORCSEND1(ORIFN,"LR",.ORSTRT,Y) Q:ORSTRT'>1 0 ; get all starts 176 S KID=0,OK=1 F S KID=$O(ORSTRT(KID)) Q:'KID!('OK) D 177 . I CTYPE="LC" S OK=$$LABCOLL^ORCDLR1(KID) Q 178 . S OK=$$IMMCOLL^ORCDLR1(KID) 179 I OK Q 0 180 Q "1^One or more of the multiple orders will be changed to Ward Collect" 1 ORCDLR ;SLC/MKB-Utility functions for LR dialogs ;6/11/97 11:47 2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**4,29,49,61,71,79,175**;Dec 17, 1997 3 TEST ; -- Setup ORTEST() array of ordering parameters 4 N OI,TST,WRD,I,DG 5 S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI 6 I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST 7 S WRD="GenWardInstructions" I $O(ORTEST(WRD,0)) D W ! 8 . W ! S I=0 F S I=$O(ORTEST(WRD,I)) Q:I'>0 W !,ORTEST(WRD,I,0) 9 S DG=$P($G(^ORD(101.43,+OI,"LR")),U,6) S:'$L(DG) DG="LAB" 10 S DG=$O(^ORD(100.98,"B",DG,0)) S:DG ORDG=DG 11 Q 12 ; 13 CKTYP ; -- ck type of test [Exit Action] 14 N X,Y S X=$G(ORDIALOG(PROMPT,INST)) Q:'X 15 S Y=$P($G(^ORD(101.43,+X,"LR")),U,7) 16 I (Y="O")!(Y="N") W $C(7),!,"This test may not be ordered anymore. Please select another test." S ORQUIT=1 D WAIT Q 17 Q 18 ; 19 WAIT ; -- Wait for user 20 N X W !,"Press <return> to continue ..." R X:DTIME 21 Q 22 ; 23 SHOWMAX ; -- Setup max days allowed for cont orders 24 I $S('$G(ORSCH):1,"CD"'[$P($G(^PS(51.1,+ORSCH,0)),U,5):1,1:0) K ORDIALOG(PROMPT,INST) Q ;just in case 25 N Y,OK S ORSMAX=$P($G(^PS(51.1,ORSCH,0)),U,7),ORSTMS=$P($G(^(0)),U,3) 26 S ORSMAX=$S('$G(ORSMAX):ORMAX,$G(ORTYPE)="Z":ORSMAX,ORMAX<ORSMAX:ORMAX,1:ORSMAX),ORSTMS=$S(ORSMAX&ORSTMS:ORSMAX*1440\ORSTMS,1:"") ;set max days, times 27 I FIRST,$G(ORTYPE)="Q" S Y=$G(ORDIALOG(PROMPT,INST)) I $L(Y) S OK=$$CKMAX(Y) Q:OK K ORDIALOG(PROMPT,INST) ;Q if valid, else fall thru and prompt 28 W !!,"Maximum number of days for continuous orders is "_ORSMAX_"; enter a duration",!,"as either a number of days (3) or Xnumber of times (X3).",! 29 Q 30 ; 31 CKMAX(X) ; -- Ck duration X against max allowed 32 N Y S Y=1 33 I +X=X S Y=$S(X<0:"0^Cannot order in the past.",'ORSMAX:1,X'>ORSMAX:1,1:"0^Cannot order more than "_ORSMAX_" days in advance.") G CKQ 34 I (X'?1"X"1.N),(X'?1"x"1.N) S Y="0^Enter either a number of days or X_number of times." G CKQ 35 I ORSTMS,+$E(X,2,9)>ORSTMS S Y="0^Cannot order more than "_ORSTMS_" time* s." G CKQ 36 I 'ORSTMS,+$E(X,2,9)>ORSMAX S Y="0^Cannot order for more than "_ORSMAX_" days." G CKQ ; day of week schedule 37 S Y=1 38 CKQ Q Y 39 ; 40 SAMPLE() ; -- Get default sample from Test for INST 41 N X,Y I $L($G(LRFSAMP)) Q LRFSAMP 42 I (ORCOLLCT="LC")!(ORCOLLCT="I") S X=$G(ORTEST("Lab CollSamp")) G SAMPQ 43 S X=$G(ORTEST("Unique CollSamp")) G:X SAMPQ 44 S X=$G(ORTEST("Default CollSamp")) 45 SAMPQ S Y=+$G(ORTEST("CollSamp",+X)) 46 Q Y 47 ; 48 ENSAMP ; -- Get list of samples to pick from 49 Q:$G(ORDIALOG(PROMPT,"LIST")) N I,CNT,X,Y S (I,CNT)=0 50 F S I=$O(ORTEST("CollSamp",I)) Q:I'>0 S X=$G(ORTEST("CollSamp",I)) D 51 . S Y=$P(X,U,1,2)_" "_$$GET1^DIQ(61,+$P(X,U,3)_",",.01)_" "_$P(X,U,4) 52 . S CNT=CNT+1,ORDIALOG(PROMPT,"LIST",CNT)=Y 53 . S ORDIALOG(PROMPT,"LIST","B",$P(X,U,2))=+X 54 S:CNT ORDIALOG(PROMPT,"LIST")=CNT_$S($$SECTION'="MI":"^1",1:"") 55 Q 56 ; 57 ASKSAMP() ; -- Ask for Collection Sample? 58 N X,Y,DIR,DEFSAMP,SAMP0 59 S DEFSAMP=$G(ORDIALOG(PROMPT,INST)),SAMP0=$G(^LAB(62,+DEFSAMP,0)) 60 I $G(ORTYPE)="Z",DEFSAMP Q 1 61 I (ORCOLLCT="LC")!(ORCOLLCT="I"),$G(ORTEST("Lab CollSamp")) W !!,"Lab will collect "_$P(SAMP0,U)_" "_$P(SAMP0,U,3)_".",! Q 0 62 I $G(ORTEST("Unique CollSamp")),DEFSAMP Q 0 ; unique -> don't ask 63 I 'DEFSAMP!('FIRST) Q 1 ; no default or edit -> ask 64 I $G(ORDIALOG(PROMPT,"LIST"))="1^1" Q 0 ; only one choice 65 S DIR(0)="YA",DIR("A")="Is "_$P(SAMP0,U)_" "_$P(SAMP0,U,3)_" the correct sample to collect? ",DIR("B")="Yes" 66 D ^DIR I $D(DTOUT)!$D(DUOUT) S ORQUIT=1 Q 0 67 D:'Y LIST^ORCD 68 Q 'Y 69 ; 70 SECTION() ; -- Returns Lab section of Orderable Item 71 N PTR,X 72 S PTR=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)) 73 S X=$P($G(^ORD(101.43,+$G(ORDIALOG(PTR,1)),"LR")),U,6) 74 Q X 75 ; 76 SHOWCOMM(SAMP) ; -- Show comments for sample 77 Q:'$G(SAMP) Q:'$G(ORTEST) N ORCOMM,I 78 D SCOM^LR7OR3(+ORTEST,SAMP,.ORCOMM) 79 S I=0 F S I=$O(ORCOMM(I)) Q:I'>0 W !,ORCOMM(I,0) 80 Q 81 ; 82 SPECIMEN() ; -- Get default specimen from Sample for INST 83 N X,Y I $L($G(LRFSPEC)) S Y=LRFSPEC 84 E S X=$$VAL^ORCD("COLLECTION SAMPLE"),Y=+$P($G(^LAB(62,+X,0)),U,2) 85 Q Y 86 ; 87 SPECHELP ; -- Xecutable help for Specimen prompt 88 I '$D(^LAB(61,"E")) D P^ORCDLGH Q 89 W !,"Choose from: " 90 N SP,I,DONE,CNT S (CNT,DONE)=0,SP="" 91 F S SP=$O(^LAB(61,"E",SP)) Q:SP="" S I=+$O(^(SP,0)) I I D 92 . S CNT=CNT+1 I CNT>(IOSL-2) S CNT=0 I '$$MORE^ORCD S DONE=1 Q 93 . W !," "_$P($G(^LAB(61,I,0)),U) 94 Q 95 ; 96 URGENCY ; -- Get list of urgencies to pick from 97 Q:$D(ORDIALOG(PROMPT,"LIST")) N I,J,X 98 I $G(ORTEST("Default Urgency")) S ORDIALOG(PROMPT,"LIST")="1^1",ORDIALOG(PROMPT,"LIST",1)=ORTEST("Default Urgency") Q ; Forced Urgency 99 I '$D(ORTEST("Urgencies")) S ORDIALOG(PROMPT,"LIST")="0^1" Q 100 S (I,J)=0 F S I=$O(ORTEST("Urgencies",I)) Q:I'>0 D 101 . S X=ORTEST("Urgencies",I) I $G(ORCOLLCT)="LC",'$P($G(^LAB(62.05,+X,0)),U,2) Q ; Lab cannot collect 102 . S J=J+1,ORDIALOG(PROMPT,"LIST",J)=X,ORDIALOG(PROMPT,"LIST","B",$P(X,U,2))=+X 103 S ORDIALOG(PROMPT,"LIST")=J_"^1" 104 Q 105 ; 106 ASKURG() ; -- Ask urgency prompt? 107 I $G(ORTEST("Default Urgency")) Q 0 ; Forced Urgency 108 I FIRST,$G(ORL) Q $$GET^XPAR("ALL^"_ORL,"LR ASK URGENCY") 109 Q (+$G(ORDIALOG(PROMPT,"LIST"))>1) 110 ; 111 REQDCOMM() ; -- Process required comments 112 I $O(^TMP("ORWORD",$J,PROMPT,INST,0)) Q 0 ;edit as WP 113 N LRTEST,LRSAMP,LRSPEC,LRTSTN,LRTCOM,LRCCOM,DA,CNT,I,REQDCOMM 114 S LRSAMP=$$VAL^ORCD("COLLECTION SAMPLE"),LRSPEC=$$VAL^ORCD("SPECIMEN") 115 S LRTSTN=1,LRTEST(1)=+ORTEST,DA=$O(^LAB(60,LRTEST(1),3,"B",+LRSAMP,0)) 116 S REQDCOMM=$P($G(^LAB(60,LRTEST(1),3,+DA,0)),U,6) 117 S:'REQDCOMM REQDCOMM=+$P($G(^LAB(60,LRTEST(1),0)),U,19) Q:'REQDCOMM 1 118 I $G(ORTYPE)="Z",$P($G(^LAB(62.07,+REQDCOMM,0)),U)'="ORDER COMMENT" Q 1 119 X:$D(^LAB(62.07,REQDCOMM,.1)) ^(.1) 120 S (CNT,I)=0 K REQDCOMM 121 F S I=$O(LRTCOM(LRTEST(1),I)) Q:I'>0 S CNT=CNT+1,REQDCOMM(CNT,0)=LRTCOM(LRTEST(1),I) 122 S:$L($G(LRCCOM)) CNT=CNT+1,REQDCOMM(CNT,0)=LRCCOM 123 I CNT S REQDCOMM(0)="^^"_CNT_U_CNT_U_DT_U_U,ORDIALOG(PROMPT,INST)="^TMP(""ORWORD"",$J,"_PROMPT_","_INST_")" M ^TMP("ORWORD",$J,PROMPT,INST)=REQDCOMM 124 RQ Q 1 125 ; 126 XHELP(PTR) ; -- Xecutable help 127 I $D(ORDIALOG(PTR,"LIST")),X="?"!$P(ORDIALOG(PTR,"LIST"),U,2) D LIST^ORCD Q 128 D P^ORCDLGH ; ??-help 129 Q 130 ; 131 CHANGED(FLD) ; -- Kill dependent values when FLD changes 132 N PROMPTS,P,NAME,PTR K ORCOLLCT 133 S PROMPTS="COLLECTION SAMPLE^SPECIMEN^WORD PROCESSING 1^START DATE/TIME" 134 S:FLD="OI" PROMPTS="COLLECTION TYPE^"_PROMPTS_"^LAB URGENCY" 135 F P=1:1:$L(PROMPTS,U) S NAME=$P(PROMPTS,U,P),PTR=$O(^ORD(101.41,"AB","OR GTX "_NAME,0)) I PTR K ORDIALOG(PTR,ORI),ORDIALOG(PTR,"LIST") 136 Q 137 ; 138 LB(ORDER) ; -- Returns 1 or 0, if "LB #" is already in text 139 N I,Y S I=0,Y=0 140 F S I=$O(^OR(100,+ORDER,1,I)) Q:I'>0 I $G(^(I,0))["LB #" S Y=1 Q 141 Q Y 142 ; 143 DATE(X) ; Free text input to FM time 144 N %DT,Y 145 D ^%DT 146 Q Y 147 ; 148 XSCH ; -- xecutable help for schedule prompt 149 N X,IFN,CNT,Z,DONE 150 W !!,"Choose from:" S CNT=1 151 S X="" F S X=$O(^PS(51.1,"APLR",X)) Q:X="" S IFN=0 D Q:$G(DONE) 152 . F S IFN=$O(^PS(51.1,"APLR",X,IFN)) Q:IFN'>0 D Q:$G(DONE) 153 .. W !," "_X S CNT=CNT+1 Q:CNT'>(IOSL-5) S CNT=0 154 .. W !," '^' TO STOP: " R Z:DTIME S:'$T!(Z["^") DONE=1 155 W ! 156 Q 157 ; 158 MULT(ORIFN,CTYPE,CDATE) ;check multiple orders from VALID^ORCDLR1 159 N KID,OREVENT,ORSTRT,OK,X,Y,%DT 160 I '$D(CTYPE) S CTYPE=$$VALUE^ORCSAVE2(ORIFN,"COLLECT") 161 Q:"SPWC"[CTYPE 0 ; only check LC and I 162 I '$D(CDATE) S CDATE=$$VALUE^ORCSAVE2(ORIFN,"START") 163 D AM^ORCSAVE2:CDATE="AM",NEXT^ORCSAVE2:CDATE="NEXT" ; returns X 164 S %DT="T" S:'$D(X) X=CDATE D ^%DT I Y<1 Q 0 165 D SCHEDULE^ORCSEND1(ORIFN,"LR",.ORSTRT,Y) Q:ORSTRT'>1 0 ; get all starts 166 S KID=0,OK=1 F S KID=$O(ORSTRT(KID)) Q:'KID!('OK) D 167 . I CTYPE="LC" S OK=$$LABCOLL^ORCDLR1(KID) Q 168 . S OK=$$IMMCOLL^ORCDLR1(KID) 169 I OK Q 0 170 Q "1^One or more of the multiple orders will be changed to Ward Collect"
Note:
See TracChangeset
for help on using the changeset viewer.