Od 1963 do 1968 był członkiem Zrzeszenia Studentów Polskich, a od 1965 do 1968 Związku Młodzieży Wiejskiej. W latach 1981–1999 należał do Niezależnego Samorządnego Związku Zawodowego „Solidarność”. Był m.in. delegatem na I Krajowy Zjazd Delegatów w Gdańsku oraz wiceprzewodniczącym Krajowej Komisji Koordynacyjnej związku. W stanie wojennym został internowany na okres od grudnia 1981 do czerwca 1982. Od 1982 do 1987 zasiadał we władzach krajowych Solidarności Walczącej. W 1989 brał udział w obradach Okrągłego Stołu w zespole ds. zdrowia.

Po przemianach politycznych współtworzył samorząd lekarski, przewodniczył Dolnośląskiej Izbie Lekarskiej. W 1991 pełnił funkcję ministra zdrowia i opieki społecznej w rządzie Jana Krzysztofa Bieleckiego. W latach 1994–2005 pracował we wrocławskim urzędzie miejskim jako lekarz miejski, dyrektor wydziału i departamentu. Zasiadał w sejmiku dolnośląskim od 1998 do 2005 (z ramienia Akcji Wyborczej Solidarność, a następnie koalicji Platforma Obywatelska – Prawo i Sprawiedliwość, wstępując w międzyczasie do Platformy Obywatelskiej).

W wyborach parlamentarnych w 2005 z ramienia Platformy Obywatelskiej został wybrany na senatora VI kadencji w okręgu wrocławskim. W wyborach w 2007 po raz drugi uzyskał mandat senatorski, otrzymując 201 555 głosów.