2017-09-30 1 views
0

Die Anwendung, die ich versuche zu machen ist Hospital Management System. Im EnterPatientDiagnosis-Formular (der Screenshot ist am Ende angegeben) muss ich die Diagnoseinformationen des Patienten hinzufügen. Dann muss ich die zugehörigen Abrechnungsinformationen hinzufügen. Hier ist die Primärschlüsselspalte der beiden Tabellen eine Identitätsspalte. Dies ist ein häufiger Schritt in vielen Systemen. Aber ich konnte noch nicht herausfinden, wie es zu erreichen ist.Wie kann ich Abrechnungsinformationen nach der Bereitstellung von Patientendiagnose Informationen in einer Eins-zu-eins-Beziehung einfügen

Eine Lösung, an die ich gedacht habe, ist das Einfügen aller Diagnoseinformationen unter Beibehaltung des Attributs FK_billId Null mit Stored Procedure und das Abrufen der DiagnosisId als Ausgabeparameter der Stored Procedure. Wenn der Benutzer dann die Rechnungsinformation eingibt, werde ich BillId und DiagnosisId verwenden, um die zuvor eingefügte Zeile in der Diagnosetabelle zu aktualisieren. Aber ich mag diesen Ansatz aus zwei Gründen nicht:

Erstens, Weil es eine zusätzliche Update-Abfrage hat. Da, wenn ich die DiagnosisId als Fremdschlüssel zwischen diesen 2 Datenbanktabellen anstelle von BillId verwendet hätte, wäre diese Aktualisierungsabfrage nicht erforderlich. Aber ich habe nirgendwo irgendwelche Regeln/Prioritäten gefunden, auf welchen Schlüssel Sie als FK in der One-to-One-Beziehung zurückgreifen sollten.

Zweitens, Es Konflikte mit der Entity Class, die ich erstellt habe. Ich habe manuell 2 Klassen für diese 2 Tabellen in meinem Entity Layer erstellt. Also, wenn ich eine Zeile durch Entity-Layer einfügen möchte, müsste ich der Billing-Klasse eine neue Property namens DiagnosisId geben, die mit meinem Datenbank-Tabellenschema im Widerspruch steht. Hier sind die 2 Klassen in Layer-Entity:

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; } 
} 

Hier ist das Bild der ERD der Tabellen und Web Forms: ERD of One-to-One R

Enter Patient Diagnosis Web Form

+0

Nicht sicher, ob ich vollständig verstehe. Sie können die Informationen jedoch in Ihrem Klassenobjekt aufbewahren, bis die Zahlungsinformationen hinzugefügt wurden. Sobald Sie beide haben, fügen Sie zuerst in die Fakturierungstabelle ein, wodurch Sie BillId als FK für die Diagnosetabelle verwenden können. –

Antwort

1

Sie können einen anderen Ansatz versuchen. Sie können die Beziehung zwischen den Entitäten PatientDiagnosis und Billing ändern. Sie können also zunächst einen PatientDiagnosis-Eintrag erstellen und dann einen Abrechnungseintrag dafür anlegen.

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

Beziehung zwischen zwei Entitäten hängt von ihrer Interaktion ab und wie sie in Ihrem System definiert sind. Wenn in Ihrem System eine Diagnose mehrere Abrechnungen hat, sollten Sie eine Eins-zu-viele-Beziehung verwenden, andernfalls können Sie eine Eins-zu-Eins-Beziehung verwenden. –

+0

Ich erwähnte das auch in meinem Beitrag "Erstens, weil es eine zusätzliche Update-Abfrage ....". Aber ich möchte das nicht machen, weil zuerst meine gegebene Projektanforderung das Tabellenschema auf diese Weise eingerichtet hatte. Auch ich verstehe nicht, warum es funktioniert, wenn Sie die Beziehung ändern. Weil seine Eins-zu-eins-Beziehung, so weit ich weiß, keinen Unterschied machen sollte, welchen Primärschlüssel der Tabelle ich verwende, um die Beziehung herzustellen. Auch wenn es hier einen deutlichen Unterschied macht. Ich möchte auch wissen, wie es verschiedene Online-Shops und andere Systeme/Websites macht. –

Verwandte Themen