A simple vista creo que si el programa no ingresa en alguno de los condicionales no hay inconvenientes pero si llegara a entrar en solo uno cancelas la edicion
Código Delphi
[-]
if(DM.DSET_pacPROFESIONAL.Value=null)then
begin
ShowMessage('Verifica que hay campos obligatorios que no están cargados');
DM.DSET_pac.Cancel;
DM.Transaccion.RollbackRetaining;
end;
y luego queres asignar un valor a un Dataset cerrado para edicion
Código Delphi
[-]
DM.DSET_pacID_PROF.Value:=DM.DSET_profID_PROF.Value;
DM.DSET_pacID_COBER.Value:=DM.DSET_cob_medID_COBER.Value;
DM.DSET_pacID_LOC.Value:=DM.DSET_locID_LOC.Value;
entonces ahi salta el error...
completa todos los campos y hace un seguimiento como sugiere oscarac (F8) y otro sin completar alguno para ver los resultados y veremos....