Beispiel #1
0
        public async Task <ActionResult> newRegistroMedico([FromBody] CreateRegistroMedicoDTO model)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                logger.LogInformation("BeginTransaction  create registro medico by user {0}", getUser());
                try
                {
                    getUser();
                    var persona = await fundabiem.searchPersonaByDPI(model.paciente.dpi);

                    if (persona.Count() > 0)
                    {
                        return(BadRequest("El DPI ya existe"));
                    }
                    var PersonaPaciente = await fundabiem.newPersona(model.paciente);

                    //crea la direccion del paciente
                    await fundabiem.newDirection(model.direccionPaciente, PersonaPaciente.idPersona);

                    //crea el paciente
                    var pacienteR = await fundabiem.newPatient(model.HistorialClinico, PersonaPaciente.idPersona);

                    //agrega el registro medico
                    await fundabiem.newRegistroMedico(pacienteR.idPaciente);

                    //creamos todos los familiares del paciente, hago un forEach para saber quien es el encargado
                    foreach (var familiar in model.familiaresPaciente)
                    {   //agrega la persona
                        var fm     = mapper.Map <CreatePersonaDTO>(familiar);
                        var prsona = await fundabiem.newPersona(fm);

                        //agrega el familiar
                        await fundabiem.newFamiliar(prsona.idPersona, pacienteR.idPersona, familiar.parentezco);

                        //si es encargado, hacemos el registro
                        if (familiar.isManager)
                        {
                            //registramos la direccion del encargado
                            await fundabiem.newDirection(model.direccionEncargado, prsona.idPersona);

                            //agregamos el registro a la tabla de personas encargadas
                            await fundabiem.newPersonaEncargada(prsona.idPersona, pacienteR.idPaciente);
                        }
                    }
                    transaction.Commit();
                    logger.LogInformation("Commit transaction create registro medico");
                    return(Ok());
                }
                catch (Exception ex)
                {
                    logger.LogInformation("RollBack transaction create registro medico");
                    logger.LogError(ex.ToString());
                    return(BadRequest());
                }
            }
        }