Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ORCSEND1

ORCSEND1.m

Go to the documentation of this file.
  1. ORCSEND1 ;SLC/MKB - Release cont ;Aug 31, 2020@16:02:49
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**4,29,45,61,79,94,116,138,158,149,187,215,243,282,323,394,435,507,405**;Dec 17, 1997;Build 211
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. ;Reference to PSJEEU supported by IA #486
  1. ;Reference to PSJORPOE supported by IA #3167
  1. ;
  1. PKGSTUFF(PKG) ; Package code
  1. S PKG=$$GET1^DIQ(9.4,+PKG_",",1) Q:'$L(PKG)
  1. D:$L($T(@PKG)) @PKG
  1. Q
  1. LR ; Spawn child orders if continuous schedule
  1. N ORSTRT,ORPARENT,OR0,ORNP,ORDIALOG,ORL,ORX,ORTIME,ORPITEM,ORPSAMP,ORPSPEC,ORPURG,ORPCOMM,ORPTYPE,ORPCOLL,ORS1,ORS2,P,ORCHLD,ORDG,ORLAST,ORDUZ,ORLOG,ORCOLLCT,STS
  1. S ORPARENT=+ORIFN,OR0=$G(^OR(100,ORIFN,0)),ORL=$P(OR0,U,10)
  1. D SCHEDULE(ORIFN,"LR",.ORSTRT) I ORSTRT'>1 D Q
  1. . N START S START=$O(ORSTRT(0)) Q:START=$P($G(^OR(100,+ORIFN,0)),U,8)
  1. . D DATES^ORCSAVE2(+ORIFN,START) ;update start date from schedule
  1. S ORNP=+$P(OR0,U,4),ORDIALOG=+$P(OR0,U,5),ORDUZ=+$P(OR0,U,6),ORLOG=$P(OR0,U,7),ORDG=+$P(OR0,U,11)
  1. D GETDLG1^ORCD(ORDIALOG),GETORDER(ORIFN),GETIMES^ORCDLR1
  1. K ORDIALOG($$PTR^ORCD("OR GTX ADMIN SCHEDULE"),1),ORDIALOG($$PTR^ORCD("OR GTX DURATION"),1)
  1. S ORPITEM=$$PTR^ORCD("OR GTX ORDERABLE ITEM")
  1. S ORPSAMP=$$PTR^ORCD("OR GTX COLLECTION SAMPLE")
  1. S ORPSPEC=$$PTR^ORCD("OR GTX SPECIMEN")
  1. S ORPURG=$$PTR^ORCD("OR GTX LAB URGENCY")
  1. S ORPCOMM=$$PTR^ORCD("OR GTX WORD PROCESSING 1")
  1. S ORPTYPE=$$PTR^ORCD("OR GTX COLLECTION TYPE")
  1. S ORPCOLL=$$PTR^ORCD("OR GTX START DATE/TIME")
  1. LR1 N ORLASTC S ORS1=0 F S ORS1=$O(ORX(ORS1)) Q:ORS1'>0 D
  1. . N ORL S ORL=$P(OR0,U,10) ;protect ORL from calling routine ;DJE/VM *323
  1. . F P=ORPITEM,ORPSAMP,ORPSPEC,ORPURG,ORPCOMM,ORPTYPE S ORDIALOG(P,1)=$G(ORX(ORS1,P)) ;set values to next instance
  1. . S ORCOLLCT=$G(ORDIALOG(ORPTYPE,1))
  1. . S ORS2=0 F S ORS2=$O(ORSTRT(ORS2)) Q:ORS2'>0 D
  1. .. S ORDIALOG(ORPCOLL,1)=ORS2 ;,ORDUZ=DUZ,ORLOG=+$E($$NOW^XLFDT,1,12)
  1. .. I ORCOLLCT="LC" S ORDIALOG(ORPTYPE,1)=$S($$LABCOLL^ORCDLR1(ORS2):"LC",1:"WC")
  1. .. I ORCOLLCT="I" S ORDIALOG(ORPTYPE,1)=$S($$IMMCOLL^ORCDLR1(ORS2):"I",1:"WC")
  1. .. D CHILD^ORCSEND3()
  1. .. S ORLASTC=$P(^OR(100,ORIFN,0),"^",8)
  1. . D DATES^ORCSAVE2(ORPARENT,,ORLASTC) S:$G(NATURE)'="V" $P(^OR(100,ORPARENT,3),"^",8)=1 ;p394 exclude parent verbal order from veiling
  1. S:$G(ORCHLD) ^OR(100,ORPARENT,2,0)="^100.002PA^"_ORLAST_U_ORCHLD
  1. S ORIFN=ORPARENT,ORQUIT=1,STS=$P(^OR(100,ORIFN,3),U,3)
  1. I (STS=1)!(STS=13)!(STS=11) S ORERR="1^Unable to release orders"
  1. D RELEASE^ORCSAVE2(ORPARENT,1,ORNOW,DUZ,$G(NATURE))
  1. Q
  1. SCHEDULE(IFN,PKG,ORY,STRT) ; Returns list of start time(s) from schedule
  1. N I,X,PSJSD,PSJFD,PSJW,PSJNE,PSJPP,PSJX,PSJAT,PSJM,PSJTS,PSJY,PSJAX,PSJSCH,PSJOSD,PSJOFD,PSJC,ORDUR
  1. S PSJSD=$S(+$G(STRT):STRT,1:$P($G(^OR(100,+IFN,0)),U,8)) I 'PSJSD S ORY=-1 Q
  1. S ORY=1,ORY(PSJSD)="" ;1st occurrence
  1. S I=$O(^OR(100,+IFN,4.5,"ID","SCHEDULE",0)) Q:'I Q:'$L($G(PKG))
  1. S X=$G(^OR(100,+IFN,4.5,I,1)),PSJX=$S(X:$$GET1^DIQ(51.1,+X_",",.01),1:X)
  1. S PSJW=+$G(ORL),PSJNE="",PSJPP=PKG D ENSV^PSJEEU Q:'$L($G(PSJX))
  1. I $G(PSJTS)'="C",$G(PSJTS)'="D" Q ;not continuous or day-of-week
  1. S PSJSCH=PSJX,I=$O(^OR(100,+IFN,4.5,"ID","DAYS",0)) Q:'I
  1. S ORDUR=$G(^OR(100,+IFN,4.5,+I,1))
  1. S:ORDUR PSJFD=$$FMADD^XLFDT(PSJSD,+ORDUR,,-1)
  1. I 'ORDUR S X=+$E(ORDUR,2,9) D
  1. . I PSJM S PSJFD=$$FMADD^XLFDT(PSJSD,,,(PSJM*X)-1) ;X_#times
  1. . E D ;no freq in minutes --> day of week
  1. .. N DAYS,LOCMX,SCHMX
  1. .. S LOCMX=$$GET^XPAR("ALL^LOC.`"_+ORL,"LR MAX DAYS CONTINUOUS",1,"Q")
  1. .. K ^TMP($J,"ORCSEND1 SCHEDULE")
  1. .. D ZERO^PSS51P1(PSJY,,,,"ORCSEND1 SCHEDULE")
  1. .. S SCHMX=+$G(^TMP($J,"ORCSEND1 SCHEDULE",PSJY,2.5))
  1. .. K ^TMP($J,"ORCSEND1 SCHEDULE")
  1. .. ;S SCHMX=$P(^PS(51.1,PSJY,0),U,7)
  1. .. S DAYS=$S('SCHMX:LOCMX,LOCMX<SCHMX:LOCMX,1:SCHMX)
  1. .. S PSJFD=$$FMADD^XLFDT(PSJSD,DAYS,,-1)
  1. D ENSPU^PSJEEU K ORY
  1. I ORDUR M ORY=PSJC Q
  1. S ORY=$S(PSJC<$E(ORDUR,2,9):PSJC,1:$E(ORDUR,2,9))
  1. N NXT
  1. S NXT=0 F I=1:1:ORY S NXT=$O(PSJC(NXT)) Q:'NXT S ORY(NXT)=PSJC(NXT)
  1. Q
  1. GETORDER(IFN) ; Set ORX(Inst,Ptr)=Value
  1. N I,X,Y,PTR,INST,TYPE
  1. S I=0 F S I=$O(^OR(100,IFN,4.5,I)) Q:I'>0 S X=$G(^(I,0)),Y=$G(^(1)) D
  1. . S PTR=+$P(X,U,2),INST=+$P(X,U,3),TYPE=$P($G(^ORD(101.41,PTR,1)),U)
  1. . I TYPE'="W" S ORX(INST,PTR)=Y Q
  1. . S ORX(INST,PTR)="^OR(100,"_IFN_",4.5,"_I_",2)"
  1. Q
  1. PTR(X) ; Returns ptr of prompt X in Order Dialog file
  1. Q +$O(^ORD(101.41,"AB",$E("OR GTX "_X,1,63),0))
  1. PS ; spawn child orders if multiple doses
  1. PSJ ; (Inpt only)
  1. PSS ;
  1. N ORPARENT,OR0,ORNP,ORDIALOG,ORDUZ,ORLOG,ORL,ORDG,ORCAT,ORX,ORP,ORI,STS
  1. N ORDOSE,ORT,ORSCH,ORDUR,ORSTRT,ORFRST,ORCONJ,ORID,ORDD,ORSTR,ORDGNM
  1. N ORSTART,ORCHLD,ORLAST,ORSIG,OROI,ID,OR3,ORIG,CODE,ORPKG,ORENEW,I,ORADMIN,INDICATN,IND
  1. S ORPARENT=+ORIFN,OR0=$G(^OR(100,ORPARENT,0)),OR3=$G(^(3))
  1. Q:$P(OR0,U,12)'="I" S ORCAT="I",ORNP=+$P(OR0,U,4)
  1. S ORDIALOG=+$P(OR0,U,5),ORDUZ=+$P(OR0,U,6),ORLOG=$P(OR0,U,7)
  1. S ORL=$P(OR0,U,10),ORDG=+$P(OR0,U,11),ORPKG=+$P(OR0,U,14)
  1. D GETDLG1^ORCD(ORDIALOG),GETORDER(ORPARENT)
  1. S ORDOSE=$$PTR("INSTRUCTIONS"),ORT=$$PTR("ROUTE")
  1. S ORSCH=$$PTR("SCHEDULE"),ORDUR=$$PTR("DURATION")
  1. S ORCONJ=$$PTR("AND/THEN") D STRT S ORSTART=$G(ORSTRT("BEG"))
  1. S ORADMIN=$$PTR("ADMIN TIMES")
  1. D DATES^ORCSAVE2(ORPARENT,ORSTART) Q:$$DOSES(ORPARENT)'>1
  1. S ORFRST=$$PTR("NOW"),ORSIG=$$PTR("SIG")
  1. S ORID=$$PTR("DOSE"),ORDD=$$PTR("DISPENSE DRUG")
  1. S ORSTR=$$PTR("STRENGTH"),ORDGNM=$$PTR("DRUG NAME")
  1. S INDICATN=$$PTR("INDICATION") ;*405-IND
  1. I $P(OR3,U,11)=2,$O(^OR(100,+$P(OR3,U,5),2,0)) D
  1. . S ORENEW=+$P(OR3,U,5),I=0
  1. . I $$VALUE^ORX8(ORENEW,"NOW") S I=$O(^OR(100,ORENEW,2,0))
  1. . F S I=$O(^OR(100,ORENEW,2,I)) Q:I<1 S ORENEW(I)=""
  1. PS1 F ORP="ORDERABLE ITEM","URGENCY","WORD PROCESSING 1","INDICATION" D ;*405-IND
  1. . N PTR S PTR=$$PTR(ORP) Q:PTR'>0 Q:'$D(ORX(1,PTR))
  1. . S ORDIALOG(PTR,1)=ORX(1,PTR) S:$E(ORP)="O" OROI=ORX(1,PTR)
  1. S ORI=$$FRSTDOSE I $G(ORX(1,ORFRST)) D
  1. . F ORP=ORDOSE,ORT,ORID S:$D(ORX(ORI,ORP)) ORDIALOG(ORP,1)=ORX(ORI,ORP)
  1. . S ID=$G(ORX(ORI,ORID)) S:$P(ID,"&",6) ORDIALOG(ORDD,1)=$P(ID,"&",6)
  1. . S ORDIALOG(ORSCH,1)="NOW",ORSTART=$$NOW^XLFDT
  1. . N ORPRR,ORPRA,ORURG
  1. . S ORURG=$$PTR("URGENCY")
  1. . S ORPRR=$O(^ORD(101.42,"B","ROUTINE",0))
  1. . S ORURGID=0,ORURGID=$O(^OR(100,ORIFN,4.5,"ID","URGENCY",ORURGID))
  1. . I $D(^ORD(101.42,"B","ASAP")) S ORPRA=$O(^ORD(101.42,"B","ASAP",0))
  1. . I '$D(^ORD(101.42,"B","ASAP")) S ORPRA=$$GET^XPAR("ALL","ORDER URGENCY ASAP ALTERNATIVE")
  1. . S:'$G(ORURGID)&$D(^OR(100,ORIFN,4.5,"ID","NOW")) ORURGR=ORPRA,ORDIALOG(ORURG,1)=ORPRA ;RTW
  1. . S:$G(ORURGID) ORURGR=$P(^OR(100,ORIFN,4.5,ORURGID,1),U,1)
  1. . S:ORPRA'=ORURGR ORPRA=ORURGR
  1. . I ORDIALOG(ORURG,1)=ORPRR S ORDIALOG(ORURG,1)=ORPRA
  1. . D SIG,CHILD^ORCSEND3(ORSTART)
  1. S IND=$G(ORX(1,INDICATN)) ;405-IND
  1. F D S ORI=$O(ORX(ORI)) Q:ORI'>0
  1. . I ORI>1,IND]"" S ORX(ORI,INDICATN)=IND
  1. . F ORP=ORDOSE,ORT,ORSCH,ORDUR,ORID,ORADMIN S:$D(ORX(ORI,ORP)) ORDIALOG(ORP,1)=ORX(ORI,ORP) K:'$D(ORX(ORI,ORP)) ORDIALOG(ORP,1)
  1. . K ORDIALOG(ORDD,1) S ID=$G(ORX(ORI,ORID))
  1. . S:$P(ID,"&",6) ORDIALOG(ORDD,1)=$P(ID,"&",6)
  1. . S ORSTART=$G(ORSTRT(ORI))
  1. . I $G(ORX(1,ORFRST)) D
  1. . . N ORPRR,ORURG
  1. . . S ORURG=$$PTR("URGENCY")
  1. . . S ORPRR=$O(^ORD(101.42,"B","ROUTINE",0))
  1. . . S ORDIALOG(ORURG,1)=ORPRR
  1. . D SIG,CHILD^ORCSEND3(ORSTART)
  1. S:$G(ORCHLD) ^OR(100,ORPARENT,2,0)="^100.002PA^"_ORLAST_U_ORCHLD
  1. S ORIFN=ORPARENT,ORQUIT=1,OR3=$G(^OR(100,ORIFN,3)),STS=$P(OR3,U,3)
  1. I (STS=1)!(STS=13)!(STS=11) S ORERR="1^Unable to release orders"
  1. D RELEASE^ORCSAVE2(ORIFN,1,ORNOW,DUZ,$G(NATURE)) K ^TMP("ORWORD",$J)
  1. S $P(^OR(100,ORIFN,3),U,8)=1 ;veil parent order - set stop date/time?
  1. Q:(STS=1)!(STS=13)!(STS=11) ;unsuccessful
  1. PS2 ; ck if parent is unsigned or edit
  1. I $P($G(^OR(100,ORIFN,8,1,0)),U,4)=2 S $P(^(0),U,4)="" K ^OR(100,"AS",ORVP,9999999-ORLOG,ORIFN,1) ;clear ES
  1. Q:$P(OR3,U,11)'=1 S ORIG=$P(OR3,U,5) Q:ORIG'>0
  1. S CODE=$S($P($G(^OR(100,ORIG,3)),U,3)=5:"CA",1:"DC")
  1. D MSG^ORMBLD(ORIG,CODE) I "^1^13^"[(U_$P($G(^OR(100,ORIG,3)),U,3)_U) D
  1. . N NATR S NATR=+$O(^ORD(100.02,"C","C",0))
  1. . S $P(^OR(100,ORIG,3),U,3)=12,$P(^(3),U,7)=0,^(6)=NATR_U_DUZ_U_ORNOW
  1. . D CANCEL^ORCSEND(ORIG) ;ck for unrel actions
  1. Q
  1. DOSES(IFN) ; count number of doses in order
  1. N I,CNT S CNT=0
  1. S I=0 F S I=$O(^OR(100,+$G(IFN),4.5,"ID","INSTR",I)) Q:I'>0 I $L($G(^OR(100,+$G(IFN),4.5,I,1))) S CNT=CNT+1
  1. S I=+$O(^OR(100,+$G(IFN),4.5,"ID","NOW",0)) I I,$G(^OR(100,+$G(IFN),4.5,I,1)) S CNT=CNT+1
  1. Q CNT
  1. FRSTDOSE() ; Return instance of first dose
  1. N I,Y S I=0,Y=1
  1. F S I=$O(ORX(I)) Q:I'>0 I $D(ORX(I,ORDOSE)) S Y=I Q
  1. Q Y
  1. SIG ; Build text of instructions
  1. N ORDRUG,ID,DOSE,ORI,ORX K ^TMP("ORWORD",$J,ORSIG,1)
  1. S ORDRUG=$G(ORDIALOG(ORDD,1)),ID=$G(ORDIALOG(ORID,1))
  1. S DOSE=$G(ORDIALOG(ORDOSE,1)),ORI=1
  1. S ORX=$$DOSE^ORCDPS2_$$RTE^ORCDPS2_$$SCH^ORCDPS2_$$DUR^ORCDPS2
  1. S ^TMP("ORWORD",$J,ORSIG,1,0)="^^1^1^"_DT_U,^(1,0)=ORX
  1. S ORDIALOG(ORSIG,1)=$NA(^TMP("ORWORD",$J,ORSIG,1))
  1. S ORDIALOG(ORDOSE,"FORMAT")="@"
  1. K ORDIALOG(ORSTR,1),ORDIALOG(ORDGNM,1)
  1. I ORDRUG,'ID D ;set strength or drug name
  1. . N STR,ITM S STR=$P(ID,"&",7)_$P(ID,"&",8)
  1. . I STR'>0 S ORDIALOG(ORDGNM,1)=$$GET1^DIQ(50,+ORDRUG_",",.01) Q
  1. . S ITM=$P($G(^ORD(101.43,+$G(OROI),0)),U)
  1. . S:ITM'[STR ORDIALOG(ORSTR,1)=STR
  1. Q
  1. STRT ; Build ORSTRT(inst)=date.time array of start times by dose
  1. N OI,PSOI,XD,XH,XM,XS,ORWD,ORI,SCH,ORSD,X,ORNOW,ORSP,ORSTP,ORCNJ,ORCNJA,ADMTMN,ADMTM,DURA K ORSTRT
  1. S OI=$G(ORX(1,$$PTR^ORCD("OR GTX ORDERABLE ITEM")))
  1. S PSOI=+$P($G(^ORD(101.43,+OI,0)),U,2),(XD,XH,XM,XS)=0
  1. S ORWD=+$G(^SC(+$G(ORL),42)) ;ward
  1. S ORNOW=$$NOW^XLFDT
  1. S ADMTMN=$$PTR("ADMIN TIMES")
  1. S ORI=0 F S ORI=$O(ORX(ORI)) Q:ORI<1 D
  1. . S SCH=$G(ORX(ORI,ORSCH)),ORSD="" S:'$L(SCH) X=ORNOW
  1. . S ORCNJ=$G(ORX(ORI-1,ORCONJ)),ORCNJA=$$CNJCHK(ORI),ADMTM=$G(ORX(ORI,ADMTMN))
  1. . I ORCNJA!($L(SCH)&(ORI=1)) D
  1. . . S ORSD=$$STARTSTP^PSJORPOE(+ORVP,SCH,PSOI,ORWD,"",ADMTM,ORNOW),X=$P(ORSD,U,4)
  1. . ;Start Date calculation=1st Start Date: Use Current time or SCH; Subsequent Start Date: T CONJ/Stop Date, A CONJ/Start Date; p*507
  1. . S ORSTRT(ORI)=$S(ORI=1:X,ORCNJA:X,ORCNJ="T":$G(ORSTP(ORI-1)),1:ORSTRT(ORI-1))
  1. . S DURA=$$FMDUR^ORCDPS3($G(ORX(ORI,ORDUR)))
  1. . I DURA["M" S DURA=$TR(DURA,"M","L") ;convert month
  1. . S ORSTP=$$STOP(ORI,$G(ORSTRT(ORI))),ORSP=$S((DURA["H")&'(+DURA#24):$$STPADM(SCH,ADMTM,ORSTP),"MH'"[$P(DURA,+DURA,2):ORSTP,1:$$STPADM(SCH,ADMTM,ORSTP)),ORSTP(ORI)=ORSP
  1. ; find beginning date.time for parent
  1. S ORI=0,X=9999999 F S ORI=$O(ORSTRT(ORI)) Q:ORI<1 I ORSTRT(ORI)<X S X=ORSTRT(ORI)
  1. S ORSTRT("BEG")=X
  1. Q
  1. STOP(I,ORST) ; calculate STOP DATE; similar to PSJHL9; p*507
  1. N DURA,STOP
  1. S DURA=$$FMDUR^ORCDPS3($G(ORX(I,ORDUR))),DURA=$P(DURA,+DURA,2)_+DURA
  1. I DURA["M" S DURA=$TR(DURA,"M","L") D Q STOP
  1. . S STOP=$P($$SCH^XLFDT($P(DURA,"L",2)_"M",$P(ORST,".")),".")_"."_$P(ORST,".",2) ;convert month
  1. I DURA["W",DURA["." S DURA="H"_(($P(DURA,"W",2)*7)*24)
  1. I DURA["D",DURA["." S DURA="H"_($P(DURA,"D",2)*24)
  1. I +DURA=DURA,DURA["." S DURA="H"_(DURA*24)
  1. I DURA["'" S DURA="M"_$P(DURA,"'",2)
  1. S STOP=$$FMADD^XLFDT(ORST,$S(DURA["W":$P(DURA,"W",2)*7,DURA["D":$P(DURA,"D",2),+DURA=DURA:+DURA,1:""),$S(DURA["H":$P(DURA,"H",2),1:""),$S(DURA["M":$P(DURA,"M",2),1:""),$S(DURA["S":$P(DURA,"S",2),1:""))
  1. Q STOP
  1. STPADM(SCH,AT,STP) ; calculate STOP DATE based on admin schedule; similar to PSJHL9; p*507
  1. ;SCH - Schedule, AT - Admin times, STP - Stop Date
  1. N X,Y,ORTM,OND,ND,AT1
  1. S STP=+$FN(STP,"",4) S:SCH["PRN" AT=""
  1. I AT="" Q STP
  1. I AT?.N D Q AT1
  1. . S AT1=STP\1_"."_AT I $$FMDIFF^XLFDT(AT1,STP,2)<0 S AT1=$$FMADD^XLFDT(AT1,1) Q
  1. F Y=1:1 S AT1=$P(AT,"-",Y) Q:'AT1 S ND=STP\1_"."_AT1,ORTM(+ND)=""
  1. S ND="" F S ND=$O(ORTM(ND)) Q:'ND S X=$$FMDIFF^XLFDT(STP,ND,2) I X<1 S OND=ND Q
  1. I $D(ORTM),$G(OND)="" Q $O(ORTM(9999999),-1)
  1. Q $S($G(OND):OND,1:STP)
  1. CNJCHK(I) ;Check for A conjuction; p*507
  1. N OI,ORA
  1. S ORA=1
  1. F OI=1:1:I I $G(ORX(OI,ORCONJ))="T" S ORA=0 Q
  1. Q ORA
  1. DUR(I) ; Accumulate duration in ORD("Xt") for offsetting next THEN dose
  1. N X,Y S X=$$FMDUR^ORCDPS3($G(ORX(I,ORDUR)))
  1. I X["S",+X>$G(ORD("XS")) S ORD("XS")=+X
  1. I X["'",+X>$G(ORD("XM")) S ORD("XM")=+X
  1. I X["H",+X>$G(ORD("XH")) S ORD("XH")=+X
  1. S Y=$S(X["D":+X,X["W":+X*7,X["M":+X*30,1:0)
  1. I Y,Y>$G(ORD("XD")) S ORD("XD")=Y
  1. Q
  1. VBEC ; Spawn VBECS children
  1. D:$L($T(EN^ORCSEND2)) EN^ORCSEND2
  1. Q