ORBPRCHK	; SLC/JMH - API to return who gets notifications TAKEN FROM ORB3;
	;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242
CHECK(ORPERS,ORNUM,ORN,ORBDFN)	; returns 1 if ORPERS should get the alert
	N ORRET,ORY
	D START(.ORRET,ORNUM,ORN,ORBDFN)
	S ORY=$S($D(ORRET(ORPERS)):1,1:0)
	Q ORY
START(ORRET,ORNUM,ORN,ORBDFN)	;
	Q:$G(ORN)=""!($G(ORBDFN)="")
	Q:'$L($G(^ORD(100.9,ORN,0)))
	N ORBNOW,ORBID,ORBLOCK,ORBDESC
	S ORBNOW=$$NOW^XLFDT
	N ORBDUZ,ORBN,ORBXQAID,ORPTNAM,ORBPRIM,ORBATTD,ORBDEV,ORBENT
	N XQA,VAIN,VADM,DIC,ORBPDATA,ORBPMSG,VA,VA200,VAERR,X,Y
	N ORBUI,ORBASPEC,ORBSMSG,ORBADT,ORBSDEV,ORBDEL,ORBDI,ORBTDEV,ORY
	S ORBUI=1,ORBADT=0
	S:'$L($G(ORBPMSG)) ORBPMSG=""
	S ORBPDATA=+$G(ORNUM)_"@"
	S ORBN=^ORD(100.9,ORN,0)
	;
	S ORBENT=$$ENTITY^ORB31(ORNUM)
	D REGULAR^ORB3REG(ORN,.XQA,.ORBU,.ORBUI,.ORBDEV,ORBDFN)
	D SPECIAL^ORB3SPEC(ORN,.ORBASPEC,.ORBU,.ORBUI,$G(ORNUM),ORBDFN,$G(ORBPDATA),.ORBSMSG,$G(ORBPMSG),.ORBSDEV,$G(ORBPRIM),$G(ORBATTD))
	I $D(ORBASPEC)>1 D SPECDUZS ;special recips
	I $D(ORBADUZ)>1 D PKGDUZS ;pkg-supplied recips
	D TITLE ;provider recips
	M ORRET=XQA
	Q
PKGDUZS	;get DUZs from pkg-passed ORBADUZ() array
	N ORBPDUZ
	S ORBPDUZ=""
	F  S ORBPDUZ=$O(ORBADUZ(ORBPDUZ)) Q:ORBPDUZ=""  S ORBDUZ=ORBPDUZ D USER
	Q
SPECDUZS	;get DUZs rtn by SPECIAL^ORB3SPEC
	N ORBSDUZ
	S ORBSDUZ=""
	F  S ORBSDUZ=$O(ORBASPEC(ORBSDUZ)) Q:ORBSDUZ=""  S ORBDUZ=ORBSDUZ D USER
	Q
TITLE	;get provider recips
	N TITLES
	S TITLES=$$GET^XPAR(ORBENT,"ORB PROVIDER RECIPIENTS",ORN,"I")
	I TITLES["P" D PRIMARY
	I TITLES["A" D ATTEND
	I TITLES["T" D TEAMS
	I TITLES["O" D ORDERER
	I TITLES["E" D ENTERBY
	I TITLES["R" D PCMMPRIM
	I TITLES["S" D PCMMASSC
	I TITLES["M" D PCMMTEAM
	Q
PRIMARY	;
	I +$G(ORBPRIM)>0 S ORBDUZ=ORBPRIM D USER
	Q
ATTEND	;
	I +$G(ORBATTD)>0 S ORBDUZ=ORBATTD D USER
	Q
TEAMS	;
	N ORBLST,ORBI,ORBJ,ORBTM,ORBTNAME,ORBTTYPE,ORBTD
	D TMSPT^ORQPTQ1(.ORBLST,ORBDFN)
	Q:+$G(ORBLST(1))<1
	S ORBI="" F  S ORBI=$O(ORBLST(ORBI)) Q:ORBI=""  D
	.S ORBTM=$P(ORBLST(ORBI),U),ORBTNAME=$P(ORBLST(ORBI),U,2)
	.S ORBTTYPE=$P(ORBLST(ORBI),U,3)
	.I $D(ORBU) D
	..S ORBU(ORBUI)="  Patient list "_ORBTNAME_" ["_ORBTTYPE_"]:",ORBUI=ORBUI+1
	.N ORBLST2 D TEAMPROV^ORQPTQ1(.ORBLST2,ORBTM)
	.Q:+$G(ORBLST2(1))<1
	.S ORBJ="" F  S ORBJ=$O(ORBLST2(ORBJ)) Q:ORBJ=""  D
	..S ORBDUZ=$P(ORBLST2(ORBJ),U)_U_ORBTM I +$G(ORBDUZ)>0 D USER
	.;
	.S ORBTD=$P($$TMDEV^ORB31(ORBTM),U,2)  ;Team's device
	.I $L(ORBTD) D
	..S ORBTDEV(ORBTD)=""
	..I $D(ORBU) D
	...S ORBU(ORBUI)="   Team's Device "_ORBTD_" is a recipient",ORBUI=ORBUI+1
	Q
ORDERER	;
	Q:+$G(ORNUM)<1
	I $D(ORBU) S ORBU(ORBUI)=" Ordering provider:",ORBUI=ORBUI+1
	N ORBLST,ORBI,ORBTM,ORBJ,ORBTNAME,ORBPLST,ORBPI,ORBPTM,ORBTTYPE
	S ORBDUZ=$S(ORN=12:+$$UNSIGNOR^ORQOR2(ORNUM),1:$$ORDERER^ORQOR2(ORNUM))
	I +$G(ORBDUZ)>0 D
	.D USER
	.;if notif = Order Req E/S (#12) or Order Req Co-sign (#37) and
	.;user doesn't have ES authority, send to fellow team members w/ES:
	.I ((ORN=12)!(ORN=37)),('$D(^XUSEC("ORES",ORBDUZ))) D
	..I $D(ORBU) S ORBU(ORBUI)=" Orderer can't elec sign, getting teams orderer belongs to:",ORBUI=ORBUI+1
	..D TEAMPR^ORQPTQ1(.ORBLST,ORBDUZ)  ;get orderer's tms
	..Q:+$G(ORBLST(1))<1
	..D TMSPT^ORQPTQ1(.ORBPLST,ORBDFN)  ;get pt's tms
	..Q:+$G(ORBPLST(1))<1
	..S ORBI="" F  S ORBI=$O(ORBLST(ORBI)) Q:ORBI=""  D
	...S ORBPI="" F  S ORBPI=$O(ORBPLST(ORBPI)) Q:ORBPI=""  D
	....S ORBTM=$P(ORBLST(ORBI),U),ORBPTM=$P(ORBPLST(ORBPI),U)
	....I ORBTM=ORBPTM D  ;if pt is on provider's team
	.....I +$G(ORBPTM)>0 D
	......S ORBTNAME=$P(ORBPLST(ORBPI),U,2)
	......S ORBTTYPE=$P(ORBPLST(ORBPI),U,3)
	......I $D(ORBU) S ORBU(ORBUI)="  Orderer's pt list "_ORBTNAME_" ["_ORBTTYPE_"] recipients: ",ORBUI=ORBUI+1
	......N ORBLST2 D TEAMPROV^ORQPTQ1(.ORBLST2,ORBPTM)
	......Q:+$G(ORBLST2(1))<1
	......S ORBJ="" F  S ORBJ=$O(ORBLST2(ORBJ)) Q:ORBJ=""  D
	.......S ORBDUZ=$P(ORBLST2(ORBJ),U)_U_ORBPTM I +$G(ORBDUZ)>0,($D(^XUSEC("ORES",+ORBDUZ))) D USER
	Q
ENTERBY	;
	I $D(ORBU) S ORBU(ORBUI)=" User entering order's most recent activity:",ORBUI=ORBUI+1
	Q:+$G(ORNUM)<1
	I $D(^OR(100,ORNUM,8,0)) D
	.S ORBDUZ=$P(^OR(100,ORNUM,8,$P(^OR(100,ORNUM,8,0),U,3),0),U,13)
	I +$G(ORBDUZ)>0 D USER
	Q
PCMMPRIM	;
	I $D(ORBU) S ORBU(ORBUI)=" PCMM Primary Care Practitioner:",ORBUI=ORBUI+1
	S ORBDUZ=+$$OUTPTPR^SDUTL3(ORBDFN,$$NOW^XLFDT,1)  ;DBIA #1252
	I +$G(ORBDUZ)>0 D USER
	Q
PCMMASSC	;
	I $D(ORBU) S ORBU(ORBUI)=" PCMM Associate Provider:",ORBUI=ORBUI+1
	S ORBDUZ=+$$OUTPTAP^SDUTL3(ORBDFN,$$NOW^XLFDT)  ;DBIA #1252
	I +$G(ORBDUZ)>0 D USER
	Q
PCMMTEAM	;
	N ORPCMM,ORPCMMDZ
	I $D(ORBU) S ORBU(ORBUI)=" PCMM Team Position Assignments:",ORBUI=ORBUI+1
	S ORPCMM=$$PRPT^SCAPMC(ORBDFN,,,,,,"^TMP(""ORPCMM"",$J)",)  ;DBIA #1916
	S ORPCMMDZ=0
	F  S ORPCMMDZ=$O(^TMP("ORPCMM",$J,"SCPR",ORPCMMDZ)) Q:'ORPCMMDZ  D
	.S ORBDUZ=ORPCMMDZ D USER
	K ^TMP("ORPCMM",$J)
	Q
USER	;should USER (ORBDUZ) be a recip
	I $P($$ONOFF^ORB3USER(ORN,+ORBDUZ,ORBDFN,,ORNUM),U)="ON" S XQA(+ORBDUZ)=""
	Q
