Index: Scheduling/branches/Radiology-Support/m/BSDX01.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX01.m	(revision 1140)
+++ Scheduling/branches/Radiology-Support/m/BSDX01.m	(revision 1141)
@@ -1,3 +1,3 @@
-BSDX01	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 3/16/11 7:08am
+BSDX01	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/10/11 4:50pm
 	;;1.5V3;BSDX;;Mar 16, 2011
 	;
@@ -318,2 +318,33 @@
 	   I $$INDIV2(27)'=1 W "ERROR",!
 	   QUIT
+GETRADEX(BSDXY,DFN,SCIEN)
+ S BSDXY=$NA(^BMXTEMP($J))
+ K @BSDXY
+ N BSDXRLIEN S BSDXRLIEN=$ORDER(^RA(79.1,"B",SCIEN,""))  ; IEN of HL in file 79.1, to get Radiology Imaging IEN
+ I 'BSDXRLIEN QUIT  ; This will crash the client. Intentionally!!!!
+ N BSDXI S BSDXI=0
+ S @BSDXY@(BSDXI)="I00015BMXIEN^T00015STATUS^T00100PROCEDURE^D00030REQUEST_DATE"_$C(30)
+ N BSDXOUT,BSDXERR ; Out, Error
+ D LIST^DIC(75.1,"","@;5;2;16","P","","","","B","I $P(^(0),U)=DFN&(35[$P(^(0),U,5))&($P(^(0),U,20)=BSDXRLIEN)","","BSDXOUT","BSDXERR")
+ ;TODO: do something about BSDXERR
+ I +BSDXOUT("DILIST",0)>0 FOR BSDXI=1:1:+BSDXOUT("DILIST",0) DO
+ . N BMXIEN,BMXSTAUS,BMXPROC,BMXDATE ; Proc IEN, Proc Status, Proc Name
+ . S BMXIEN=$P(BSDXOUT("DILIST",BSDXI,0),U)
+ . S BMXSTATUS=$P(BSDXOUT("DILIST",BSDXI,0),U,2)
+ . S BMXPROC=$P(BSDXOUT("DILIST",BSDXI,0),U,3)
+ . S BMXDATE=$TR($P(BSDXOUT("DILIST",BSDXI,0),U,4),"@"," ")
+ . S @BSDXY@(BSDXI)=BMXIEN_U_BMXSTATUS_U_BMXPROC_U_BMXDATE_$C(30)
+ S @BSDXY@(BSDXI+1)=$C(31)
+ QUIT
+ ;
+SCHRAEX(BSDXY,RADFN,RAOIFN) ; Schedule a Radiology Exam
+ N RAOSTS S RAOSTS=8  ; Status of Scheduled
+ D ^RAORDU  ; API in Rad expects RADFN, RAOIFN, and RAOSTS
+ S BSDXY=1 ; Success
+ QUIT
+HOLDRAEX(BSDXY,RADFN,RAOIFN) ; Hold a Radiology Exam
+ N RAOSTS S RAOSTS=3  ; Status of Hold
+ N RAOREA S RAOREA=20 ; Reason: Exam Cancelled
+ D ^RAORDU
+ S BSDXY=1 ; Success
+ QUIT
Index: Scheduling/branches/Radiology-Support/m/BSDX02.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX02.m	(revision 1140)
+++ Scheduling/branches/Radiology-Support/m/BSDX02.m	(revision 1141)
@@ -1,8 +1,9 @@
-BSDX02	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 3/21/11 11:49am
+BSDX02	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/11/11 12:21pm
 	;;1.5V3;BSDX;;Mar 16, 2011
-	   ; 
-	   ; Change Log
-	   ; July 15 2010: UJO/SMH - Pass FM dates in instead of US dates for i18n
+	; 
+	; Change Log
+	; July 15 2010: UJO/SMH - Pass FM dates in instead of US dates for i18n
 	; March 21 2011: UJO/SMH (v 1.5) - Return new fields: Patient SEX, PID, and DOB
+	; April 11 2011: UJO/SMH (v 1.6) - Added Radiology Exam Field, to retrieve Radiology Exam associated with appt
 	;
 	;
@@ -29,5 +30,5 @@
 	S BSDXERR=""
 	S BSDXY="^BSDXTMP("_$J_")"
-	S ^BSDXTMP($J,0)="I00020APPOINTMENTID^D00030START_TIME^D00030END_TIME^D00030CHECKIN^D00030AUXTIME^I00020PATIENTID^T00030PATIENTNAME^T00030RESOURCENAME^I00005NOSHOW^T00020HRN^I00005ACCESSTYPEID^I00005WALKIN^T00250NOTE^T00006SEX^T00040PID^D00030DOB"_$C(30)
+	S ^BSDXTMP($J,0)="I00020APPOINTMENTID^D00030START_TIME^D00030END_TIME^D00030CHECKIN^D00030AUXTIME^I00020PATIENTID^T00030PATIENTNAME^T00030RESOURCENAME^I00005NOSHOW^T00020HRN^I00005ACCESSTYPEID^I00005WALKIN^T00250NOTE^T00006SEX^T00040PID^D00030DOB^I00020RADIOLOGY_EXAM"_$C(30)
 	D ^XBKVAR S X="ETRAP^BSDX02",@^%ZOSF("TRAP")
 	;
@@ -99,5 +100,6 @@
 	; Outputs it in MM/DD/YYYY format, which is ambigous for C#.
 	N DOB S DOB=$$FMTE^XLFDT($$GET1^DIQ(2,BSDXPATD,.03,"I"))  ; DOB
-	S ^BSDXTMP($J,BSDXI)=SEX_U_PID_U_DOB_$C(30)
+	N RADEX S RADEX=$P(BSDXNOD,U,14)
+	S ^BSDXTMP($J,BSDXI)=SEX_U_PID_U_DOB_U_RADEX_$C(30)
 	; end new code
 	Q
Index: Scheduling/branches/Radiology-Support/m/BSDX07.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX07.m	(revision 1140)
+++ Scheduling/branches/Radiology-Support/m/BSDX07.m	(revision 1141)
@@ -1,4 +1,4 @@
-BSDX07	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS  ; 3/15/11 11:50am
-	   ;;1.5V3;BSDX;;Mar 16, 2011
+BSDX07	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS  ; 4/11/11 12:12pm
+	   ;;1.6;BSDX;;Mar 16, 2011
 	   ;
 	   ; Change Log:
@@ -10,4 +10,5 @@
 	   ; v1.5  Mar 15 2011 - End time does not have to have time anymore.
 	   ;      It could be midnight of the next day
+	   ; v1.6 Apr 11 2011 - Support for Scheduling Radiology Exams...
 	   ;
 	   ; Error Reference:
@@ -78,5 +79,6 @@
 	   QUIT
 	   ; 
-APPADD(BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID)	;EP
+APPADD(BSDXY,BSDXSTART,BSDXEND,BSDXPATID,BSDXRES,BSDXLEN,BSDXNOTE,BSDXATID,BSDXRADEXAM)	;EP
+	   ;
 	   ;Called by RPC: BSDX ADD NEW APPOINTMENT
 	   ;
@@ -97,4 +99,5 @@
 	   ; if BSDXATID = "WALKIN" then BSDAPI is called to create a walkin appt.
 	   ; if BSDXATID = a number, then it is the access type id (used for rebooking)
+	   ;BSDXRADEXAM is used to store the Radiology Exam to which this appointment is tied to (optional)
 	   ;
 	   ;Return:
@@ -105,4 +108,6 @@
 	   ;BSDX ADD NEW APPOINTMENT^3091122.0930^3091122.1000^370^Dr Office^30^EXAM^WALKIN
 	   ;
+	   ; Deal with optional arguments
+	   S BSDXRADEXAM=$G(BSDXRADEXAM)
 	   ; Return Array; set Return and clear array
 	   S BSDXY=$NA(^BSDXTMP($J))
@@ -172,5 +177,5 @@
 	   ; Done with all checks, let's make appointment in BSDX APPOINTMENT
 	   N BSDXAPPTID
-	   S BSDXAPPTID=$$BSDXADD(BSDXSTART,BSDXEND,BSDXPATID,BSDXRESD,BSDXATID)
+	   S BSDXAPPTID=$$BSDXADD(BSDXSTART,BSDXEND,BSDXPATID,BSDXRESD,BSDXATID,BSDXRADEXAM)
 	   I 'BSDXAPPTID D ERR(BSDXI,"-9~BSDX07 Error: Unable to add appointment to BSDX APPOINTMENT file.") Q
 	   I BSDXNOTE]"" D BSDXWP(BSDXAPPTID,BSDXNOTE)
@@ -216,5 +221,5 @@
 	   Q BSDXZ
 	   ;
-BSDXADD(BSDXSTART,BSDXEND,BSDXPATID,BSDXRESD,BSDXATID)	 ;ADD BSDX APPOINTMENT ENTRY
+BSDXADD(BSDXSTART,BSDXEND,BSDXPATID,BSDXRESD,BSDXATID,BSDXRADEXAM)	 ;ADD BSDX APPOINTMENT ENTRY
 	   ;Returns ien in BSDXAPPT or 0 if failed
 	   ;Create entry in BSDX APPOINTMENT
@@ -228,4 +233,5 @@
 	   S:BSDXATID="WALKIN" BSDXFDA(9002018.4,"+1,",.13)="y"
 	   S:BSDXATID?.N BSDXFDA(9002018.4,"+1,",.06)=BSDXATID
+	   S BSDXFDA(9002018.4,"+1,",.14)=BSDXRADEXAM
 	   N BSDXIEN,BSDXMSG
 	   D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
Index: Scheduling/branches/Radiology-Support/m/BSDX28.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX28.m	(revision 1140)
+++ Scheduling/branches/Radiology-Support/m/BSDX28.m	(revision 1141)
@@ -1,3 +1,3 @@
-BSDX28	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 7/18/10 2:30pm
+BSDX28	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/10/11 2:34pm
 	;;1.5V3;BSDX;;Mar 16, 2011
 	; 
@@ -28,5 +28,13 @@
 	I '+$G(DUZ) S BSDXY=BSDXRET_$C(31) Q
 	I '$D(DUZ(2)) S BSDXY=BSDXRET_$C(31) Q
-	
+DFN ;If DFN is passed as `nnnn, just return that patient
+	I $E(BSDXP)="`" DO  SET BSDXY=BSDXRET_$C(31) QUIT
+	. N BSDXIEN S BSDXIEN=$E(BSDXP,2,99)
+	. I BSDXIEN'=+BSDXIEN QUIT  ; BSDXIEN must be numeric
+	. N NAME S NAME=$P(^DPT(BSDXIEN,0),U)
+	. N HRN S HRN=$P($G(^AUPNPAT(BSDXIEN,41,DUZ(2),0)),U,2)
+	. N PID S PID=$P(^DPT(BSDXIEN,.36),U,3)
+	. N DOB S DOB=$$FMTE^XLFDT($P(^DPT(BSDXIEN,0),U,3))
+	. S BSDXRET=BSDXRET_NAME_U_HRN_U_PID_U_DOB_U_BSDXIEN_$C(30)
 PID	;PID Lookup
 	   ; If this ID exists, go get it. If "UJOPID" index doesn't exist,
Index: Scheduling/branches/Radiology-Support/m/BSDX32.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX32.m	(revision 1140)
+++ Scheduling/branches/Radiology-Support/m/BSDX32.m	(revision 1141)
@@ -1,3 +1,3 @@
-BSDX32	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 9/29/10 10:21am
+BSDX32	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/7/11 12:30pm
 	;;1.5V3;BSDX;;Mar 16, 2011
 	;
@@ -28,5 +28,5 @@
 	S BSDXI=0
 	;"SELECT BSDXIEN 'HOSPITAL_LOCATION_ID', NAME 'HOSPITAL_LOCATION', DEFAULT_PROVIDER, STOP_CODE_NUMBER, INACTIVATE_DATE, REACTIVATE_DATE FROM HOSPITAL_LOCATION";
-	S ^BSDXTMP($J,BSDXI)="I00020HOSPITAL_LOCATION_ID^T00040HOSPITAL_LOCATION^T00030DEFAULT_PROVIDER^T00030STOP_CODE_NUMBER^D00020INACTIVATE_DATE^D00020REACTIVATE_DATE"_$C(30)
+	S ^BSDXTMP($J,BSDXI)="I00020HOSPITAL_LOCATION_ID^T00040HOSPITAL_LOCATION^T00030DEFAULT_PROVIDER^T00030STOP_CODE_NUMBER^D00020INACTIVATE_DATE^D00020REACTIVATE_DATE^T00001IS_RADIOLOGY_LOCATION"_$C(30)
 	;
 	S BSDXNAM="" F  S BSDXNAM=$O(^SC("B",BSDXNAM)) Q:BSDXNAM=""  D
@@ -49,6 +49,8 @@
 	. . . Q
 	. . Q
+	. ; Decide if this is a radiology location - Check "B" index of ^RA(79.1 global to see if HL is there
+	. N BSDXISRAD S BSDXISRAD=''$DATA(^RA(79.1,"B",BSDXIEN))
 	. S BSDXI=BSDXI+1
-	. S ^BSDXTMP($J,BSDXI)=BSDXIEN_U_BSDXNAM_U_BSDXPRV_U_BSDXSCOD_U_BSDXINA_U_BSDXREA_$C(30)
+	. S ^BSDXTMP($J,BSDXI)=BSDXIEN_U_BSDXNAM_U_BSDXPRV_U_BSDXSCOD_U_BSDXINA_U_BSDXREA_U_BSDXISRAD_$C(30)
 	. Q
 	S BSDXI=BSDXI+1
