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/ORWDX1.m

    r613 r623  
    1 ORWDX1  ; SLC/KCM/REV - Utilities for Order Dialogs ;06/06/2007
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**85,187,195,215,243**;Dec 17, 1997;Build 242
    3         ;
    4 WRLST(LST,LOC)  ; Return list of dialogs for writing orders
    5         ; .Y(n): DlgName^ListBox Text
    6 WRLST1  N ANENT
    7         S LOC=+$G(LOC)_";SC(" I 'LOC S LOC=""
    8         S ANENT="ALL^"_LOC_$S($G(^VA(200,DUZ,5)):"^SRV.`"_+$G(^(5)),1:"")
    9         D WRLSTB(.LST) Q:$D(LST)>1  ; check ORWDX WRITE ORDERS first
    10         N ORX,X0,X5,ORERR,I,SEQ,IEN,DGRP,FID,TXT,TYP
    11         D GETLST^XPAR(.ORX,ANENT,"ORWOR WRITE ORDERS LIST","Q",.ORERR) Q:ORERR
    12         S I=0 F  S I=$O(ORX(I)) Q:'I  D
    13         . S SEQ=+ORX(I),IEN=$P(ORX(I),U,2),X0=$G(^ORD(101.41,+IEN,0)),X5=$G(^(5))
    14         . S DGRP=+$P(X0,U,5),FID=+$P(X5,U,5),TXT=$P(X5,U,4),TYP=$P(X0,U,4)
    15         . S:'$L(TXT) TXT=$P(X0,U,2)
    16         . I $P(X0,U,4)="M" S:'FID FID=1001
    17         . S LST(SEQ)=IEN_";"_FID_";"_DGRP_";"_TYP_U_TXT
    18         Q
    19 WRLSTB(LST)         ; return menu from which Write Orders list is built
    20         N MNU,SEQ,IEN,ITM,TXT,FID,DGRP,X,TYP
    21         S MNU=$$GET^XPAR(ANENT,"ORWDX WRITE ORDERS LIST",1,"I") Q:'MNU
    22         S SEQ=0 F  S SEQ=$O(^ORD(101.41,MNU,10,"B",SEQ)) Q:'SEQ  D
    23         . S IEN=0 F  S IEN=$O(^ORD(101.41,MNU,10,"B",SEQ,IEN)) Q:'IEN  D
    24         . . S X=$G(^ORD(101.41,MNU,10,IEN,0)),ITM=+$P(X,U,2),TXT=$P(X,U,4)
    25         . . S X=$G(^ORD(101.41,ITM,5)),FID=+$P(X,U,5)
    26         . . S X=$G(^ORD(101.41,ITM,0)),TYP=$P(X,U,4),DGRP=+$P(X,U,5)
    27         . . S:'$L(TXT) TXT=$P(X,U,2)
    28         . . I TYP="M" S:'FID FID=1001
    29         . . S LST(SEQ)=ITM_";"_FID_";"_DGRP_";"_TYP_U_TXT
    30         Q
    31 DELPI   ; delete PI from ORDIALOG if PI = ""
    32         ;Called from SAVE^ORWDX
    33         N ORPI S ORPI=0
    34         S ORPI=$O(^ORD(101.41,"B","OR GTX PATIENT INSTRUCTIONS",ORPI))
    35         Q:'$D(ORDIALOG(ORPI))
    36         I '$D(ORDIALOG(ORPI,1)) K ORDIALOG(ORPI),ORDIALOG("WP",ORPI) Q
    37         N PINODE,PITX
    38         S PITX="",PINODE=$G(ORDIALOG(ORPI,1))
    39         S PITX=$G(@PINODE@(1,0))
    40         S PITX=$TR(PITX," ","")
    41         I '$L(PITX) K ORDIALOG(ORPI),ORDIALOG("WP",ORPI) Q
    42         N ORSIG S ORSIG=+$O(^ORD(101.41,"B","OR GTX SIG",0))
    43         I $$STR^ORWDXR(ORSIG)[$$STR^ORWDXR(ORPI) S ORDIALOG(ORPI,"FORMAT")="@"
    44         Q
    45 FNDINFO(Y,ODIEN)        ;
    46         N ODI,CRTM,FRM,XX
    47         S FRM="",CRTM=$$NOW^XLFDT
    48         F  S FRM=$O(^ORD(101.43,XRF,FRM)) Q:FRM=""  D
    49         . S ODI=0 F  S ODI=$O(^ORD(101.43,XRF,FRM,ODI)) Q:'ODI  D
    50         .. S XX=^ORD(101.43,XRF,FRM,ODI)
    51         .. I +$P(XX,U,3),$P(XX,U,3)<CRTM Q
    52         .. I ODI=ODIEN D
    53         ... S NM=NM+1
    54         ... I 'XX S Y(NM)=ODIEN_U_$P(XX,U,2)_U_$P(XX,U,2)
    55         ... E  S Y(NM)=ODIEN_U_$P(XX,U,2)_$C(9)_"<"_$P(XX,U,4)_">"_U_$P(XX,U,4)
    56         Q
    57 DLGDEF(LST,DLG) ; Format mapping for a dlg
    58         N I,IEN,ILST,X0,X2,XW  S ILST=0
    59         I $O(^ORD(101.41,"AB",DLG,0))>0 S DLG=$O(^ORD(101.41,"AB",DLG,0))
    60         E  S DLG=$O(^ORD(101.41,"B",DLG,0))
    61         Q:'DLG
    62         S I=0 F  S I=$O(^ORD(101.41,DLG,10,I)) Q:I'>0  D
    63         . S X0=$G(^ORD(101.41,DLG,10,I,0)),X2=$G(^(2)),IEN=+$P(X0,U,2)
    64         . S ILST=ILST+1,LST(ILST)=U_IEN_U_$P(X2,U,1,7)
    65         . I $P(X0,U,11) S $P(LST(ILST),U,11)=1
    66         . S $P(LST(ILST),U)=$P($G(^ORD(101.41,IEN,1)),U,3)
    67         . I $P($G(^ORD(101.41,IEN,0)),U)="OR GTX ADDITIVE" S $P(LST(ILST),U)="ADDITIVE"
    68         . I $P($G(^ORD(101.41,IEN,0)),U)="OR GTX ADDL DIETS" S $P(LST(ILST),U)="ADDLDIETS"
    69         . I $L($P(LST(ILST),U))=0 S $P(LST(ILST),U)="ID"_IEN
    70         . I $D(^ORD(101.41,DLG,10,"DAD",IEN)) D
    71         .. N SEQ,DA,CHILD S CHILD=""
    72         .. S SEQ=0 F  S SEQ=$O(^ORD(101.41,DLG,10,"DAD",IEN,SEQ)) Q:'SEQ  D
    73         ... S DA=0 F  S DA=$O(^ORD(101.41,DLG,10,"DAD",IEN,SEQ,DA)) Q:'DA  D
    74         .... S CHILD=CHILD_+$P($G(^ORD(101.41,DLG,10,DA,0)),U,2)_"~"
    75         .. S $P(LST(ILST),U,10)=CHILD
    76         Q
    77         ;
    78 CHANGE(ORLST,ORCLST,DFN,ISIMO)  ;
    79         N CATCH,CHANGE,CNT,INP,INPDIEN,IVM,IVMDIEN,ORIEN,ORLOC,OR3,ORDG
    80         N CIEN,DIAL,TDIAL,TDIEN,UDIEN,QORDDG,PACKIEN
    81         S (INP,IVM,INPDIEN,IVMDIEN,UDIEN)=0
    82         S (TDIAL,TDIEN)=0
    83         S INP=$O(^ORD(101.41,"B","PSJ OR PAT OE","")) Q:INP'>0
    84         S IVM=$O(^ORD(101.41,"B","PSJI OR PAT FLUID OE","")) Q:IVM'>0
    85         S TDIAL=$O(^ORD(101.41,"B","OR GXTEXT WORD PROCESSING ORDER","")) Q:TDIAL'>0
    86         S INPDIEN=$O(^ORD(100.98,"B","INPATIENT MEDICATIONS","")) Q:INPDIEN'>0
    87         S IVMDIEN=$O(^ORD(100.98,"B","IV MEDICATIONS","")) Q:IVMDIEN'>0
    88         S UDIEN=$O(^ORD(100.98,"B","UNIT DOSE MEDICATIONS","")) Q:UDIEN'>0
    89         S TIEN=$O(^ORD(100.98,"B","NURSING","")) Q:TIEN'>0
    90         S CIEN=$O(^ORD(100.98,"B","CLINIC ORDERS","")) Q:CIEN'>0
    91         S CNT=0 F  S CNT=$O(ORCLST(CNT)) Q:CNT'>0  D
    92         .S CHANGE=0
    93         .S ORIEN=$P($G(ORCLST(CNT)),U),ORIEN=$P(ORIEN,";")
    94         .S ORDG=$P($G(^OR(100,ORIEN,0)),U,11)
    95         .S ORLOC=$P($G(ORCLST(CNT)),U,2)
    96         .S OR3=$G(^OR(100,ORIEN,3))
    97         .S DIAL=$P(OR3,U,4)
    98         .;Remove Treating Speciality if the order location is the clinic
    99         .I $P($G(^OR(100,ORIEN,0)),U,10)=(ORLOC_";SC("),$P($G(^SC(ORLOC,0)),U,3)="C" D  Q
    100         ..S $P(^OR(100,ORIEN,0),U,13)=""
    101         .;
    102         .;CHANGE PATIENT LOCATION AND PATIENT STATUS.
    103         .S $P(^OR(100,ORIEN,0),U,10)=ORLOC_";SC("
    104         .S PACKIEN=$P(^OR(100,ORIEN,0),U,14)
    105         .I $$GET1^DIQ(9.4,PACKIEN_",",1)'="PSO" S $P(^OR(100,ORIEN,0),U,12)="I"
    106         .;
    107         .;Check for IMO orders Nursing Dialog problem
    108         .S CATCH=$P($G(^OR(100,ORIEN,0)),U,11)
    109         .;
    110         .S $P(^OR(100,ORIEN,0),U,11)=$S(DIAL=(IVM_";ORD(101.41,"):IVMDIEN,DIAL=(INP_";ORD(101.41,"):INPDIEN,DIAL=(TDIAL_";ORD(101.41,"):TIEN,1:CATCH)
    111         .;
    112         .;Check for Quick Order Dialog
    113         .I CATCH=$P($G(^OR(100,ORIEN,0)),U,11),ISIMO=1 D
    114         ..S QORDDG=$P($G(^ORD(101.41,+DIAL,0)),U,5)
    115         ..I QORDDG=UDIEN!(QORDDG=INPDIEN) S $P(^OR(100,ORIEN,0),U,11)=INPDIEN,DIAL=(INP_";ORD(101.41,") Q
    116         ..I QORDDG=IVMDIEN S $P(^OR(100,ORIEN,0),U,11)=IVMDIEN,DIAL=(IVM_";ORD(101.41,") Q
    117         ..I QORDDG=TIEN S $P(^OR(100,ORIEN,0),U,11)=TIEN,DIAL=(TDIAL_";ORD(101.41,") Q
    118         .;
    119         .;Add treating spec if Inpatient order
    120         .;I (ISIMO=1)&(DIAL=(IVM_";ORD(101.41,"))!(DIAL=(INP_";ORD(101.41,")) D
    121         .;.S $P(^OR(100,ORIEN,0),U,13)=+$G(^DPT(DFN,.103))
    122         .I ISIMO=0 S $P(^OR(100,ORIEN,0),U,13)=+$G(^DPT(DFN,.103))
    123         Q
    124         ;
    125 STCHANGE(ORY,DFN,ORYARR)        ;
    126         N CNT,DONE,NODE,PHARMID,STR,STATUS
    127         S ORY=0,DONE=0
    128         I '$$PATCH^XPDUTL("PSS*1.0*93") Q
    129         S CNT=0 F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0!(DONE>0)  D
    130         . S NODE=$G(ORYARR(CNT))
    131         . S PHARMID=$P(NODE,U),STATUS=$P(NODE,U,2)
    132         . I $$UP^XLFSTR(STATUS)'=$$STATUS^PSSORUTE(DFN,PHARMID) S ORY=1,DONE=1
    133         Q
    134 ORDMATCH(ORY,DFN,ORYARR)        ;
    135         N ACTION,CNT,IEN,MATCH,ORDERID,STATUS
    136         S CNT=0,MATCH=1
    137         F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0!(MATCH=0)  D
    138         . S ORDERID=$P(ORYARR(CNT),U),STATUS=$P(ORYARR(CNT),U,2)
    139         . I ORDERID=0,$G(ACTION)="" Q
    140         . S IEN=$P(ORDERID,";"),ACTION=$P(ORDERID,";",2)
    141         . I STATUS=$P($G(^OR(100,IEN,3)),U,3) Q
    142         . I $P($G(^ORD(100.01,STATUS,0)),U)="DISCONTINUED/EDIT" Q
    143         . ;S MATCH=0
    144         . I $P($G(^OR(100,IEN,8,ACTION,0)),U,15)'=STATUS S MATCH=0
    145         S ORY=MATCH
    146         Q
    147         ;
    148 DCREN(ORY,ORYARR)       ;
    149         N ACT,CNT,CNT1,I,OR3,ORG,ORGID,ORID,TEXT,STATUS
    150         S CNT1=0
    151         S CNT=0 F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0  D
    152         .S ORGID=ORYARR(CNT)
    153         .S ORID=+ORGID,ACT=$P(ORGID,";",2),TEXT=""
    154         .S OR3=$G(^OR(100,ORID,3))
    155         .;Make sure current order status is pending
    156         .I $P($G(^ORD(100.01,$P(OR3,U,3),0)),U)'="PENDING" Q
    157         .S ORG=$P($G(OR3),U,5) Q:ORG'>0
    158         .;do not add original order if it is expired
    159         .S STATUS=$P(^OR(100,ORG,3),U,3)
    160         .I $P($G(^ORD(100.01,STATUS,0)),U)="EXPIRED" Q
    161         .;Do not add original order if Stop date has pass
    162         .I $P(^OR(100,ORG,0),U,9)'>$$NOW^XLFDT Q
    163         .;make sure current order is a renewed order
    164         .I $P(OR3,U,11)'=2 Q
    165         .S ACT=+$P($G(^OR(100,ORG,3)),U,7)
    166         .S CNT1=CNT1+1,ORY(CNT1)=ORGID_U_$P(OR3,U,5)_";"_ACT_U_TEXT
    167         Q
    168 DCORIG(ORY,ORIEN)       ;
    169         S $P(^OR(100,+ORIEN,6),U,9)=1
    170         Q
    171 UNDCORIG(ORY,ORYARR)    ;
    172         N CNT
    173         S CNT=0 F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0  S $P(^OR(100,+ORYARR(CNT),6),U,9)=0
    174         Q
    175 PATWARD(ORY,DFN)        ;
    176         S ORY=0
    177         I $G(^DPT(DFN,.1))'="" S ORY=1
    178         Q
    179 ISPEND(ORIFN)   ;Is the order's status pending?
    180         N ISPEND,PENDST,N3 S ISPEND=0
    181         Q:'$D(^OR(100,+ORIFN,3))
    182         S PENDST=$O(^ORD(100.01,"B","PENDING",0))
    183         S N3=$G(^OR(100,+ORIFN,3))
    184         I $P(N3,U,3)=PENDST S ISPEND=1
    185         Q ISPEND
     1ORWDX1 ; SLC/KCM/REV - Utilities for Order Dialogs ;10/14/05
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**85,187,195,215**;Dec 17, 1997
     3 ;
     4WRLST(LST,LOC) ; Return list of dialogs for writing orders
     5 ; .Y(n): DlgName^ListBox Text
     6WRLST1 N ANENT
     7 S LOC=+$G(LOC)_";SC(" I 'LOC S LOC=""
     8 S ANENT="ALL^"_LOC_$S($G(^VA(200,DUZ,5)):"^SRV.`"_+$G(^(5)),1:"")
     9 D WRLSTB(.LST) Q:$D(LST)>1  ; check ORWDX WRITE ORDERS first
     10 N ORX,X0,X5,ORERR,I,SEQ,IEN,DGRP,FID,TXT,TYP
     11 D GETLST^XPAR(.ORX,ANENT,"ORWOR WRITE ORDERS LIST","Q",.ORERR) Q:ORERR
     12 S I=0 F  S I=$O(ORX(I)) Q:'I  D
     13 . S SEQ=+ORX(I),IEN=$P(ORX(I),U,2),X0=$G(^ORD(101.41,+IEN,0)),X5=$G(^(5))
     14 . S DGRP=+$P(X0,U,5),FID=+$P(X5,U,5),TXT=$P(X5,U,4),TYP=$P(X0,U,4)
     15 . S:'$L(TXT) TXT=$P(X0,U,2)
     16 . I $P(X0,U,4)="M" S:'FID FID=1001
     17 . S LST(SEQ)=IEN_";"_FID_";"_DGRP_";"_TYP_U_TXT
     18 Q
     19WRLSTB(LST)     ; return menu from which Write Orders list is built
     20 N MNU,SEQ,IEN,ITM,TXT,FID,DGRP,X,TYP
     21 S MNU=$$GET^XPAR(ANENT,"ORWDX WRITE ORDERS LIST",1,"I") Q:'MNU
     22 S SEQ=0 F  S SEQ=$O(^ORD(101.41,MNU,10,"B",SEQ)) Q:'SEQ  D
     23 . S IEN=0 F  S IEN=$O(^ORD(101.41,MNU,10,"B",SEQ,IEN)) Q:'IEN  D
     24 . . S X=$G(^ORD(101.41,MNU,10,IEN,0)),ITM=+$P(X,U,2),TXT=$P(X,U,4)
     25 . . S X=$G(^ORD(101.41,ITM,5)),FID=+$P(X,U,5)
     26 . . S X=$G(^ORD(101.41,ITM,0)),TYP=$P(X,U,4),DGRP=+$P(X,U,5)
     27 . . S:'$L(TXT) TXT=$P(X,U,2)
     28 . . I TYP="M" S:'FID FID=1001
     29 . . S LST(SEQ)=ITM_";"_FID_";"_DGRP_";"_TYP_U_TXT
     30 Q
     31DELPI ; delete PI from ORDIALOG if PI = ""
     32 ;Called from SAVE^ORWDX
     33 N ORPI S ORPI=0
     34 S ORPI=$O(^ORD(101.41,"B","OR GTX PATIENT INSTRUCTIONS",ORPI))
     35 Q:'$D(ORDIALOG(ORPI))
     36 I '$D(ORDIALOG(ORPI,1)) K ORDIALOG(ORPI),ORDIALOG("WP",ORPI) Q
     37 N PINODE,PITX
     38 S PITX="",PINODE=$G(ORDIALOG(ORPI,1))
     39 S PITX=$G(@PINODE@(1,0))
     40 S PITX=$TR(PITX," ","")
     41 I '$L(PITX) K ORDIALOG(ORPI),ORDIALOG("WP",ORPI)
     42 Q
     43FNDINFO(Y,ODIEN) ;
     44 N ODI,CRTM,FRM,XX
     45 S FRM="",CRTM=$$NOW^XLFDT
     46 F  S FRM=$O(^ORD(101.43,XRF,FRM)) Q:FRM=""  D
     47 . S ODI=0 F  S ODI=$O(^ORD(101.43,XRF,FRM,ODI)) Q:'ODI  D
     48 .. S XX=^ORD(101.43,XRF,FRM,ODI)
     49 .. I +$P(XX,U,3),$P(XX,U,3)<CRTM Q
     50 .. I ODI=ODIEN D
     51 ... S NM=NM+1
     52 ... I 'XX S Y(NM)=ODIEN_U_$P(XX,U,2)_U_$P(XX,U,2)
     53 ... E  S Y(NM)=ODIEN_U_$P(XX,U,2)_$C(9)_"<"_$P(XX,U,4)_">"_U_$P(XX,U,4)
     54 Q
     55DLGDEF(LST,DLG) ; Format mapping for a dlg
     56 N I,IEN,ILST,X0,X2,XW  S ILST=0
     57 I $O(^ORD(101.41,"AB",DLG,0))>0 S DLG=$O(^ORD(101.41,"AB",DLG,0))
     58 E  S DLG=$O(^ORD(101.41,"B",DLG,0))
     59 Q:'DLG
     60 S I=0 F  S I=$O(^ORD(101.41,DLG,10,I)) Q:I'>0  D
     61 . S X0=$G(^ORD(101.41,DLG,10,I,0)),X2=$G(^(2)),IEN=+$P(X0,U,2)
     62 . S ILST=ILST+1,LST(ILST)=U_IEN_U_$P(X2,U,1,7)
     63 . I $P(X0,U,11) S $P(LST(ILST),U,11)=1
     64 . S $P(LST(ILST),U)=$P($G(^ORD(101.41,IEN,1)),U,3)
     65 . I $P($G(^ORD(101.41,IEN,0)),U)="OR GTX ADDITIVE" S $P(LST(ILST),U)="ADDITIVE"
     66 . I $P($G(^ORD(101.41,IEN,0)),U)="OR GTX ADDL DIETS" S $P(LST(ILST),U)="ADDLDIETS"
     67 . I $L($P(LST(ILST),U))=0 S $P(LST(ILST),U)="ID"_IEN
     68 . I $D(^ORD(101.41,DLG,10,"DAD",IEN)) D
     69 .. N SEQ,DA,CHILD S CHILD=""
     70 .. S SEQ=0 F  S SEQ=$O(^ORD(101.41,DLG,10,"DAD",IEN,SEQ)) Q:'SEQ  D
     71 ... S DA=0 F  S DA=$O(^ORD(101.41,DLG,10,"DAD",IEN,SEQ,DA)) Q:'DA  D
     72 .... S CHILD=CHILD_+$P($G(^ORD(101.41,DLG,10,DA,0)),U,2)_"~"
     73 .. S $P(LST(ILST),U,10)=CHILD
     74 Q
     75 ;
     76CHANGE(ORLST,ORCLST,DFN) ;
     77 N CATCH,CNT,INP,INPDIEN,IVM,IVMDIEN,ORIEN,ORLOC,OR3,ORDG
     78 N CIEN,DIAL,TDIAL,TDIEN,UDIEN,QORDDG
     79 S (INP,IVM,INPDIEN,IVMDIEN,UDIEN)=0
     80 S (TDIAL,TDIEN)=0
     81 S INP=$O(^ORD(101.41,"B","PSJ OR PAT OE","")) Q:INP'>0
     82 S IVM=$O(^ORD(101.41,"B","PSJI OR PAT FLUID OE","")) Q:IVM'>0
     83 S TDIAL=$O(^ORD(101.41,"B","OR GXTEXT WORD PROCESSING ORDE","")) Q:TDIAL'>0
     84 S INPDIEN=$O(^ORD(100.98,"B","INPATIENT MEDICATIONS","")) Q:INPDIEN'>0
     85 S IVMDIEN=$O(^ORD(100.98,"B","IV MEDICATIONS","")) Q:IVMDIEN'>0
     86 S UDIEN=$O(^ORD(100.98,"B","UNIT DOSE MEDICATIONS","")) Q:UDIEN'>0
     87 S TIEN=$O(^ORD(100.98,"B","NURSING","")) Q:TIEN'>0
     88 S CIEN=$O(^ORD(100.98,"B","CLINIC ORDERS","")) Q:CIEN'>0
     89 S CNT=0 F  S CNT=$O(ORCLST(CNT)) Q:CNT'>0  D
     90 .S CHANGE=0
     91 .S ORIEN=$P($G(ORCLST(CNT)),U),ORIEN=$P(ORIEN,";")
     92 .S ORDG=$P($G(^OR(100,ORIEN,0)),U,11)
     93 .I ORDG'=INPDIEN,ORDG'=IVMDIEN,ORDG'=UDIEN,ORDG'=TIEN,ORDG'=CIEN Q
     94 .S ORLOC=$P($G(ORCLST(CNT)),U,2)
     95 .S OR3=$G(^OR(100,ORIEN,3))
     96 .S DIAL=$P(OR3,U,4)
     97 .
     98 .;
     99 .I $P($G(^OR(100,ORIEN,0)),U,10)=(ORLOC_";SC(") D  Q
     100 ..;Remove treating spec. if IMO order 26.42
     101 ..I $P($G(^OR(100,ORIEN,0)),U,11)=CIEN S $P(^OR(100,ORIEN,0),U,13)=""
     102 .;
     103 .;CHANGE PATIENT LOCATION AND PATIENT STATUS.
     104 .S $P(^OR(100,ORIEN,0),U,10)=ORLOC_";SC("
     105 .S $P(^OR(100,ORIEN,0),U,12)="I"
     106 .;
     107 .;Check for IMO orders Nursing Dialog problem
     108 .S CATCH=$P($G(^OR(100,ORIEN,0)),U,11)
     109 .;
     110 .S $P(^OR(100,ORIEN,0),U,11)=$S(DIAL=(IVM_";ORD(101.41,"):IVMDIEN,DIAL=(INP_";ORD(101.41,"):INPDIEN,DIAL=(TDIAL_";ORD(101.41,"):TIEN,1:CATCH)
     111 .;
     112 .;Check for Quick Order Dialog
     113 .I CATCH=$P($G(^OR(100,ORIEN,0)),U,11) D
     114 ..S QORDDG=$P($G(^ORD(101.41,+DIAL,0)),U,5)
     115 ..I QORDDG=UDIEN!(QORDDG=INPDIEN) S $P(^OR(100,ORIEN,0),U,11)=INPDIEN,DIAL=(INP_";ORD(101.41,") Q
     116 ..I QORDDG=IVMDIEN S $P(^OR(100,ORIEN,0),U,11)=IVMDIEN,DIAL=(IVM_";ORD(101.41,") Q
     117 ..I QORDDG=TIEN S $P(^OR(100,ORIEN,0),U,11)=TIEN,DIAL=(TDIAL_";ORD(101.41,") Q
     118 .;
     119 .;Add treating spec if Inpatient order
     120 .I (DIAL=(IVM_";ORD(101.41,"))!(DIAL=(INP_";ORD(101.41,")) D
     121 ..S $P(^OR(100,ORIEN,0),U,13)=+$G(^DPT(DFN,.103))
     122 Q
     123 ;
     124STCHANGE(ORY,DFN,ORYARR) ;
     125 N CNT,DONE,NODE,PHARMID,STR,STATUS
     126 S ORY=0,DONE=0
     127 I '$$PATCH^XPDUTL("PSS*1.0*93") Q
     128 S CNT=0 F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0!(DONE>0)  D
     129 . S NODE=$G(ORYARR(CNT))
     130 . S PHARMID=$P(NODE,U),STATUS=$P(NODE,U,2)
     131 . I $$UP^XLFSTR(STATUS)'=$$STATUS^PSSORUTE(DFN,PHARMID) S ORY=1,DONE=1
     132 Q
     133DCREN(ORY,ORYARR) ;
     134 N ACT,CNT,CNT1,I,OR3,ORG,ORGID,ORID,TEXT,STATUS
     135 S CNT1=0
     136 S CNT=0 F  S CNT=$O(ORYARR(CNT)) Q:CNT'>0  D
     137 .S ORGID=ORYARR(CNT)
     138 .S ORID=+ORGID,ACT=$P(ORGID,";",2),TEXT=""
     139 .S OR3=$G(^OR(100,ORID,3))
     140 .;Make sure current order status is pending
     141 .I $P($G(^ORD(100.01,$P(OR3,U,3),0)),U)'="PENDING" Q
     142 .S ORG=$P($G(OR3),U,5) Q:ORG'>0
     143 .;do not add original order if it is expired
     144 .S STATUS=$P(^OR(100,ORG,3),U,3)
     145 .I $P($G(^ORD(100.01,STATUS,0)),U)="EXPIRED" Q
     146 .;make sure current order is a renewed order
     147 .I $P(OR3,U,11)'=2 Q
     148 .S ACT=+$P($G(^OR(100,ORG,3)),U,7)
     149 .S CNT1=CNT1+1,ORY(CNT1)=ORGID_U_$P(OR3,U,5)_";"_ACT_U_TEXT
     150 Q
     151PATWARD(ORY,DFN) ;
     152 S ORY=0
     153 I $G(^DPT(DFN,.1))'="" S ORY=1
     154 Q
     155ISPEND(ORIFN) ;Is the order's status pending?
     156 N ISPEND,PENDST,N3 S ISPEND=0
     157 Q:'$D(^OR(100,+ORIFN,3))
     158 S PENDST=$O(^ORD(100.01,"B","PENDING",0))
     159 S N3=$G(^OR(100,+ORIFN,3))
     160 I $P(N3,U,3)=PENDST S ISPEND=1
     161 Q ISPEND
Note: See TracChangeset for help on using the changeset viewer.