Index: Scheduling/branches/Radiology-Support/m/BSDX01.m
===================================================================
--- Scheduling/branches/Radiology-Support/m/BSDX01.m	(revision 1166)
+++ Scheduling/branches/Radiology-Support/m/BSDX01.m	(revision 1167)
@@ -1,3 +1,3 @@
-BSDX01	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/10/11 4:50pm
+BSDX01	; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 5/5/11 8:59am
 	;;1.5V3;BSDX;;Mar 16, 2011
 	;
@@ -318,30 +318,68 @@
 	   I $$INDIV2(27)'=1 W "ERROR",!
 	   QUIT
-GETRADEX(BSDXY,DFN,SCIEN)
+	   ;
+GETRADEX(BSDXY,DFN,SCIEN) ; Get All Pending and On Hold Radiology Exams for Patient; RPC EP; UJO/SMH new in v 1.6
+ ; RPC: BSDX GET RAD EXAM FOR PT; Return: Global Array
+ ;
+ ; Input: DFN - you should know; SCIEN - IEN of Hospital Location
+ ; Output: ADO Datatable with the following columns:
+ ; - BMXIEN: Radiology Exam IEN in file 75.1 (RAD/NUC MED ORDERS)
+ ; - STATUS: Pending Or Hold Status
+ ; - PROCEDURE: Text Procedure Name
+ ; - REQUEST_DATE: Date Procedure was requested
+ ;
+ ; Error Processing: Silent failure. 
+ ;
  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 BSDXRLIEN S BSDXRLIEN=$ORDER(^RA(79.1,"B",SCIEN,""))  ; IEN of HL in file 79.1, to get Radiology Imaging IEN
+ I 'BSDXRLIEN GOTO END
+ ;
  N BSDXOUT,BSDXERR ; Out, Error
+ ;
+ ; File 75.1 = RAD/NUC MED ORDERS
+ ; Fields 5 = Request Status; 2 = Procedure; 16 = Requested Entered Date Time
+ ; Filter Field: First piece is DFN, 5th piece is 3 or 5 (Status of Pending Or Hold); 20th piece is Radiology Location requested
  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
+ ;
+ IF $DATA(BSDXERR) GOTO END
+ ;
+ I +BSDXOUT("DILIST",0)>0 FOR BSDXI=1:1:+BSDXOUT("DILIST",0) DO  ; if we have data, fetch the data in each row and store it in the return variable
  . 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 BMXIEN=$P(BSDXOUT("DILIST",BSDXI,0),U) ; IEN
+ . S BMXSTATUS=$P(BSDXOUT("DILIST",BSDXI,0),U,2) ; Status
+ . S BMXPROC=$P(BSDXOUT("DILIST",BSDXI,0),U,3) ; Procedure Name
+ . S BMXDATE=$TR($P(BSDXOUT("DILIST",BSDXI,0),U,4),"@"," ") ; Request Entered Date Time
  . S @BSDXY@(BSDXI)=BMXIEN_U_BMXSTATUS_U_BMXPROC_U_BMXDATE_$C(30)
+END ; Errors Jump Here...
  S @BSDXY@(BSDXI+1)=$C(31)
  QUIT
  ;
-SCHRAEX(BSDXY,RADFN,RAOIFN) ; Schedule a Radiology Exam
+SCHRAEX(BSDXY,RADFN,RAOIFN,RAOSCH) ; Schedule a Radiology Exam; RPC EP; UJO/SMH new in v 1.6
+ ; RPC: BSDX SCHEDULE RAD EXAM; Return: Single Value
+ ;
+ ; Input: 
+ ; - RADFN -> DFN
+ ; - RAOIFN -> Radiology Order IEN in file 75.1
+ ; - RAOSCH -> Scheduled Time for Exam
+ ; Output: Always "1"
+ ;
+ S RAOSCH=+RAOSCH ; Strip the trailing zeros from the Fileman Date produced by C#
  N RAOSTS S RAOSTS=8  ; Status of Scheduled
- D ^RAORDU  ; API in Rad expects RADFN, RAOIFN, and RAOSTS
+ D ^RAORDU  ; API in Rad expects RADFN, RAOIFN, RAOSCH, and RAOSTS
  S BSDXY=1 ; Success
  QUIT
-HOLDRAEX(BSDXY,RADFN,RAOIFN) ; Hold a Radiology Exam
+ ;
+HOLDRAEX(BSDXY,RADFN,RAOIFN) ; Hold a Radiology Exam; RPC EP; UJO/SMH new in v 1.6
+ ; RPC: BSDX HOLD RAD EXAM; Return: Single Vale
+ ;
+ ; Input:
+ ; - RADFN -> DFN
+ ; - RAOIFN -> Radiology Order IEN in file 75.1
+ ; Output: Always "1"
  N RAOSTS S RAOSTS=3  ; Status of Hold
  N RAOREA S RAOREA=20 ; Reason: Exam Cancelled
