In
union
you define only one order by which is applied for the whole result. Also in order by you can refer to columns by their position. And another note, you don't have to define distinct for both queries. If you use union without all, only distinct records are returned.
So an alternative could be like:
select EnglishName,NULL AS DiseaseName
from Med,Active_material,Active_mat_med,Diseases,Med_disease
where Med.Med_ID=Active_mat_med.Med_ID
and Active_material.Activemat_ID=Active_mat_med.Activemat_ID
and Diseases.Disease_ID=Med_disease.Disease_ID
and Med.Med_ID=Med_disease.Med_ID
and Med.Med_ID=@P_MedID
union all
select NULL , Disease_name
from Med,Active_material,Active_mat_med,Diseases,Med_disease
where Med.Med_ID=Active_mat_med.Med_ID
and Active_material.Activemat_ID=Active_mat_med.Activemat_ID
and Diseases.Disease_ID=Med_disease.Disease_ID
and Med.Med_ID=Med_disease.Med_ID
and Med.Med_ID=@P_MedID
Order by 1