2017-09-30 3 views
0

L'application que j'essaie de faire est le système de gestion d'hôpital. Dans le formulaire EnterPatientDiagnosis (une capture d'écran est donnée à la fin), j'ai besoin d'ajouter les informations de diagnostic du patient, puis j'ai besoin d'ajouter les informations de facturation associées. Ici, les deux tables Colonne de clé primaire est une colonne d'identité. Ceci est une étape courante dans de nombreux systèmes. Mais je ne pouvais toujours pas trouver de détails sur la façon de l'atteindre.Comment puis-je insérer des informations de facturation après avoir fourni des informations de diagnostic patient en relation biunivoque? L'une après l'autre

Une solution à laquelle je pensais est d'insérer toutes les informations de diagnostic en gardant l'attribut FK_billId Null en utilisant la procédure stockée et d'obtenir le DiagnosisId en tant que paramètre de sortie de la procédure stockée. Ensuite, lorsque l'utilisateur soumettra des informations de facturation, j'utiliserai BillId et DiagnosisId pour mettre à jour la ligne précédemment insérée dans la table de diagnostic. Mais je n'aime pas cette approche pour 2 raisons:

Premièrement, Parce qu'il a une requête de mise à jour supplémentaire. Depuis, si j'ai utilisé le DiagnosisId en tant que clé étrangère entre ces 2 tables de base de données plutôt que BillId, cette requête de mise à jour ne serait plus nécessaire. Mais je n'ai trouvé aucun endroit donnant des règles/préséance sur quelle touche vous devriez utiliser comme FK dans une relation One-to-One.

Deuxièmement, Il est en conflit avec la classe Entity que j'ai créée. J'ai créé manuellement 2 classes pour ces 2 tables dans ma couche entité. Donc, si je veux insérer une ligne dans la couche d'entité, je devrais donner à la classe de facturation une nouvelle propriété nommée DiagnosisId qui est en contradiction avec mon schéma de table de base de données. Voici les 2 classes dans la couche Entité:

public class EntityPatientDiagnosis 
{ 
    //Diagnosis Id is automatically assigned 
    public int DiagnosisId { get; set; } 
    public int PatientId { get; set; } 


    public string Symptoms { get; set; } 
    public string DiagnosisProvided { get; set;} 

    public string AdministeredBy { get; set; } 

    public DateTime DateofDiagnosis { get; set; } 
    public string FollowUpRequired { get; set; } 
    public DateTime DateOfFollowUp { get; set; } 
    public int BillId { get; set; } //BillId -> Foreign Key 

} 

public class EntityBilling 
{ 
    //BillId -> Primary Key ->set automatically 
    public int BillId { get; set; } 
    public int BillAmount { get; set; } 
    public string CardNumber { get; set; } 
    public string ModeOfPayment { get; set; } 
} 

Voici l'image du ERD des tables et des formulaires Web: ERD of One-to-One R

Enter Patient Diagnosis Web Form

+0

Je ne sais pas si je comprends parfaitement. Mais vous pouvez conserver les informations dans votre objet de classe jusqu'à ce que les informations de facturation soient ajoutées. Une fois que vous avez les deux, insérez d'abord dans la table de facturation, cela vous donnera BillId à utiliser comme FK pour la table de diagnostic. –

Répondre

1

Vous pouvez essayer une approche différente. Vous pouvez modifier la relation entre les entités PatientDiagnosis et Billing. Ainsi, vous pouvez d'abord créer une entrée PatientDiagnosis, puis créer une entrée Facturation.

public class EntityPatientDiagnosis 
{ 
    //Diagnosis Id is automatically assigned 
    public int DiagnosisId { get; set; } 
    public int PatientId { get; set; } 
    public string Symptoms { get; set; } 
    public string DiagnosisProvided { get; set;} 
    public string AdministeredBy { get; set; } 
    public DateTime DateofDiagnosis { get; set; } 
    public string FollowUpRequired { get; set; } 
    public DateTime DateOfFollowUp { get; set; } 

} 


public class EntityBilling 
{ 
    //BillId -> Primary Key ->set automatically 
    public int BillId { get; set; } 

    //DiagnosisId -> Foreign Key unique 
    public int DiagnosisId { get; set; } 

    public int BillAmount { get; set; } 
    public string CardNumber { get; set; } 
    public string ModeOfPayment { get; set; } 
} 
+0

La relation entre deux entités dépend de leur interaction et de la façon dont elles sont définies dans votre système. Si dans votre système, un diagnostic a plusieurs facturations, vous devez utiliser une relation un à plusieurs, sinon, vous pouvez utiliser une relation un à un. –

+0

J'ai également mentionné que dans mon message "Tout d'abord, parce qu'il a une requête de mise à jour supplémentaire ....". Mais je ne veux pas faire cela parce que tout d'abord, l'exigence de mon projet donné avait le schéma de table mis en place de cette façon. Aussi je ne comprends pas pourquoi cela fonctionne quand vous changez la relation. Parce que sa relation un-à-un pour autant que je sache, il ne devrait pas faire la différence quelle clé primaire de la table j'utilise pour faire la relation. Même si cela fait une nette différence ici. Je veux aussi savoir comment les différentes boutiques en ligne et autres systèmes/sites Web le font. –