Try a table rotation, something like this:
select sim.patient_id as "Pat#" ,
sim.Date as "Sim" ,
dos.Date as "DosFusion" ,
mda.Date as "MDApproval" ,
mdx.Date as "MDRX" ,
rtt.Date as "RTTREview" ,
txe.Date as "TxEnd"
from ( select *
from my_table
where Action = 'Sim'
) sim
left join my_table dos on dos.action = 'DosiFusion'
and dos.patient_id = sim.patient_id
and dos.Date >= sim.Date
left join my_table mda on mda.action = 'MDApproval'
and mda.patient_id = p.patient_id
and mda.Date >= coalesce(dos.Date,sim.Date)
left join my_table mdx on mdx.action = 'MDRX'
and mdx.patient_id = p.patient_id
and mdx.Date >= coalesce(mda.Date,dos.Date,sim.Date)
left join my_table rtt on rtt.action = 'RTT Review'
and rtt.patient_id = p.patient_id
and rtt.Date >= coalesce(mdx.Date,mda.Date,dos.Date,sim.Date)
left join my_table txe on txe.action = 'TxEnd'
and txe.patient_id = p.patient_id
and txe.Date >= coalesce(rtt.Date,mdx.Date,mda.Date,dos.Date,sim.Date)
order by 1,2,3,4,5,6,7