Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORWDXM2.m

    r613 r623  
    1 ORWDXM2 ; SLC/KCM - Quick Orders ;04/25/2007
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,109,116,132,158,187,195,215,243**;Dec 17, 1997;Build 242
    3         ;
    4 ADMTIME(ORDLOC,PATLOC,ENCLOC,DELAY,ISIMO)       ;
    5         N ADMLOC,INST,SCHLOC,SCHTYPE
    6         S ADMLOC=+$P($G(ORDIALOG("B","ADMINISTRATION TIMES")),U,2)
    7         I ADMLOC>0,ORDLOC>0,PATLOC'=ORDLOC D  Q
    8         .S INST=0 F  S INST=$O(ORDIALOG(ADMLOC,INST)) Q:+INST'>0  D
    9         ..S ORDIALOG(ADMLOC,INST)=""
    10         I ADMLOC>0,$S(ENCLOC'=PATLOC:1,ISIMO:1,DELAY:1,1:0) D  Q
    11         .S INST=0 F  S INST=$O(ORDIALOG(ADMLOC,INST)) Q:+INST'>0  D
    12         ..S ORDIALOG(ADMLOC,INST)=""
    13         S SCHLOC=+$P($G(ORDIALOG("B","SCHEDULE TYPE")),U,2) Q:SCHLOC'>0
    14         S INST=0 F  S INST=$O(ORDIALOG(SCHLOC,INST)) Q:+INST'>0  D
    15         .S SCHTYP=$G(ORDIALOG(SCHLOC,INST)) Q:SCHTYP=""
    16         .I $S(SCHTYP="P":1,SCHTYP="O":1,SCHTYP="OC":1,1:0),ADMLOC>0 S ORDIALOG(ADMLOC,INST)=""
    17         Q
    18         ;
    19 CLRRCL(OK)           ; clear ORECALL
    20         S OK=1
    21         K ^TMP("ORECALL",$J),^TMP("ORWDXMQ",$J)
    22         Q
    23 VERTXT  ; set verify text for order
    24         N SEQ,DA,X,PROMPT,MULT,CHILD,INST,TITLE,TEMP,ILST,SPACES
    25         N ISADMIN
    26         S ILST=0,$P(SPACES," ",31)=""
    27         S SEQ=0 F  S SEQ=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ)) Q:SEQ'>0  D
    28         . S DA=0 F  S DA=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ,DA)) Q:'DA  D
    29         . . S X0=$G(^ORD(101.41,+ORDIALOG,10,DA,0))
    30         . . S ISADMIN=$S(+OREVENT>0:0,ISIMO=1:0,$P($G(^ORD(101.41,$P(X0,U,2),0)),U)="OR GTX ADMIN TIMES":1,1:0)
    31         . . I ISADMIN=1,ORDLOC>0,ORDLOC'=PATLOC Q
    32         . . I $P(X0,U,9)["*",ISADMIN=0 Q
    33         . . S PROMPT=$P(X0,U,2),MULT=$P(X0,U,7),CHILD=$P(X0,U,11) I CHILD,ISADMIN=0 Q
    34         . . Q:'PROMPT  S INST=$O(ORDIALOG(PROMPT,0)) Q:'INST  ; no values
    35         . . S TITLE=$S($L($G(ORDIALOG(PROMPT,"TTL"))):ORDIALOG(PROMPT,"TTL"),1:ORDIALOG(PROMPT,"A"))
    36         . . I $E(ORDIALOG(PROMPT,0))="W" D
    37         . . . N IWP,WP,CNT
    38         . . . S IWP=0,CNT=0
    39         . . . F  S IWP=$O(^TMP("ORWORD",$J,PROMPT,INST,IWP)) Q:'IWP  D
    40         . . . . S CNT=CNT+1,WP(CNT)=^TMP("ORWORD",$J,PROMPT,INST,IWP,0)
    41         . . . I CNT=1 S ILST=ILST+1,LST(ILST)=$J(TITLE,30)_WP(1)
    42         . . . I CNT>1 D
    43         . . . . S ILST=ILST+1,LST(ILST)=TITLE,IWP=0
    44         . . . . F  S IWP=$O(WP(IWP)) Q:'IWP  S ILST=ILST+1,LST(ILST)=WP(IWP)
    45         . . E  D
    46         . . . S TEMP=$$ITEM^ORCDLG(PROMPT,INST) I TEMP="" Q
    47         . . . S ILST=ILST+1,LST(ILST)=$J(TITLE,30)
    48         . . . ;S LST(ILST)=LST(ILST)_$$ITEM^ORCDLG(PROMPT,INST)
    49         . . . S LST(ILST)=LST(ILST)_TEMP
    50         . . Q:'MULT  Q:'$O(ORDIALOG(PROMPT,INST))  ; done
    51         . . F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:INST'>0  S ILST=ILST+1,LST(ILST)=SPACES_$$ITEM^ORCDLG(PROMPT,INST)
    52         D DISPLAY^ORWDBA3  ;for display of Billing Aware data from orig order
    53         Q
    54 RA      ; setup environment for radiology
    55         ; -- get imaging types based on display group of quick order and
    56         ;    setup list of imaging locations based on imaging type
    57         N ORY,ITYPE,IFN,CNT,ORIMLOC,PROMPT
    58         S ORDIV=$$DIV^ORCDRA1,ITYPE=$P($G(^ORD(100.98,+ORDG,0)),U,3)
    59         S ORIMTYPE=$O(^RA(79.2,"C",ITYPE,0))
    60         D EN4^RAO7PC1(ITYPE,"ORY")
    61         S (IFN,CNT)=0 F  S IFN=$O(ORY(IFN)) Q:IFN'>0  D
    62         . S CNT=CNT+1,ORIMLOC(CNT)=ORY(IFN),ORIMLOC("B",$P(ORY(IFN),U,2))=IFN
    63         I '$$GET^XPAR("ALL","RA SUBMIT PROMPT",1,"Q"),CNT>1 K ORIMLOC
    64         E  S ORIMLOC=CNT_"^1"
    65         S PROMPT=$O(^ORD(101.41,"B","OR GTX IMAGING LOCATION",0))
    66         I $G(ORIMLOC) M ORDIALOG(PROMPT,"LIST")=ORIMLOC
    67         Q
    68 LR      ; setup environment for lab
    69         ; -- setup ORTIME, ORIMTIME & ORTEST arrays
    70         ;    setup ORMAX, ORDG, & ORCOLLCT variables
    71         N PROMPT,INST,EDITONLY
    72         D GETIMES^ORCDLR1  ; sets up ORTIME and ORIMTIME arrays
    73         S ORMAX=$$GET^XPAR("ALL^LOC.`"_+ORL,"LR MAX DAYS CONTINUOUS",1,"Q")
    74         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0)),INST=1
    75         D LRTEST           ; sets up ORTEST array and ORDG
    76         S PROMPT=$O(^ORD(101.41,"B","OR GTX COLLECTION TYPE",0))
    77         I $D(ORDIALOG(PROMPT,1)) S ORCOLLCT=ORDIALOG(PROMPT,1) I 1
    78         E  S EDITONLY=0,ORCOLLCT=$$COLLTYPE^ORCDLR1
    79         I ORCOLLCT="I" D
    80         . S PROMPT=$O(^ORD(101.41,"B","OR GTX START DATE/TIME",0))
    81         . D LRICTMOK
    82         S PROMPT=$O(^ORD(101.41,"B","OR GTX ADMIN SCHEDULE",0))
    83         I $D(ORDIALOG(PROMPT,1)) S ORSCH=ORDIALOG(PROMPT,1)
    84         Q
    85 LRTEST  ; -- Setup ORTEST() array of ordering parameters (copied from ORCDLR)
    86         N OI,TST,DG
    87         S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI
    88         I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
    89         S DG=$P($G(^ORD(101.43,+OI,"LR")),U,6) S:'$L(DG) DG="LAB"
    90         S DG=$O(^ORD(100.98,"B",DG,0)) S:DG ORDG=DG
    91         Q
    92 LRRQCM()               ; return true if lab test has required comments
    93         I $O(^TMP("ORWORD",$J,PROMPT,INST,0)) Q 1 ; edit via WP
    94         N LRTEST,LRSAMP,LRSPEC,LRTSTN,LRTCOM,LRCCOM,DA,CNT,I,REQDCOMM,OI,TST
    95         S LRSAMP=$$VAL^ORCD("COLLECTION SAMPLE"),LRSPEC=$$VAL^ORCD("SPECIMEN")
    96         S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI 0
    97         I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
    98         S LRTSTN=1,LRTEST(1)=+ORTEST,DA=$O(^LAB(60,LRTEST(1),3,"B",+LRSAMP,0))
    99         S REQDCOMM=$P($G(^LAB(60,LRTEST(1),3,+DA,0)),U,6)
    100         S:'REQDCOMM REQDCOMM=+$P($G(^LAB(60,LRTEST(1),0)),U,19)
    101         Q REQDCOMM
    102 LRASMP()              ; return true to ask collection sample (from ASKSAMP^ORCDLR)
    103         N DEFSAMP,SAMP0
    104         S DEFSAMP=$G(ORDIALOG(PROMPT,INST)),SAMP0=$G(^LAB(62,+DEFSAMP,0))
    105         I (ORCOLLCT="LC")!(ORCOLLCT="I"),$G(ORTEST("Lab CollSamp")) Q 0
    106         I $G(ORTEST("Unique CollSamp")),DEFSAMP Q 0 ; unique -> don't ask
    107         I 'DEFSAMP!('FIRST) Q 1 ; no default or edit -> ask
    108         I $G(ORDIALOG(PROMPT,"LIST"))="1^1" Q 0 ; only one choice
    109         Q 1
    110 LRICTMOK               ;
    111         Q:'$D(ORDIALOG(PROMPT,1))
    112         N ORY
    113         D VALDT^ORWU(.ORY,ORDIALOG(PROMPT,1))
    114         I +$$VALID^LR7OV4(DUZ(2),ORY)=0 S ORDIALOG(PROMPT,1)=""
    115         Q
    116 DO      ; setup environment for diet order
    117         ; partially copied from EN^ORCDFH
    118         I ORCAT'="I" D  Q
    119         . S ORQUIT=1
    120         . S LST(0)="8^0"
    121         . S LST(.5)="This type of diet may be entered for inpatients only."
    122         D EN^FHWOR8(+ORVP,.ORPARAM)          ; set FH ordering parameters
    123         S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
    124         N PROMPT,OI                          ; set NPO flag if NPO diet
    125         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0))
    126         S OI=+$G(ORDIALOG(PROMPT,1))
    127         S ORNPO=($P($G(^ORD(101.43,OI,0)),U)="NPO")
    128         S PROMPT=$O(^ORD(101.41,"B","OR GTX START DATE/TIME",0))
    129         S X=$G(ORDIALOG(PROMPT,1)) I $L(X) D CNV^ORCDFH1 S ORDIALOG(PROMPT,1)=$G(X)
    130         Q
    131 EL      ; setup environment for early/late tray
    132         D EN^FHWOR8(+ORVP,.ORPARAM)          ; set FH ordering parameters
    133         S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
    134         D EN2^ORCDFH                         ; setup ORTIME array
    135         N PROMPT                             ; set ORMEAL,ORTRAY
    136         S PROMPT=$O(^ORD(101.41,"B","OR GTX MEAL",0))
    137         I $D(ORDIALOG(PROMPT,1)) S ORMEAL=ORDIALOG(PROMPT,1)
    138         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0))
    139         I $D(ORDIALOG(PROMPT,1)) S ORTRAY=ORDIALOG(PROMPT,1)
    140         Q
    141 UD      ; setup environment for unit dose med
    142         I $G(ORWP94) G PS^ORWDPS3  ; if patch 94 installed
    143         ;
    144         D AUTHMED Q:$G(ORQUIT)  ; checks authorized to write meds
    145         N PROMPT,OI
    146         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0))
    147         I $D(ORDIALOG(PROMPT,1)) S OI=ORDIALOG(PROMPT,1) D MEDACTV(1) Q:$G(ORQUIT)
    148         D INSTR^ORCDPS(OI)      ; sets up instructions, routes, etc.
    149         D CHOICES^ORCDPS("U")   ; gets list of dispense drugs       
    150         Q
    151 IV      ; setup environment for IV fluid
    152         D AUTHMED Q:$G(ORQUIT)  ; checks authorized to write meds
    153         ; sets up list of volumes if only one solution
    154         ; otherwise, let the dialog go interactive
    155         N PROMPT,INST,CNT,OI
    156         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0))
    157         S (CNT,INST)=0
    158         F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  D  Q:$G(ORQUIT)
    159         . S CNT=CNT+1
    160         . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(3) ; check active solutions
    161         I CNT=1 S INST=1 D VOLUME^ORCDPSIV
    162         S PROMPT=$O(^ORD(101.41,"B","OR GTX ADDITIVE",0))
    163         S INST=0
    164         F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  D  Q:$G(ORQUIT)
    165         . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(4) ; check active additives
    166         Q
    167 OP      ; setup environment for outpatient pharmacy
    168         I $G(ORWP94) G PS^ORWDPS3  ; if patch 94 installed
    169         ;
    170         D AUTHMED Q:$G(ORQUIT)       ; checks authorized to write meds
    171         N PROMPT,INST,CNT,OI
    172         S PROMPT=$O(^ORD(101.41,"B","OR GTX ORDERABLE ITEM",0)),OI=0
    173         I $D(ORDIALOG(PROMPT,1)) S OI=$G(ORDIALOG(PROMPT,1)) D MEDACTV(2) Q:$G(ORQUIT)
    174         D:+OI INSTR^ORCDPS(OI)           ; sets up instructions, routes, etc.
    175         D CHOICES^ORCDPS("O")        ; gets list of dispense drugs     
    176         ; get defaults for drug, refills if only one dispense drug
    177         S PROMPT=$O(^ORD(101.41,"B","OR GTX DISPENSE DRUG",0))
    178         S (CNT,INST)=0
    179         F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  S CNT=CNT+1
    180         I CNT=1 D
    181         . S ORDRUG=+$G(ORDIALOG(PROMPT,1)),ORCOMPLX=0
    182         . S OREFILLS=$P($G(ORDIALOG(PROMPT,"LIST","D",ORDRUG)),U,3)
    183         . S:'$L(OREFILLS) OREFILLS=11
    184         E  S ORCOMPLX=1,OREFILLS=11  ; force interactive on complex order
    185         S ORCOPAY=1                  ; ask SC if can't determine copay
    186         I $G(ORDRUG),$L($T(ASKSC^ORCDPS)) S ORCOPAY=$$ASKSC^ORCDPS
    187         Q
    188 AUTHMED ; sets ORQUIT if not authorized to write meds
    189         N NOAUTH,NAME
    190         D AUTH^ORWDPS32(.NOAUTH,ORNP)
    191         I +NOAUTH D
    192         . S ORQUIT=1
    193         . S LST(0)="8^0"
    194         . S NAME=$P($G(^VA(200,+ORNP,20)),U,2)
    195         . I '$L(NAME) S NAME=$P($G(^VA(200,+ORNP,0)),U,1)
    196         . S LST(.5)=NAME_" is not authorized to write med orders."
    197         Q
    198 MEDACTV(USAGE)  ; sets ORQUIT if the orderable item is not active for a med
    199         Q:'$G(OI)  S USAGE=+$G(USAGE)
    200         I $G(^ORD(101.43,OI,.1)),^(.1)'>$$NOW^XLFDT D  Q
    201         . S ORQUIT=1,LST(0)="8^0"
    202         . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" has been inactivated and may not be ordered anymore."
    203         I USAGE,'$P($G(^ORD(101.43,OI,"PS")),U,USAGE) D  Q
    204         . S ORQUIT=1,LST(0)="8^0"
    205         . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" may not be ordered as an "_$S(USAGE=1:"inpatient medication",USAGE=2:"outpatient medication",USAGE=3:"IV solution",1:"IV additive")_" anymore."
    206         Q
    207 SCHEDULD()      ; Is patient scheduled for PREOP (Imaging)
    208         I $G(ORDIALOG(PROMPT,1)) Q 1 ; don't ask - already have date
    209         E  Q 0
    210         Q
     1ORWDXM2 ; SLC/KCM - Quick Orders ;11/25/02  09:49
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,109,116,132,158,187,195,215**;Dec 17, 1997
     3 ;
     4CLRRCL(OK)      ; clear ORECALL
     5 S OK=1
     6 K ^TMP("ORECALL",$J),^TMP("ORWDXMQ",$J)
     7 Q
     8VERTXT ; set verify text for order
     9 N SEQ,DA,X,PROMPT,MULT,CHILD,INST,TITLE,ILST,SPACES
     10 S ILST=0,$P(SPACES," ",31)=""
     11 S SEQ=0 F  S SEQ=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ)) Q:SEQ'>0  D
     12 . S DA=0 F  S DA=$O(^ORD(101.41,+ORDIALOG,10,"B",SEQ,DA)) Q:'DA  D
     13 . . S X0=$G(^ORD(101.41,+ORDIALOG,10,DA,0))
     14 . . Q:$P(X0,U,9)["*"  ; hidden prompt
     15 . . S PROMPT=$P(X0,U,2),MULT=$P(X0,U,7),CHILD=$P(X0,U,11) Q:CHILD
     16 . . Q:'PROMPT  S INST=$O(ORDIALOG(PROMPT,0)) Q:'INST  ; no values
     17 . . S TITLE=$S($L($G(ORDIALOG(PROMPT,"TTL"))):ORDIALOG(PROMPT,"TTL"),1:ORDIALOG(PROMPT,"A"))
     18 . . I $E(ORDIALOG(PROMPT,0))="W" D
     19 . . . N IWP,WP,CNT
     20 . . . S IWP=0,CNT=0
     21 . . . F  S IWP=$O(^TMP("ORWORD",$J,PROMPT,INST,IWP)) Q:'IWP  D
     22 . . . . S CNT=CNT+1,WP(CNT)=^TMP("ORWORD",$J,PROMPT,INST,IWP,0)
     23 . . . I CNT=1 S ILST=ILST+1,LST(ILST)=$J(TITLE,30)_WP(1)
     24 . . . I CNT>1 D
     25 . . . . S ILST=ILST+1,LST(ILST)=TITLE,IWP=0
     26 . . . . F  S IWP=$O(WP(IWP)) Q:'IWP  S ILST=ILST+1,LST(ILST)=WP(IWP)
     27 . . E  D
     28 . . . S ILST=ILST+1,LST(ILST)=$J(TITLE,30)
     29 . . . S LST(ILST)=LST(ILST)_$$ITEM^ORCDLG(PROMPT,INST)
     30 . . Q:'MULT  Q:'$O(ORDIALOG(PROMPT,INST))  ; done
     31 . . F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:INST'>0  S ILST=ILST+1,LST(ILST)=SPACES_$$ITEM^ORCDLG(PROMPT,INST)
     32 D DISPLAY^ORWDBA3  ;for display of Billing Aware data from orig order
     33 Q
     34RA ; setup environment for radiology
     35 ; -- get imaging types based on display group of quick order and
     36 ;    setup list of imaging locations based on imaging type
     37 N ORY,ITYPE,IFN,CNT,ORIMLOC,PROMPT
     38 S ORDIV=$$DIV^ORCDRA1,ITYPE=$P($G(^ORD(100.98,+ORDG,0)),U,3)
     39 S ORIMTYPE=$O(^RA(79.2,"C",ITYPE,0))
     40 D EN4^RAO7PC1(ITYPE,"ORY")
     41 S (IFN,CNT)=0 F  S IFN=$O(ORY(IFN)) Q:IFN'>0  D
     42 . S CNT=CNT+1,ORIMLOC(CNT)=ORY(IFN),ORIMLOC("B",$P(ORY(IFN),U,2))=IFN
     43 I '$$GET^XPAR("ALL","RA SUBMIT PROMPT",1,"Q"),CNT>1 K ORIMLOC
     44 E  S ORIMLOC=CNT_"^1"
     45 S PROMPT=$O(^ORD(101.41,"AB","OR GTX IMAGING LOCATION",0))
     46 I $G(ORIMLOC) M ORDIALOG(PROMPT,"LIST")=ORIMLOC
     47 Q
     48LR ; setup environment for lab
     49 ; -- setup ORTIME, ORIMTIME & ORTEST arrays
     50 ;    setup ORMAX, ORDG, & ORCOLLCT variables
     51 N PROMPT,INST,EDITONLY
     52 D GETIMES^ORCDLR1  ; sets up ORTIME and ORIMTIME arrays
     53 S ORMAX=$$GET^XPAR("ALL^LOC.`"_+ORL,"LR MAX DAYS CONTINUOUS",1,"Q")
     54 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)),INST=1
     55 D LRTEST           ; sets up ORTEST array and ORDG
     56 S PROMPT=$O(^ORD(101.41,"AB","OR GTX COLLECTION TYPE",0))
     57 I $D(ORDIALOG(PROMPT,1)) S ORCOLLCT=ORDIALOG(PROMPT,1) I 1
     58 E  S EDITONLY=0,ORCOLLCT=$$COLLTYPE^ORCDLR1
     59 I ORCOLLCT="I" D
     60 . S PROMPT=$O(^ORD(101.41,"AB","OR GTX START DATE/TIME",0))
     61 . D LRICTMOK
     62 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ADMIN SCHEDULE",0))
     63 I $D(ORDIALOG(PROMPT,1)) S ORSCH=ORDIALOG(PROMPT,1)
     64 Q
     65LRTEST ; -- Setup ORTEST() array of ordering parameters (copied from ORCDLR)
     66 N OI,TST,DG
     67 S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI
     68 I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
     69 S DG=$P($G(^ORD(101.43,+OI,"LR")),U,6) S:'$L(DG) DG="LAB"
     70 S DG=$O(^ORD(100.98,"B",DG,0)) S:DG ORDG=DG
     71 Q
     72LRRQCM()        ; return true if lab test has required comments
     73 I $O(^TMP("ORWORD",$J,PROMPT,INST,0)) Q 1 ; edit via WP
     74 N LRTEST,LRSAMP,LRSPEC,LRTSTN,LRTCOM,LRCCOM,DA,CNT,I,REQDCOMM,OI,TST
     75 S LRSAMP=$$VAL^ORCD("COLLECTION SAMPLE"),LRSPEC=$$VAL^ORCD("SPECIMEN")
     76 S OI=+$G(ORDIALOG(PROMPT,INST)) Q:'OI 0
     77 I '$D(ORTEST) S TST=+$P($G(^ORD(101.43,OI,0)),U,2) D TEST^LR7OR3(TST,.ORTEST) S ORTEST=TST
     78 S LRTSTN=1,LRTEST(1)=+ORTEST,DA=$O(^LAB(60,LRTEST(1),3,"B",+LRSAMP,0))
     79 S REQDCOMM=$P($G(^LAB(60,LRTEST(1),3,+DA,0)),U,6)
     80 S:'REQDCOMM REQDCOMM=+$P($G(^LAB(60,LRTEST(1),0)),U,19)
     81 Q REQDCOMM
     82LRASMP()       ; return true to ask collection sample (from ASKSAMP^ORCDLR)
     83 N DEFSAMP,SAMP0
     84 S DEFSAMP=$G(ORDIALOG(PROMPT,INST)),SAMP0=$G(^LAB(62,+DEFSAMP,0))
     85 I (ORCOLLCT="LC")!(ORCOLLCT="I"),$G(ORTEST("Lab CollSamp")) Q 0
     86 I $G(ORTEST("Unique CollSamp")),DEFSAMP Q 0 ; unique -> don't ask
     87 I 'DEFSAMP!('FIRST) Q 1 ; no default or edit -> ask
     88 I $G(ORDIALOG(PROMPT,"LIST"))="1^1" Q 0 ; only one choice
     89 Q 1
     90LRICTMOK        ;
     91 Q:'$D(ORDIALOG(PROMPT,1))
     92 N ORY
     93 D VALDT^ORWU(.ORY,ORDIALOG(PROMPT,1))
     94 I +$$VALID^LR7OV4(DUZ(2),ORY)=0 S ORDIALOG(PROMPT,1)=""
     95 Q
     96DO ; setup environment for diet order
     97 ; partially copied from EN^ORCDFH
     98 I ORCAT'="I" D  Q
     99 . S ORQUIT=1
     100 . S LST(0)="8^0"
     101 . S LST(.5)="This type of diet may be entered for inpatients only."
     102 D EN^FHWOR8(+ORVP,.ORPARAM)          ; set FH ordering parameters
     103 S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
     104 N PROMPT,OI                          ; set NPO flag if NPO diet
     105 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
     106 S OI=+$G(ORDIALOG(PROMPT,1))
     107 S ORNPO=($P($G(^ORD(101.43,OI,0)),U)="NPO")
     108 Q
     109EL ; setup environment for early/late tray
     110 D EN^FHWOR8(+ORVP,.ORPARAM)          ; set FH ordering parameters
     111 S:'$L($G(ORPARAM(3))) ORPARAM(3)="T" ; for now
     112 D EN2^ORCDFH                         ; setup ORTIME array
     113 N PROMPT                             ; set ORMEAL,ORTRAY
     114 S PROMPT=$O(^ORD(101.41,"AB","OR GTX MEAL",0))
     115 I $D(ORDIALOG(PROMPT,1)) S ORMEAL=ORDIALOG(PROMPT,1)
     116 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
     117 I $D(ORDIALOG(PROMPT,1)) S ORTRAY=ORDIALOG(PROMPT,1)
     118 Q
     119UD ; setup environment for unit dose med
     120 I $G(ORWP94) G PS^ORWDPS3  ; if patch 94 installed
     121 ;
     122 D AUTHMED Q:$G(ORQUIT)  ; checks authorized to write meds
     123 N PROMPT,OI
     124 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
     125 I $D(ORDIALOG(PROMPT,1)) S OI=ORDIALOG(PROMPT,1) D MEDACTV(1) Q:$G(ORQUIT)
     126 D INSTR^ORCDPS(OI)      ; sets up instructions, routes, etc.
     127 D CHOICES^ORCDPS("U")   ; gets list of dispense drugs       
     128 Q
     129IV ; setup environment for IV fluid
     130 D AUTHMED Q:$G(ORQUIT)  ; checks authorized to write meds
     131 ; sets up list of volumes if only one solution
     132 ; otherwise, let the dialog go interactive
     133 N PROMPT,INST,CNT,OI
     134 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0))
     135 S (CNT,INST)=0
     136 F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  D  Q:$G(ORQUIT)
     137 . S CNT=CNT+1
     138 . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(3) ; check active solutions
     139 I CNT=1 S INST=1 D VOLUME^ORCDPSIV
     140 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ADDITIVE",0))
     141 S INST=0
     142 F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  D  Q:$G(ORQUIT)
     143 . S OI=ORDIALOG(PROMPT,INST) D MEDACTV(4) ; check active additives
     144 Q
     145OP ; setup environment for outpatient pharmacy
     146 I $G(ORWP94) G PS^ORWDPS3  ; if patch 94 installed
     147 ;
     148 D AUTHMED Q:$G(ORQUIT)       ; checks authorized to write meds
     149 N PROMPT,INST,CNT,OI
     150 S PROMPT=$O(^ORD(101.41,"AB","OR GTX ORDERABLE ITEM",0)),OI=0
     151 I $D(ORDIALOG(PROMPT,1)) S OI=$G(ORDIALOG(PROMPT,1)) D MEDACTV(2) Q:$G(ORQUIT)
     152 D:+OI INSTR^ORCDPS(OI)           ; sets up instructions, routes, etc.
     153 D CHOICES^ORCDPS("O")        ; gets list of dispense drugs     
     154 ; get defaults for drug, refills if only one dispense drug
     155 S PROMPT=$O(^ORD(101.41,"AB","OR GTX DISPENSE DRUG",0))
     156 S (CNT,INST)=0
     157 F  S INST=$O(ORDIALOG(PROMPT,INST)) Q:'INST  S CNT=CNT+1
     158 I CNT=1 D
     159 . S ORDRUG=+$G(ORDIALOG(PROMPT,1)),ORCOMPLX=0
     160 . S OREFILLS=$P($G(ORDIALOG(PROMPT,"LIST","D",ORDRUG)),U,3)
     161 . S:'$L(OREFILLS) OREFILLS=11
     162 E  S ORCOMPLX=1,OREFILLS=11  ; force interactive on complex order
     163 S ORCOPAY=1                  ; ask SC if can't determine copay
     164 I $G(ORDRUG),$L($T(ASKSC^ORCDPS)) S ORCOPAY=$$ASKSC^ORCDPS
     165 Q
     166AUTHMED ; sets ORQUIT if not authorized to write meds
     167 N NOAUTH,NAME
     168 D AUTH^ORWDPS32(.NOAUTH,ORNP)
     169 I +NOAUTH D
     170 . S ORQUIT=1
     171 . S LST(0)="8^0"
     172 . S NAME=$P($G(^VA(200,+ORNP,20)),U,2)
     173 . I '$L(NAME) S NAME=$P($G(^VA(200,+ORNP,0)),U,1)
     174 . S LST(.5)=NAME_" is not authorized to write med orders."
     175 Q
     176MEDACTV(USAGE) ; sets ORQUIT if the orderable item is not active for a med
     177 Q:'$G(OI)  S USAGE=+$G(USAGE)
     178 I $G(^ORD(101.43,OI,.1)),^(.1)'>$$NOW^XLFDT D  Q
     179 . S ORQUIT=1,LST(0)="8^0"
     180 . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" has been inactivated and may not be ordered anymore."
     181 I USAGE,'$P($G(^ORD(101.43,OI,"PS")),U,USAGE) D  Q
     182 . S ORQUIT=1,LST(0)="8^0"
     183 . S LST(.5)=$P($G(^ORD(101.43,OI,0)),U)_" may not be ordered as an "_$S(USAGE=1:"inpatient medication",USAGE=2:"outpatient medication",USAGE=3:"IV solution",1:"IV additive")_" anymore."
     184 Q
     185SCHEDULD() ; Is patient scheduled for PREOP (Imaging)
     186 I $G(ORDIALOG(PROMPT,1)) Q 1 ; don't ask - already have date
     187 E  Q 0
     188 Q
Note: See TracChangeset for help on using the changeset viewer.