Hola Enrique,
Sí, el error indica que estás intentando crear un objeto Dirección con un tipo de dato incorrecto. Hay una confusión con el parámetro porque el constructor de la clase Dirección está esperando recibir un objeto de tipo Direccion, pero en lugar de eso, estás intentando pasarle un objeto de tipo DatosDireccion (según lo que puedo deducir).
Podrías intentar hacer algo similar a lo que se hizo en la clase Medico. En lugar de pasarle directamente el objeto DatosDireccion al constructor de Dirección, podrías crear un nuevo constructor en la clase Dirección que acepte un objeto DatosDireccion como parámetro.
De esta manera, cuando creas un nuevo objeto Dirección en la clase Medico, puedes pasarle el objeto DatosDireccion y el constructor se encargará de hacer el mapeo de los datos.
Espero que esta sugerencia te sea de ayuda. Recuerda que la programación puede ser un proceso de prueba y error, así que no te desanimes si no funciona a la primera. ¡Sigue intentándolo!
Mucho éxito en todo lo que te propongas y si tienes más duda aquí estaremos para apoyarte.
¡Vamos juntos!