1

データベーステーブル構造に関するクエリがあります。SQLServer2008データベースのPatientDetailsテーブルは次のようになります。

--PatientId(PK)--PatientType-- --DoctorId(FK)--DateOfVisit-- --PrescriptionId(FK)-

各患者は何度も病院を訪れることがあります。患者のすべての訪問をリンクし、管理者が前の訪問と次の訪問でナビゲートできるようにリンクされた方法でそれらを表示する必要があります。

したがって、VisitIdを使用して訪問ごとにレコードを作成することによってのみそれを実行できると思います。

データベースに不要なフィールドがロードされないように注意する必要があります。また、フェッチ時間に悪影響を与えることはありません。

これらが利用可能な方法だと思います。利用可能な場合は私に提案してください。

--PatientId(PK)--PatientType-- --DoctorId(FK)--DateOfVisit-- --PrescriptionId(FK)---VisitId-- --PrevVisitId-- NextVisitId--

また

として訪問するための別のテーブルを持っている

--VisitId(PK)--PrevVisitId(FK)----NextVisitId(FK)--

投稿が重複している場合はお詫びします。訂正してください。必要なときにいつでもどこでもリダイレクトしてください。

4

1 に答える 1

1

したがって、VisitIdを使用して訪問ごとにレコードを作成することによってのみそれを実行できると思います。

訪問ごとに行が必要です。各行にキーが必要です。キーは単一のID番号である必要はありません。訪問ごとに記録する必要があるのは、少なくとも

create table visits (
  patient_id integer not null, -- references patients (patient_id), not shown
  doctor_id integer not null,  -- references doctors (doctor_id), not shown
  office_visit_start timestamp not null default current_timestamp,
  primary key (patient_id, office_visit_start)
);

insert into visits values (1, 1, '2012-02-01 08:00');
insert into visits values (1, 1, '2012-02-01 15:00');
insert into visits values (1, 1, '2012-03-01 09:33');
insert into visits values (2, 1, '2012-02-01 09:00');

(正確な構文は、dbmsプラットフォームによって異なります。)かなり単純なクエリで前の訪問と次の訪問を見つけることができます。「office_visit_start」は、患者の訪問の順序を示します。

クエリの例。。。

-- Previous visit for patient # 1 (before 2012-02-01 15:00)
select patient_id, max(office_visit_start)
from visits 
where patient_id = 1
  and office_visit_start < '2012-02-01 15:00'
group by patient_id

-- Next visit for patient # 1 (after 2012-02-01 15:00)
select patient_id, min(office_visit_start)
from visits 
where patient_id = 1
  and office_visit_start > '2012-02-01 15:00'
group by patient_id
于 2012-08-17T16:44:18.027 に答える