// POST: api/Default
 public GenericResponse<Patient> AddPatient(Patient patient)
 {
     try
        {
         int generatedPatientID = 0;
         if (patient != null && TryValidate(patient))
         {
             if (patient.BrokenRules.Count>0)
             {
                 return new GenericResponse<Patient>
                 {
                     Status = Status.Failed,
                     Messages = patient.GetErrorMessages(),
                     returnObject=patient
                 };
             }
             bool generatedPatientIDIsNew = false;
             while (generatedPatientIDIsNew == false)
             {
                 generatedPatientID = GetRandomPatientID();
                 var res = patientRepository.Find(generatedPatientID);
                 if (res == null)
                     generatedPatientIDIsNew = true;
             }
             patient.PatientId = generatedPatientID;
             var patientModel = Mapper.Map<Patient, PatientDalDto>(patient);
             patientRepository.Insert(patientModel);
         }
         else
         {
             //simulated : failed becuase of any business rule or validation
             return new GenericResponse<Patient>
             {
                 Status = Status.Failed,
                 Messages = patient.GetErrorMessages(),
                 returnObject = patient
             };
         }
         return new GenericResponse<Patient>
         {
             Status = Status.Success,
             returnObject = patient
         };
      }
     catch(Exception ex)
     {
         return new GenericResponse<Patient>
         {
             Status = Status.Failed,
             Messages = new string[] { ex.Message},
             returnObject = patient
         };
     }
 }
 public void UpdatePatient(Patient patient)
 {
     patientRepository.Update(Mapper.Map<Patient, PatientDalDto>(patient));
 }