Term Project – Final Report CSCE 5043 Artificial Intelligence – Spring 2009
Workflow in Prolog
Khalid Rahman
This report describes the development and testing of the Project, “Workflow in Prolog”. A typical scenario in an operating room during a catheter operation on a patient is considered and prolog goals, rules and statements are defined and written. The operation process is broken down to different steps and each step is explained with comments in the prolog program.
1. Problem
Use prolog programs to control the activities of avatar bots and robots in the virtual health-care facility in Second life.
Get the prolog program to work, transforming workflow steps into prolog and deciding how much detail to include in the program.
2. Objective
The ‘Workflow in Prolog’ Team’s goal was to work with ‘Infra structure Team’ to help them embed the prolog workflows in C#, so that C# programs can take prolog syntax as input.
My part of the project was to convert the workflow steps into Prolog programming language.
3. Related work
Catheter operation workflow, done by Dr. Fran Hagstrom, is given in appendix A.
Website links for the definition and background of catheter operation and video of the procedure are given in the reference section.
4. Architecture
4.1 Design
The operation workflow was expanded to provide details. For example, stent 1 and stent 2 are defined as two different equipments rather than one. And then rubber gloves used by the MD and the PA are treated as two different entities.
The details of each step in the procedure are given in the program itself as comments.
The code (program) is given in appendix B.
4.2 Testing
The program is compiled and run successfully in Win-prolog 4800. The procedure to run is given at the end of the program as comments.
5. Results
The results of the program come up in the console page as a statement for each step being completed. Screenshot of the results page is given in appendix C.
6. Conclusion
6.1 Summary
This project is only the initial steps towards achieving the final goal of using prolog programs to control the activities of avatar bots and robots in the virtual health-care facility in Second life.
6.2 Impact
In my part of the project I emphasized on
(1) the workflow steps being represented in the prolog program in enough detail and
(2) Making the program successfully run.
6.3 Future work
To develop the program further, activities of the recording nurse (person 4) in the program needs to be expanded. His/her activities can include (in addition to the current duties of record-keeping consumable items),-
(1) Accurate time-keeping of all activities
(2) Checking proper sequence of activities
(3) Raising a red flag if any activity happens out of sequence, or if any activity is missed out. For example, the surgeon forgets to wear his rubber gloves.
References
Website links-
- - some background
- - links to hour long video of the entire procedure
Appendix A - Workflow by Dr. Fran Hagstrom
Operating Room Workflow - Spring 2009 Projects
Roles: Orderly (brings patient into operating room)
Nurses (1 assist with surgery & wheels pt out; 1 recording what is used in the room)
Anesthesiologist (stands at pt head but out of sight)
Physician's Assistant (works with MD during surgery)
Physicain/Surgeon (does procedure)
Scene: Heart (cath) operation
Equipment: Imaging machines
IV pump
Tubing
Catheters
Stents
Instrument tray
Sterile pack of surgery tools
Needles
Suture material
Scissors
Staples
Tape
Gauze
Clamps
Sterile drapes
Masks
Rubber gloves
Trash container
Action Script: 1) orderly brings patient into the operating room
2) Nurse - patient is draped
3) Nurse - Instrument tray is brought bedside
4) Nurse - sterile pack of surgery tools opened and put on the tray
5) Nurse - gauze packs are put on tray
6) Nurse - IV pump is attached to patient's inline needle
7) Anesthesiologist, PA and MD enter the room
8) Anesthesiologist inserts meds into the IV tubing running to pt arm
9) Anesthesiologist tells pt. she will feel a little sleepy but be able to watch
10) MD tells pt they are ready to begin, asks nurse for scalpel to make leg
incision
11) Nurse gives scalpel to the MD
12) MD makes cut in the pt upper leg area; asks PA to wipe with gauze
pad
13) MD asks for catheter; handed to PA by nurse; handed to MD by PA
14) Recording nurse is documenting each item used (for billing purposes)
15) MD slips catheter up to the heart watching the monitor during the
proceeding
16) MD asks PA to adjust monitor as they both look for degree of
blockage
17) MD and PA confer and decide two stents are needed
18) MD asked for two stents from nurse (assisting nurse gets these;
recorded)
19) Nurse unpackages first stent and hands this to PA
20) PA hands the stent to the MD
21) MD inserts stent into the cath tubing
22) MD repositions the tubing watching monitor with PA
23) MD asks for second stent
24) Nurse unpackages 2nd stent and hands this to PA
25) A hands the stent to the MD
26) MD inserts stent into the cath tubing
27) MD, PA and Nurse watch monitor to check blood flow
28) MD says, "Looks good. Finish up." Removes gloves, in trash, leaves
room
30) PA takes tubing out; puts gauze on leg incision; puts tape over gauze
31) PA says to nurse, "We're finished here. Clean up and take the patient
tothe recovery room." Removes gloves, in trash, leaves
32) Nurse wipes area to make sure the leg area is clean
33) Nurse removes sterile drapes and puts these in trash bag
34) Wheels pt out of operating room
Appendix B - The Code
% Catheter Operation Workflow version 1.1 dated: April 21,2009, time 11:00 am
% To be used in Win-prolog 4800.
% Defining places, persons involved and equipments used.
place1(operating_room).
place2(bedside).
person1(orderly).
person2(nurse).
person3(patient).
person4(recording_nurse).
person5(anesthesiologist).
person6(asst_physician).
person7(surgeon).
equipment1(instrument_tray).
equipment2(sterile_pack_of_surgery_tools).
equipment3(gauze_pack).
equipment4(inline_needle).
equipment5(iv_pump).
eqpmt6(image_machine).
eqpmt7(tubing).
eqpmt8(catheter).
eqpmt9(stent1).
eqpmt10(stent2).
eqpmt11(suture_material).
eqpmt12(scalpel).
eqpmt13(staples).
eqpmt14(tape).
eqpmt15(clamps).
eqpmt16(sterile_drapes).
eqpmt17(rubber_gloves_MD).
eqpmt18(trash_container).
eqpmt19(rubber_gloves_PA).
% Initiate workflow. Orderly X brings patient Y to operating room Z.
brings(X,Y,Z):-
notin(Y,Z),person1(X),person3(Y),place1(Z)->retract(notin(Y,Z)),assert(in(Y,Z)),
(write(orderly_brings_patient_to_operating_room),nl).
% Nurse X brings instrument tray Y by bedside Z.
bringsequip(X,Y,Z):-
notby(Y,Z),person2(X),equipment1(Y),place2(Z)->retract(notby(Y,Z)),assert(by(Y,Z)),
(write(nurse_brings_instrument_tray_by_bedside),nl).
% Nurse X makes sure patient Y is in operating room Z and drapes B the patient Y.
drapes(X,Y,Z,B):-
in(Y,Z),person2(X),person3(Y),place1(Z),eqpmt16(B)->assert(draped(Y,B)),
(write(nurse_drapes_the_patient),nl).
% Nurse X makes sure sterile_pack_of_surgery_tools Y is on bedside Z and opens Y.
opens(X,Y,Z):-
by(Y,Z),person2(X),equipment2(Y),place2(Z)->assert(opened(Y)),
(write(nurse_opens_sterile_pack_of_surgery_tools),nl).
% Nurse X makes sure sterile_pack_of_surgery_tools Y is opened and puts Y on instrument_tray Z.
putsterilepack(X,Y,Z):-
opened(Y),person2(X),equipment2(Y),equipment1(Z)->assert(on(Y,Z)),
(write(nurse_puts_sterile_pack_on_instrument_tray),nl).
% Nurse X makes sure sterile_pack_of_surgery_tools A is on instrument_tray Z and puts gauze_pack Y on instrument_tray Z.
putgauzepack(A,X,Y,Z):-
on(A,Z),equipment2(A),person2(X),equipment3(Y),equipment1(Z)->assert(on(Y,Z)),
(write(nurse_puts_gauzepack_on_instrument_tray)),nl.
% Nurse X makes sure patient Y is in operating_room Z, sterile_pack_of_surgery_tools A is opened and inserts inline_needle
% B into patient Y.
putinlineneedle(X,Y,Z,A,B):-
in(Y,Z),opened(A),person2(X),person3(Y),place1(Z),equipment2(A),equipment4(B)->assert(insert(B,Y)),
(write(nurse_inserts_inlineneedle_on_patient)),nl.
% Nurse X makes sure inline_needle Y is inserted into patient Z and attaches iv_pump A to inline_needle Y.
attachiv(X,Y,Z,A):-
insert(Y,Z),person2(X),person3(Z),equipment4(Y),equipment5(A)->assert(ivpump(A,Y)),
(write(nurse_attaches_ivpump_to_patient)),nl.
% After iv_pump Y is attached to inline_needle Z, anesthesiologist X, PA A and MD B enters the room.
anesthPAMDenters(X,Y,Z,A,B):-
ivpump(Y,Z),person5(X),equipment5(Y),equipment4(Z),person6(A),person7(B),
(write(anesthsiologist_PA_MD_enters_operating_room)),nl.
% After iv_pump A is attached to inline_needle Y, anesthesiologist X inserts sedative to iv_pump A.
anesthmed(A,Y,X):-
ivpump(A,Y),person5(X),equipment4(Y),equipment5(A)->assert(sedative(X,A)),
(write(anesthesiologist_inserts_sedative_into_patients_iv_tubing)),nl.
% After sedative given in the iv_pump A, anesthesiologist X talks to patient B.
anesthTOpatient(X,A,B):-
sedative(X,A),person5(X),equipment5(A),person3(B)->assert(anesthsays(X,B)),
(write(anesthsiologist_tells_patient_You_will_feel_a_little_sleepy_but_you_can_watch)),nl.
% After anesthesiologist X talks to patient B, surgeon A tells patient that he is ready to begin.
surgeonTOpatient(A,B,X):-
anesthsays(X,B),person5(X),person3(B),person7(A)->assert(surgeonsays1(A,B)),
(write(surgeon_tells_patient_We_are_ready_to_begin)),nl.
% After surgeon A talks to patient B, he asks nurse C for scalpel X.
surgeonTOnurse1(A,B,C,X):-
surgeonsays1(A,B),person7(A),person3(B),person2(C),eqpmt12(X)->assert(surgeonsays2(A,C)),
(write(surgeion_asks_nurse_for_scalpel)),nl.
% Nurse C gives scalpel X to surgeon A
givescalpel(C,A,X):-
surgeonsays2(A,C),person7(A),person2(C),eqpmt12(X)->assert(scalpel(C,A,X)),
(write(nurse_gives_scalpel_to_surgeon)),nl.
% After nurse C gives scalpel X to surgeon A, he cuts patient Y upper leg.
cut(C,A,X,Y):-
scalpel(C,A,X),person2(C),person7(A),eqpmt12(X),person3(Y)->assert(cutpatient(A,Y)),
(write(surgeon_cuts_patient_upper_leg_area)),nl.
% After surgeon A is done with patient Y, he tells PA B to wipe cut area.
surgeontoPA(A,Y,B):-
cutpatient(A,Y),person7(A),person3(Y),person6(B)->assert(surgeonsays3(A,B)),
(write(surgeon_tells_PA_to_wipe_cut_area_with_gauge_pad)),nl.
% Surgeon A asks nurse X and PA B for cathether Y
surgeonask1(A,B,X,Y):-
surgeonsays3(A,B),person7(A),person6(B),person2(X),eqpmt8(Y)->assert(cath1(A,B)),
(write(surgeon_asks_for_catheter)),nl.
% Nurse X hands catheter Y to PA B.
nursetoPA(A,B,Y,X):-
cath1(A,B),person7(A),person6(B),eqpmt8(Y),person2(X)->assert(cath2(X,B)),
(write(nurse_hands_the_catheter_to_PA)),nl.
% After nurse X hands catheter to PA B, PA gives catheter Y to MD A and recording nurse Z records the event.
cathPAtoMD(X,B,A,Y,Z):-
cath2(X,B),person2(X),person6(B),person7(A),eqpmt8(Y),person4(Z)->assert(cath3(B,A,Z)),
(write(assistant_hands_catheter_to_surgeon)),nl,
(write(recording_nurse_records_1_catheter_used)),nl.
% After PA B hands catheter Y to MD A, MD inserts it to patient X upto the heart while watching image machine C.
cathMDtopatient(B,A,Z,X,C,Y):-
cath3(B,A,Z),person6(B),person7(A),person4(Z),person3(X),eqpmt6(C),eqpmt8(Y)->assert(cath4(A,X)),
(write(surgeon_inserts_catheter_into_patient_upto_the_heart_and_watches_image_machine)),nl.
% Surgeon A asks PA Y to adjust monitor Z for patient X.
cathMDtoPA(A,X,Y,Z):-
cath4(A,X),person7(A),person3(X),person6(Y),eqpmt6(Z)->assert(cath5(A,Y,Z)),
(write(surgeon_asks_PA_to_adjust_monitor_and_both_look_at_monitor)),nl.
% Surgeon A and PA Y confer after looking at monitor Z and decide two stents B are needed.
cathMDandPA(A,Y,Z,B):-
cath5(A,Y,Z),person7(A),person6(Y),eqpmt6(Z),eqpmt9(B)->assert(stents(A,Y,B)),
(write(surgeon_and_PA_confer_and_decide_two_stents_are_needed)),nl.
% Surgeon A asks for two stents B from nurse X and PA Y, recording nurse Z records.
stentMD(A,Y,B,X,Z):-
stents(A,Y,B),person7(A),person6(Y),eqpmt9(B),person2(X),person4(Z)->assert(stent1(A,B,X,Z)),
(write(surgeon_asks_for_two_stents_from_nurse)),nl,
(write(recording_nurse_records_2_stents_used)),nl.
% Nurse X unpacks 1st stent B and gives it to PA Y.
stent1NursetoPA(A,B,X,Z,Y):-
stent1(A,B,X,Z),person7(A),eqpmt9(B),person2(X),person4(Z),person6(Y)->assert(unpackstent1(X,B)),
(write(nurse_unpacks_1st_stent)),nl,
assert(givestent1(X,Y,B)),
(write(nurse_gives_1st_stent_to_PA)),nl.
% PA Y gives 1st stent B to surgeon A.
stent1PAtoMD(X,Y,B,A):-
givestent1(X,Y,B),person2(X),person6(Y),eqpmt9(B),person7(A)->assert(givestent(Y,A,B)),
(write(assistant_hands_1st_stent_to_MD)),nl.
% MD/surgeon A inserts 1st stent B to patient C's catheter tubing D.
stent1MDtopatient(Y,A,B,C,D):-
givestent(Y,A,B),person6(Y),person7(A),eqpmt9(B),person3(C),eqpmt8(D)->assert(insertstent(A,B,C,D)),
(write(surgeon_inserts_1st_stent_into_patients_catheter_tubing)),nl.
% Surgeon A repositions tubing D while watching monitor X and assistant Y watches monitor X.
stentadjust(A,B,C,D,X,Y):-
insertstent(A,B,C,D),person7(A),eqpmt9(B),person3(C),eqpmt8(D),eqpmt6(X),person6(Y)->assert(adjuststent(A,D)),
(write(surgeon_repositions_tubing)),nl,
assert(watchmonitorMD(A,X)),
(write(surgeon_watches_monitor)),nl,
assert(watchmonitorPA(Y,X)),
(write(assistant_watches_monitor)),nl.
% Surgeon A asks for 2nd stent Z.
stent2MD(A,Y,X,Z):-
watchmonitorMD(A,X),watchmonitorPA(Y,X),person7(A),person6(Y),eqpmt6(X),eqpmt10(Z)->assert(stent2(A,Z)),
(write(surgeon_asks_for_2nd_stent)),nl.
% Nurse X unpackts 2nd stent Z and gives to PA Y.
stent2nursetoPA(A,Z,X,Y):-
stent2(A,Z),person7(A),eqpmt10(Z),person2(X),person6(Y)->assert(unpackstent2(X,Z)),
(write(nurse_unpacks_2nd_stent)),nl,
assert(givestent2(X,Y,Z)),
(write(nurse_gives_2nd_stent_to_PA)),nl.
% Assistant/PA Y gives 2nd stent Z to MD A.
stent2PAtoMD(X,Y,Z,A):-
givestent2(X,Y,Z),person2(X),person6(Y),eqpmt10(Z),person7(A)->assert(givestent2(Y,A,Z)),
(write(assistant_hands_2nd_stent_to_MD)),nl.
% Surgeon A inserts 2nd stent Z to patient C's catheter tubing D.
stent2MDtopatient(Y,A,Z,C,D):-
givestent2(Y,A,Z),person6(Y),person7(A),eqpmt10(Z),person3(C),eqpmt8(D)->assert(insertstent2(A,Z,C,D)),
(write(surgeon_inserts_2nd_stent_into_patients_catheter_tubing)),nl.
% Surgeon A repositions tubing D while watching monitor X, assistant Y and nurse B watches monitor X.
stent2adjust(A,Z,C,D,B,X,Y):-
insertstent2(A,Z,C,D),person7(A),eqpmt10(Z),person3(C),eqpmt8(D),person2(B),eqpmt6(X),person6(Y)->assert(adjuststent(A,D)),
(write(surgeon_repositions_tubing)),nl,
assert(watchmonitorMD(A,X)),
(write(surgeon_watches_monitor)),nl,
assert(watchmonitorPA(Y,X)),
(write(assistant_watches_monitor)),nl,
assert(watchmonitornurse(B,X)),
(write(nurse_watches_monitor)),nl.
% Surgeon A says he is done, removes gloves Y and throws them into trash bin Z, leaves room B.
doneMD(A,X,Y,Z):-
watchmonitorMD(A,X),person7(A),eqpmt6(X),eqpmt17(Y),eqpmt18(Z),place1(B)->assert(surgeondone(A,Y,Z,B)),
(write(surgeon_says_it_looks_good_asks_to_finish_up_removes_gloves_throws_them_into_trash_container_and_leaves_room)),nl.
% PA X takes out tubing C, puts gauze D on leg and puts tape E over gauze D.
finishPA(A,Y,Z,B,X,C,D,E):-
surgeondone(A,Y,Z,B),person7(A),eqpmt17(Y),eqpmt18(Z),place1(B),person6(X),eqpmt7(C),equipment3(D),
eqpmt14(E)->assert(tubeout(X,C)),
(write(assistant_takes_tubing_out)),nl,
assert(putgauze(X,D)),
(write(assistant_puts_gauze_on_leg_incision)),nl,
assert(puttape(X,E)),
(write(assistant_puts_tape_over_gauze)),nl.
% PA X says they are done, removes gloves Y,throws them into trash bin Z and leaves room B.
donePA(X,E,Y,Z,B):-
puttape(X,E),person6(X),eqpmt14(E),eqpmt19(Y),eqpmt18(Z),place1(B)->assert(assistantdone(X)),
(write(assistant_says_they_are_done_here_asks_to_clean_up_and_take_patient_to_recovery_room)),nl,
assert(assistantleave(X,Y,Z,B)),
(write(assistant_removes_gloves_throws_them_into_trash_container_and_leaves_room)),nl.
% Nurse A wipes leg area.
nursewipes(X,Y,Z,B,A):-
assistantleave(X,Y,Z,B),person6(X),eqpmt19(Y),eqpmt18(Z),place1(B),person2(A)->assert(nursecleanup(A)),
(write(nurse_wipes_area_to_make_sure_leg_area_is_clean)),nl.
% Nurse A removes drapes B and throws them into trash bin C.
removedrape(A,B,C,X):-
nursecleanup(A),person2(A),eqpmt16(B),eqpmt18(C),person3(X)->retract(draped(X,B)),assert(throwdrapes(A,B,C)),
(write(nurse_removes_sterile_drapes_and_throws_them_into_trash_container)),nl.
% Nurse A wheels patient X out of operating room Y.
patientout(A,B,C,X,Y):-
throwdrapes(A,B,C),person2(A),eqpmt16(B),eqpmt18(C),person3(X),place1(Y)->retract(in(X,Y)),
(write(nurse_wheels_patient_out_of_the_operating_room)),nl.
run:-
assert(notin(patient,operating_room)),call(listing(notin)),assert(notby(instrument_tray,bedside)),
call(listing(notby)),call(brings(_,_,_)),call(bringsequip(_,_,_)),
call(drapes(_,_,_,_)),assert(by(sterile_pack_of_surgery_tools,bedside)),
call(opens(_,_,_)),
call(putsterilepack(_,_,_)),
call(putgauzepack(_,_,_,_)),
call(putinlineneedle(_,_,_,_,_)),
call(attachiv(_,_,_,_)),
call(anesthPAMDenters(_,_,_,_,_)),
call(anesthmed(_,_,_)),
call(anesthTOpatient(_,_,_)),
call(surgeonTOpatient(_,_,_)),
call(surgeonTOnurse1(_,_,_,_)),
call(givescalpel(_,_,_)),
call(cut(_,_,_,_)),
call(surgeontoPA(_,_,_)),
call(surgeonask1(_,_,_,_)),
call(nursetoPA(_,_,_,_)),
call(cathPAtoMD(_,_,_,_,_)),
call(cathMDtopatient(_,_,_,_,_,_)),
call(cathMDtoPA(_,_,_,_)),
call(cathMDandPA(_,_,_,_)),
call(stentMD(_,_,_,_,_)),
call(stent1NursetoPA(_,_,_,_,_)),
call(stent1PAtoMD(_,_,_,_)),
call(stent1MDtopatient(_,_,_,_,_)),
call(stentadjust(_,_,_,_,_,_)),
call(stent2MD(_,_,_,_)),
call(stent2nursetoPA(_,_,_,_)),
call(stent2PAtoMD(_,_,_,_)),
call(stent2MDtopatient(_,_,_,_,_)),
call(stent2adjust(_,_,_,_,_,_,_)),
call(doneMD(_,_,_,_)),
call(finishPA(_,_,_,_,_,_,_,_)),
call(donePA(_,_,_,_,_)),
call(nursewipes(_,_,_,_,_)),
call(removedrape(_,_,_,_)),
call(patientout(_,_,_,_,_)).
% End of Program. To run, click Run-Compile and in the console type load_files(workflow,[all_dynamic(true)]). and hit
% enter. On 2nd prompt, type run. and hit enter.
Appendix C - Screenshot of the results page in the console of prolog program
| ?-
# 0.011 seconds to consult c:\program files\win-prolog 4800\workflow.pl
| ?- load_files(workflow,[all_dynamic(true)]).
# Abolishing c:\program files\win-prolog 4800\workflow.pl
# 0.038 seconds to consult c:\program files\win-prolog 4800\workflow.pl
yes
| ?- run.
% notin/2
notin( patient, operating_room ).
% notby/2
notby( instrument_tray, bedside ).
orderly_brings_patient_to_operating_room
nurse_brings_instrument_tray_by_bedside
nurse_drapes_the_patient
nurse_opens_sterile_pack_of_surgery_tools
nurse_puts_sterile_pack_on_instrument_tray
nurse_puts_gauzepack_on_instrument_tray
nurse_inserts_inlineneedle_on_patient
nurse_attaches_ivpump_to_patient
anesthsiologist_PA_MD_enters_operating_room
anesthesiologist_inserts_sedative_into_patients_iv_tubing
anesthsiologist_tells_patient_You_will_feel_a_little_sleepy_but_you_can_watch
surgeon_tells_patient_We_are_ready_to_begin
surgeion_asks_nurse_for_scalpel
nurse_gives_scalpel_to_surgeon
surgeon_cuts_patient_upper_leg_area
surgeon_tells_PA_to_wipe_cut_area_with_gauge_pad
surgeon_asks_for_catheter
nurse_hands_the_catheter_to_PA
assistant_hands_catheter_to_surgeon
recording_nurse_records_1_catheter_used
surgeon_inserts_catheter_into_patient_upto_the_heart_and_watches_image_machine
surgeon_asks_PA_to_adjust_monitor_and_both_look_at_monitor
surgeon_and_PA_confer_and_decide_two_stents_are_needed
surgeon_asks_for_two_stents_from_nurse
recording_nurse_records_2_stents_used
nurse_unpacks_1st_stent
nurse_gives_1st_stent_to_PA
assistant_hands_1st_stent_to_MD
surgeon_inserts_1st_stent_into_patients_catheter_tubing
surgeon_repositions_tubing
surgeon_watches_monitor
assistant_watches_monitor
surgeon_asks_for_2nd_stent
nurse_unpacks_2nd_stent
nurse_gives_2nd_stent_to_PA
assistant_hands_2nd_stent_to_MD
surgeon_inserts_2nd_stent_into_patients_catheter_tubing
surgeon_repositions_tubing
surgeon_watches_monitor
assistant_watches_monitor
nurse_watches_monitor
surgeon_says_it_looks_good_asks_to_finish_up_removes_gloves_throws_them_into_trash_container_and_leaves_room
assistant_takes_tubing_out
assistant_puts_gauze_on_leg_incision
assistant_puts_tape_over_gauze
assistant_says_they_are_done_here_asks_to_clean_up_and_take_patient_to_recovery_room
assistant_removes_gloves_throws_them_into_trash_container_and_leaves_room
anesthsiologist_PA_MD_enters_operating_room
anesthesiologist_inserts_sedative_into_patients_iv_tubing
anesthsiologist_tells_patient_You_will_feel_a_little_sleepy_but_you_can_watch
surgeon_tells_patient_We_are_ready_to_begin
surgeion_asks_nurse_for_scalpel
nurse_gives_scalpel_to_surgeon
surgeon_cuts_patient_upper_leg_area
surgeon_tells_PA_to_wipe_cut_area_with_gauge_pad
surgeon_asks_for_catheter
nurse_hands_the_catheter_to_PA
assistant_hands_catheter_to_surgeon
recording_nurse_records_1_catheter_used
surgeon_inserts_catheter_into_patient_upto_the_heart_and_watches_image_machine
surgeon_asks_PA_to_adjust_monitor_and_both_look_at_monitor
surgeon_and_PA_confer_and_decide_two_stents_are_needed
surgeon_asks_for_two_stents_from_nurse
recording_nurse_records_2_stents_used
nurse_unpacks_1st_stent
nurse_gives_1st_stent_to_PA
assistant_hands_1st_stent_to_MD
surgeon_inserts_1st_stent_into_patients_catheter_tubing
surgeon_repositions_tubing
surgeon_watches_monitor
assistant_watches_monitor
surgeon_asks_for_2nd_stent
nurse_unpacks_2nd_stent
nurse_gives_2nd_stent_to_PA
assistant_hands_2nd_stent_to_MD
surgeon_inserts_2nd_stent_into_patients_catheter_tubing
surgeon_repositions_tubing
surgeon_watches_monitor
assistant_watches_monitor
nurse_watches_monitor
surgeon_says_it_looks_good_asks_to_finish_up_removes_gloves_throws_them_into_trash_container_and_leaves_room
assistant_takes_tubing_out
assistant_puts_gauze_on_leg_incision
assistant_puts_tape_over_gauze
assistant_says_they_are_done_here_asks_to_clean_up_and_take_patient_to_recovery_room
assistant_removes_gloves_throws_them_into_trash_container_and_leaves_room
nurse_wipes_area_to_make_sure_leg_area_is_clean
nurse_removes_sterile_drapes_and_throws_them_into_trash_container
nurse_wheels_patient_out_of_the_operating_room
yes
1