A system designed to assist a hospital pharmacy in the compounding of medications comprising hazardous drugs, the system comprising: a. a safety cabinet; b. at least two robotic arm assemblies (28,38); c. a plurality of operational stations (30,32,32,44) adapted to perform specific tasks related to a compounding process; d. a plurality of cameras (C101-C109) each installed at a specific location in the safety cabinet or on the robotic arm assemblies (28,38), each camera (C101-C109) dedicated to provide real time digital images of a stage of the compounding process carried out at that location; e. a system processor comprising: image processing algorithms to analyze the images received from the cameras (C101-C109); custom made algorithms to plan timing and motions of the robotic arm assemblies (28,38) and other devices inside the safety cabinet; custom made algorithms to execute numerous comparisons and checks that are carried out to minimize errors in preparing the medications; and custom made software that manages the whole compounding process and manages data flow and a system database; and f. communication channels (164,166,168,170) between components of the system; wherein: i. the robotic arm assemblies (28,38) are adapted to simultaneously move vials and syringes within the safety cabinet; ii. the robotic arm assemblies (28,38) are adapted to allow steps in the compounding process to be carried out automatically under guidance of the software and algorithms in the system processor without intervention by an operator or a supervisor; iii. the cameras (C101-C109) and image processing algorithms are adapted to provide real-time feedback control of all stages of the compounding process; and iv. at least one of the robotic arm assemblies (28,38) is a vial robotic arm assembly configured to pick up and move vials and at least another one of the robotic arm assemblies (28,38) is a syringe pump robotic arm assembly configured to pick up and move syringes; and v. the vial robotic arm assembly and the syringe pump robotic arm assembly each comprise three mutually orthogonal beams (50,54,58,126,130,134), wherein for each beam (50,54,58,126,130,134) there is a motor (48,52,56,124,128,132) to move the respective robotic arm assembly (28,38) along the beam (50,54,58,126,130,134). a. a safety cabinet; b. at least two robotic arm assemblies (28,38); c. a plurality of operational stations (30,32,32,44) adapted to perform specific tasks related to a compounding process; d. a plurality of cameras (C101-C109) each installed at a specific location in the safety cabinet or on the robotic arm assemblies (28,38), each camera (C101-C109) dedicated to provide real time digital images of a stage of the compounding process carried out at that location; e. a system processor comprising: image processing algorithms to analyze the images received from the cameras (C101-C109); custom made algorithms to plan timing and motions of the robotic arm assemblies (28,38) and other devices inside the safety cabinet; custom made algorithms to execute numerous comparisons and checks that are carried out to minimize errors in preparing the medications; and custom made software that manages the whole compounding process and manages data flow and a system database; and f. communication channels (164,166,168,170) between components of the system; i. the robotic arm assemblies (28,38) are adapted to simultaneously move vials and syringes within the safety cabinet; ii. the robotic arm assemblies (28,38) are adapted to allow steps in the compounding process to be carried out automatically under guidance of the software and algorithms in the system processor without intervention by an operator or a supervisor; iii. the cameras (C101-C109) and image processing algorithms are adapted to provide real-time feedback control of all stages of the compounding process; and iv. at least one of the robotic arm assemblies (28,38) is a vial robotic arm assembly configured to pick up and move vials and at least another one of the robotic arm assemblies (28,38) is a syringe pump robotic arm assembly configured to pick up and move syringes; and v. the vial robotic arm assembly and the syringe pump robotic arm assembly each comprise three mutually orthogonal beams (50,54,58,126,130,134), wherein for each beam (50,54,58,126,130,134) there is a motor (48,52,56,124,128,132) to move the respective robotic arm assembly (28,38) along the beam (50,54,58,126,130,134).