Úvod Databázový model Screenshoty Zdrojový kód

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;