Zajímavé části zdrojového kódu
Vytvoření zaškrtávacího seznamu symptomů syndromu
dm.Query1.SQL.Text :=
'SELECT DISTINCT SympPK, SympNazev, SympPopis, SyndPK' +
' FROM ''' + dm.taSymptomy.TableName + ''' taSymp' +
' LEFT JOIN ''' + dm.taSySy.TableName + ''' taSySy' +
' ON ((taSymp.SympPK = taSySy.SympPK)' +
' AND (SyndPK=' + dm.taSyndromy.FieldByName('SyndPK').AsString + '))' +
' ORDER BY SympNazev';
dm.Query1.Open;
n := dm.Query1.RecordCount;
Symptomy.Items.Clear;
SetLength(SympPK, n);
SetLength(SympNazev, n);
SetLength(SympPopis, n);
for i := 0 to n - 1 do begin
SympPK [i] := dm.Query1.FieldByName('SympPK' ).AsString;
SympNazev[i] := dm.Query1.FieldByName('SympNazev').AsString;
SympPopis[i] := dm.Query1.FieldByName('SympPopis').AsString;
s := SympNazev[i];
if SympPopis[i] <> '' then s := s + ' (' + SympPopis[i] + ')';
//s := s + ' [' + dm.Query1.FieldByName('SyndPK').AsString + ']';
Symptomy.Items.Add(s);
Symptomy.Checked[i] := dm.Query1.FieldByName('SyndPK').AsInteger > 0;
dm.Query1.Next;
end;
dm.Query1.Close;
Uložení zaškrtávacího seznamu symptomů syndromu do databáze
ExecSQL(
'DELETE FROM ''' + dm.taSySy.TableName + '''' +
' WHERE SyndPK=' + dm.taSyndromy.FieldByName('SyndPK').AsString);
for i := 0 to Symptomy.Items.Count - 1 do
if Symptomy.Checked[i] then
ExecSQL(
'INSERT INTO ''' + dm.taSySy.TableName + '''' +
' (SympPK, SyndPK)' +
' VALUES (' + SympPK[i] + ', ' + dm.taSyndromy.FieldByName('SyndPK').AsString + ')');
Zobrazení hlavní a vedlejší diagnozy na zdravotní kartě
dm.Query1.SQL.Text :=
'SELECT SyndNazev, DiagPoradi FROM ''' + dm.taSyndromy.TableName + ''' synd, ''' + dm.taDiagnozy.TableName + ''' diag' +
' WHERE synd.SyndPK=diag.SyndPK' +
' AND diag.NavsPK=' + dm.taNavstevy.FieldByName('NavsPK').AsString +
' AND DiagPoradi>0 ORDER BY DiagPoradi';
dm.Query1.Open;
ouDiagnozaHlavni.Caption := dm.Query1.FieldByName('SyndNazev').AsString;
dm.Query1.Next;
s := '';
while not dm.Query1.Eof do begin
if s <> '' then s := s + ', ';
s := s + dm.Query1.FieldByName('SyndNazev').AsString;
dm.Query1.Next;
end;
ouDiagnozaVedlejsi.Caption := s;
dm.Query1.Close;
Automatické sestavení diagnózy a uložení do databáze
var synd: tSyndrom;
i: integer;
begin
dm.Query1.Active := false;
foDiagnoza.lvNevim.Items.Clear;
foDiagnoza.lvAno.Items.Clear;
foDiagnoza.lvNe.Items.Clear;
dm.Query1.SQL.Text :=
'SELECT SyndPK, SyndNazev, SyndTeorie, SyndPrincipy' +
', (SELECT count(*)' +
' FROM ''' + dm.taSymptomy.TableName + ''' symp' +
' , ''' + dm.taSySy.TableName + ''' sysy' +
' , ''' + dm.taAnamnezy.TableName + ''' anam' +
' WHERE synd.SyndPK = sysy.SyndPK' +
' AND symp.SympPK = sysy.SympPK' +
' AND symp.SympPK = anam.SympPK' +
' AND anam.NavsPK = ' + dm.taNavstevy.FieldByName('NavsPK').AsString +
') as Pocet' +
', (SELECT count(*)' +
' FROM ''' + dm.taSymptomy.TableName + ''' symp' +
' , ''' + dm.taSySy.TableName + ''' sysy' +
' , ''' + dm.taAnamnezy.TableName + ''' anam' +
' WHERE symp.SympPK = sysy.SympPK' +
' AND sysy.SyndPK = synd.SyndPK' +
' AND symp.SympPK = anam.SympPK' +
' AND anam.NavsPK = ' + dm.taNavstevy.FieldByName('NavsPK').AsString +
' AND anam.AnamPrioritni = true' +
') as PocetPrioritnich' +
', (SELECT count(*)' +
' FROM ''' + dm.taDiagnozy.TableName + ''' diag' +
' WHERE diag.SyndPK = synd.SyndPK' +
' AND diag.NavsPK = ' + dm.taNavstevy.FieldByName('NavsPK').AsString +
') as PocetDiagnoz' +
', (SELECT DiagPoradi' +
' FROM ''' + dm.taDiagnozy.TableName + ''' diag' +
' WHERE diag.SyndPK = synd.SyndPK' +
' AND diag.NavsPK = ' + dm.taNavstevy.FieldByName('NavsPK').AsString +
') as DiagPoradi' +
' FROM ''' + dm.taSyndromy.TableName + ''' synd' +
' WHERE (SELECT count(*) FROM ''' + dm.taSymptomy.TableName + ''') >= 0' +
' AND (SELECT count(*) FROM ''' + dm.taSySy.TableName + ''') >= 0' +
' AND (SELECT count(*) FROM ''' + dm.taAnamnezy.TableName + ''') >= 0' +
' AND (SELECT count(*) FROM ''' + dm.taDiagnozy.TableName + ''') >= 0';
dm.Query1.Open;
while not dm.Query1.Eof do begin
synd := tSyndrom.Create;
synd.SyndPK := dm.Query1.FieldByName('SyndPK').AsInteger;
synd.SyndNazev := dm.Query1.FieldByName('SyndNazev').AsString;
synd.SyndTeorie := dm.Query1.FieldByName('SyndTeorie').AsString;
synd.SyndPrincipy := dm.Query1.FieldByName('SyndPrincipy').AsString;
synd.Prioritni := dm.Query1.FieldByName('PocetPrioritnich').AsInteger > 0;
synd.PocetSymptomu := dm.Query1.FieldByName('Pocet').AsInteger;
synd.DiagPoradi := dm.Query1.FieldByName('DiagPoradi').AsInteger;
if dm.Query1.FieldByName('PocetDiagnoz').AsInteger = 0 then
synd.zarazeni := zaNevim
else if synd.DiagPoradi > 0 then
synd.zarazeni := zaAno
else
synd.zarazeni := zaNe;
foDiagnoza.PridejSyndromDoListu(synd);
dm.Query1.Next;
end;
dm.Query1.Close;
foDiagnoza.SeradListy;
foDiagnoza.grSyndrom.Visible := false;
if foDiagnoza.ShowModal <> mrOK then exit;
ExecSQL('DELETE FROM ''' + dm.taDiagnozy.TableName + ''' where NavsPK=' + dm.taNavstevy.FieldByName('NavsPK').AsString);
with foDiagnoza.lvAno.Items do
for i := 0 to Count-1 do begin
synd := Item[i].Data;
ExecSQL('INSERT INTO ''' + dm.taDiagnozy.TableName + ''' (NavsPK, SyndPK, DiagPoradi) values (' + dm.taNavstevy.FieldByName('NavsPK').AsString + ', ' + IntToStr(synd.SyndPK) + ', ' + IntToStr(synd.DiagPoradi) + ')');
end;
with foDiagnoza.lvNe.Items do
for i := 0 to Count-1 do begin
synd := Item[i].Data;
ExecSQL('INSERT INTO ''' + dm.taDiagnozy.TableName + ''' (NavsPK, SyndPK, DiagPoradi) values (' + dm.taNavstevy.FieldByName('NavsPK').AsString + ', ' + IntToStr(synd.SyndPK) + ', 0)');
end;
Ulozit;
Editovat;
end;