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