Link to home
Start Free TrialLog in
Avatar of kwh3856
kwh3856Flag for United States of America

asked on

A Relation named 'Patient' already belongs to this DataSet. How do you get a duplicate relation when only one relation is configured?

I am trying to setup a relation between two tables but keep getting this error message trapped.

A Relation named 'Patient' already belongs to this DataSet.

Can someone point me in the right direction?

Here is my code:
----------------------------------------------------------------------------------------------------------------------------------------------

protected void btnPreAuthSearch_Click(object sender, Infragistics.WebUI.WebDataInput.ButtonEventArgs e)
    {
        bool authenticated;
            authenticated = Convert.ToBoolean(Session["authenticated"]);
            
            
            if (authenticated)
            {
                  PopulatePatientDS();
                  this.PreAuthWebGrid1.DataSource = HDSDataSet.Tables["Patient"];
                  this.PreAuthWebGrid1.DisplayLayout.AutoGenerateColumns = false;
                  PreAuthWebGrid1.DisplayLayout.Bands.Clear();
                  this.PreAuthWebGrid1.DataBind();
            }

      }

      //------------   Patient Search Tab
      public DataSet HDSDataSet
      {
            get
            {
                  if (Cache["HDSDataSet"] == null)
                        Cache["HDSDataSet"] = new DataSet("HDSDataSet");

                  return (DataSet)Cache["HDSDataSet"];
            }
      }
      //------------   Patient Search Tab
      protected void PopulatePatientDS()
      {
            SqlDataAdapter sqlDA = CreatePatientAdapter();
        SqlDataAdapter sqlDAPreAuth = CreatePreAuthAdapter();
            HDSDataSet.Clear();
            sqlDA.FillSchema(HDSDataSet, SchemaType.Source);
            sqlDA.Fill(HDSDataSet, "Patient");
        sqlDAPreAuth.Fill(HDSDataSet, "Pre_Auth");

        try
        {
            HDSDataSet.Relations.Add("Patient",---------------------------------------------------DATA RELATION SET HERE   ---------------------------------
                HDSDataSet.Tables["Patient"].Columns["MPI"],
                HDSDataSet.Tables["Pre_Auth"].Columns["MPI"]);
        }
        catch (System.Exception x)
        {
            string s = x.Message;-----------------------------------------------------------------------ERROR is TRAPPED HERE  ----------------------------
            string m = s;
        }

       
    }



      //------------   Patient Adapter
      protected SqlDataAdapter CreatePatientAdapter()
      {

        string physicianNPI;
        physicianNPI = Session["physicianNPI"].ToString();

            SqlConnection conn = new SqlConnection(ConnString);
            SqlCommand cmd = new SqlCommand(SearchString, conn);
        cmd.Parameters.Add("@REFERRING_PROVIDER_NPI", SqlDbType.VarChar).Value = physicianNPI;
        cmd.Parameters.Add(new SqlParameter("@SearchFn", tbPreAuthFname.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchLn", tbPreAuthLname.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchAddress", tbPreAuthAddress.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchDOB", tbPreAuthDOB.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchSSN", tbPreAuthSSN.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchDL", tbPreAuthDL.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchPhn", tbPreAuthPhone.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchBillingId", tbPreAuthAccountNum.Text));
        cmd.Parameters.Add(new SqlParameter("@SearchSex", tbPreAuthSex.Text));


            SqlDataAdapter sqlDA = new SqlDataAdapter(cmd);
            return sqlDA;
      }

      //------------   Patient Search Tab
      private String ConnString
      {
            get
            {
                  //HDS ConnectionString comes from the Web.Config
                  return ConfigurationManager.ConnectionStrings["123121ConnectionString"].ConnectionString;

            }
      }

      //------------   Patient Search Tab
      private String SearchString
      {
            get
            {
            String srchCmd = "SELECT PATIENT.MPI, PATIENT.LAST_NAME, PATIENT.FIRST_NAME, PRIMARY_INSURANCE.PLAN_NAME, PATIENT.DATE_OF_BIRTH, PATIENT.SEX FROM PATIENT LEFT JOIN PRIMARY_INSURANCE ON PATIENT.MPI = PRIMARY_INSURANCE.MPI WHERE PATIENT.LAST_NAME = @SearchLn OR PATIENT.FIRST_NAME = @SearchFn";
                  return srchCmd;

            }
    }



    //------------   PreAuthAdapter
    protected SqlDataAdapter CreatePreAuthAdapter()
    {

        SqlConnection conn = new SqlConnection(ConnString);
        SqlCommand cmd = new SqlCommand(PreAuthSearchString, conn);
        SqlDataAdapter sqlDAPreAuth = new SqlDataAdapter(cmd);
        return sqlDAPreAuth;
    }

   

    //------------   PreAuth Search Command
    private String PreAuthSearchString
    {
        get
        {
            String srchCmd = "SELECT PRE_AUTH.MPI, PRE_AUTH.INSURANCE_NAME, PRE_AUTH.PRE_AUTH_NUM, PRE_AUTH.EXPIRY_DATE, PRE_AUTH.VISITS FROM PRE_AUTH";
            return srchCmd;

        }
    }


ASKER CERTIFIED SOLUTION
Avatar of jgordos
jgordos
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of kwh3856

ASKER

jgordos,
If I do not do the .fill on the table then when I look at my dataset there are no records on the table.  Is there some other way to accomplish this task?

Thanks
Kenny
Avatar of kwh3856

ASKER

Resolved Problem with the remove command.  I think the actual problem was due to caching.
 

protected void PopulatePatientDS()
{
SqlDataAdapter sqlDA = CreatePatientAdapter();
SqlDataAdapter sqlDAPreAuth = CreatePreAuthAdapter();
HDSDataSet.Clear();
sqlDA.FillSchema(HDSDataSet, SchemaType.Source);
sqlDA.Fill(HDSDataSet, "Patient");
sqlDAPreAuth.Fill(HDSDataSet, "Pre_Auth");
 

try
{
HDSDataSet.Relations.Remove("PatientRelation"); ------------------------------------------------Fixed problem-------------------------------
HDSDataSet.Relations.Add("PatientRelation",
HDSDataSet.Tables["Patient"].Columns["MPI"],
HDSDataSet.Tables["Pre_Auth"].Columns["MPI"]);
}
catch (System.Exception x)
{
string s = x.Message;
string m = s;
}
 
this.PreAuthWebGrid1.DataSource = HDSDataSet.Tables["Patient"];
this.PreAuthWebGrid1.DisplayLayout.AutoGenerateColumns = false;
PreAuthWebGrid1.DisplayLayout.Bands.Clear();
this.PreAuthWebGrid1.DataBind();


 
Avatar of kwh3856

ASKER

jgordos,
I resolved the problem whith the remove command.  I wanted to award you the points for trying to help me.  Thanks for your assistance.