• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Projekt przychodni w php

VPS Starter Arubacloud
+1 głos
731 wizyt
pytanie zadane 16 grudnia 2016 w PHP przez powrooz666 Początkujący (300 p.)
Witam! Niestety Nie wiem za bardzo gdzie umieścić ten temat, ponieważ jest on również powiązany z bazą danych Mysql. Gdyby było konieczne przeniesienie proszę moderatorów o zrobienie tego.

Wracając do tematu. Ćwicze umiejętności jezyka PHP, łączenie z bazą danych i wszystko co pozwala rozwinąć moją wiedzę z tej dziedziny. Projektuje system do umawiania wizyt na konkretną godzinę i kompletnie nie wiem jak się za to zabrać. Mój system zawiera już tabele lekarzy, klientów/pacjentów wizyt itp. Nie wiem jak zrobić system wzorowany trochę na znanylekarz.pl . Chodzi o to że można wybrać sobie konkretną godzinę spotkania z lekarzem, a potem tylko z updateować lub zrobić insert do tabeli . No właśnie, i tu rodzi się moje pytanie. Jak  przechować listy dostępnych godzin?. Powiedzmy że jedna wizyta trwa pół godziny a lekarz przyjmuje 5 dni w tygodniu. Wiadomo różni lekarze różne godziny pracy. Dlatego każdy lekarz będzie mógł sobie wybrać w jakich dnia tygodnia i ile godzin w każdym pracuje. Czy jest potrzebna osobna tabela w stylu godziny przyjmowania czy wystarczy dodać kolumne do tabeli lekarza? Przypominam że będzie także tabela wizyty. w której będzie godzina i data. Wtedy konieczny będzie pewnie jakiś klucz główny w jakiejś tabeli (Mam już klucz idwizyty). Jak to będzie wyglądało od strony PHP? Klikamy nad podlinkowaną godzinę dajemy akceptuj i w tym miejscu pewnie jakiś Insert. Bardzo proszę o przedstawienie jak takie systemy wyglądają od wewnątrz ,ponieważ jak wiadomo php się nie da podejrzeć. Proszę także o powstrzymanie się z komentarzami "wujek google" bo już szukałem i nie bardzo rozumiem podejście innnych. Jeśli ktoś wie jak wygląda taki system bardzo proszę o opisanie, albo wydedukowanie co nieco z mojego wycinka rzeczywistości. :)

2 odpowiedzi

+4 głosów
odpowiedź 16 grudnia 2016 przez event15 Szeryf (93,790 p.)

Odnośnie projektowania systemu przychodni:

https://www.pluralsight.com/courses/domain-driven-design-fundamentals

Świetny kurs zwracający uwagę na tworzenie czegoś takiego. Tu na tapet wzięta "przychodnia" dla zwierząt, czyli klinika weterynaryjna. 

Jako uzupełnienie polecam literaturę:

  • Domain-driven design in PHP - Carlos Buenosvinos (https://leanpub.com/ddd-in-php)
  • Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym - Eric Evans
  • Domain Specific Languages - Martin Fowler
  • Domain Specific Languages Engineering - Markus Voelter
  • Applying Domain Driven Design and Patterns - Jimmy Nilson
  • Implementing Domain-Driven Design - Vaughn Vernon
  • Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe - Martin Fowler (Helion 2005)
  • Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku - Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
  • PHP5. Obiekty, wzorce, narzędzia - Matt Zandstra
  • Wzorce implementacyjne - Kent Beck
  • xUnit Test Patterns - Gerard Meszaros (The Addison-Wesley Signature Series)
  • Software Testing. Concepts and Operations - Ali Mili (John Wiley & Sons 2015)
  • TDD - Kent Beck
  • Testy jednostkowe. Świat niezawodnych aplikacji. Wydanie II - Roy Osherove
  • Growing Object-Oriented Software Guided by Tests - Steve Freeman (The Addison-Wesley Signature Series)
  • Kod doskonały. Jak tworzyć oprogramowanie pozbawione błędów. Wydanie II - Steve McConnell (Helion)
  • Agile. Programowanie zwinne - zasady, wzorce i praktyki wytwarzania oprogramowania - Robert C. Martin (Helion 2008)
  • Pragmatyczny programista. Od czeladnika do mistrza - Andrew Hunt, David Thomas (Helion 2014)
  • Zwinny samuraj. Jak programują mistrzowie zwinności - Jonathan Rasmusson
  • Czysty kod. Podręcznik dobrego programisty - Robert C. Martin
  • Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów - Robert C. Martin
  • Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki - Robert C. Martin

Oczywiście pisząc aplikację obiektowo, nie są nam potrzebne przykłady w danym języku, tylko jakimkolwiek. Obiekty na świecie są zawsze takie same. Przynajmniej nie różnią się w przypadku C#, PHP, Java, F# (zasadniczo).

 

Kurs na pluralsight to C#, jednak wiedza w nim zawarta pozwala na samodzielne zbudowanie poważnej aplikacji. W treści znajdziesz tworzenie harmonogramu oraz wielu różnych bardzo ważnych elementów.

Książki które podlinkowałem też Ci pomogą. 

komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)
Dodatkowo zapoznaj się i polub z Doctrine ORM lub DBAL. Bez tego ciężko będzie Ci pracować przy tym projekcie.
komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)
Przy okazji, tu masz ciekawie opisany projekt specyfikacji (Behat + PHPSpec):

http://cocoders.com/cocoders-flow-specyfikacja-i-projektowanie-domeny-poprzez-przyklady

 

A tu przykład na Githubie

https://github.com/cocoders/playground/tree/modelowanie-przez-przyklady
komentarz 16 grudnia 2016 przez powrooz666 Początkujący (300 p.)
Dzięki na pewno skorzystam  z kilku propozycji :)
komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)
Jeśli przerobisz kurs z pluralsight, chociażby w teorii - wiekszosc problemów które masz teraz po prostu zniknie wraz z pojawieniem się nowej, prawidłowej drogi tworzenia aplikacji. Póki co skupiasz się na bazie danych i tabelach, a powinieneś na obiektach i przypadkach użycia.

W takich aplikacjach najważniejszym elementem są dane, ich przepływ, a nie sposób ich przechowywania.

Wszystkiego się dowiesz z plurala, książki Erica Evansa i Vaughn Vernon'a
komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)

Zrozumiesz też, że problem typu:

. No właśnie, i tu rodzi się moje pytanie. Jak  przechować listy dostępnych godzin?. Powiedzmy że jedna wizyta trwa pół godziny a lekarz przyjmuje 5 dni w tygodniu. Wiadomo różni lekarze różne godziny pracy. Dlatego każdy lekarz będzie mógł sobie wybrać w jakich dnia tygodnia i ile godzin w każdym pracuje. Czy jest potrzebna osobna tabela w stylu godziny przyjmowania czy wystarczy dodać kolumne do tabeli lekarza? Przypominam że będzie także tabela wizyty. w której będzie godzina i data. Wtedy konieczny będzie pewnie jakiś klucz główny w jakiejś tabeli (Mam już klucz idwizyty). 

Staje się trywialny do rozwiązania, gdy nie myślisz tabelami a danymi. 

komentarz 16 grudnia 2016 przez HaKIM Szeryf (87,590 p.)

Event, polecisz jakąś metodykę pracy dla jednoosobowego zespołu? Gdy padło takie pytanie podczas konf. PHPers każdy się zaśmiał, nie pamiętam aby padła tam konkretna odpowiedź. Poprawka: Było to wykład (zapewne oglądałeś) o CR i gość zapytał jak robić CR w przypadku jednej osoby.

Scrum, Agile, Kanban czy jeszcze coś innego?

Zazwyczaj Zespół Scrum składa się z od 3 do 9 osób.

https://pl.wikipedia.org/wiki/Scrum

Także ten... Scrum odpada.

Przy okazji: Którą z książek poleciłbyś po kursie na pluralsight na temat DDD (Trochę ich jest)?

komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)
Jako pojedyncza osoba - korzystałbym po prostu z elementów metodyk.

Ja robie sobie taski na JIRA. Do tego za pomocą Wakatime liczę sobie czas spędzony z edytorem. Nie możesz być jednocześnie scrum masterem i developerem. Raczej polegaj na swoim zaangażowaniu i sam rejestruj sobie czas. W przypadku gdy jesteś sam nie stworzysz nawet zaczątków projektu XP. CodeReview powinna robić osoba która nie pisała danego kodu. Ja jak jestem samodzielnym programistą w jakimś projekcie, to mam od tego wszelkiego rodzaju lintery, mess detectory.

Kanban (w wydaniu trello np) świetnie się sprawdza bo robisz sobie taski jak lubisz - do tego fajnie można historyjki rozpisywać.

Generalnie - sumienność i zaparcie własne.

Polecam przede wszystkim Erica Evansa, Vaughna Vernona. Do tego cos o wzorcach projektowych (banda czworga) i cos o refaktoryzacji. Jeśli chcesz dobrej wiedzy i dość praktycznej o TDD to Kent Beck i Roy Osherove.
komentarz 16 grudnia 2016 przez HaKIM Szeryf (87,590 p.)
edycja 16 grudnia 2016 przez HaKIM

Dzięki.

Banda czworga zakupiona. Po skończeniu części pierwszej z Architektura Systemów Zarządzania Przedsiębiorstwem [...] i przerobieniu przydatnych na obecny moment wzorców biorę się za pierwszą produkcję.

Dokończę Zwinne wytwarzanie oprogramowania. [...] i w planach mam TDD (Głównie chodzi o ogarnięcie specyfikacji PHPUnit na należytym poziomie), DDD i jakieś narzędzia typu Docker czy PhpMetrics (Przynajmniej to w teorii powinno szybko wpaść). Jak wyrobię się do końca Lutego to będzie dla mnie nie lada skuces.

Jak się zaprę to i Kanbana gdzieś wcisnę. :D

Miłego!

komentarz 16 grudnia 2016 przez event15 Szeryf (93,790 p.)

Po skończeniu części pierwszej z Architektura Systemów Zarządzania Przedsiębiorstwem [...] i przerobieniu przydatnych na obecny moment wzorców biorę się za pierwszą produkcję.

Nie powinna to być Twoja pierwsza książka w zakresie wzorców. Zawiera wzorce, które w 80% aplikacji nie wykorzystasz, ponieważ masz Doctrine.

 

komentarz 16 grudnia 2016 przez HaKIM Szeryf (87,590 p.)
Zgadza się. Książkę zakupiłem aby wiedzieć jak działają bebechy ORM'ów, na jakich wzorach się opierają oraz [jak można je sprawnie łączyć] <- (Również mowa o wzorcach).

Mam przeczucie, że gdy wiesz jak działa biblioteka od podstaw to inaczej zaczynasz na nią patrzeć i korzystać.

(Co nie jest równoznaczne temu, że muszę wiedzieć jak działa każda zaciągnięta biblioteka - tak na wszelki, gdyby komuś się nudziło i zaczął pluć zbędnym sarkazmem).
+1 głos
odpowiedź 16 grudnia 2016 przez Lrror Bywalec (2,720 p.)

Ja zrobił bym to tak.
Tabela z lekarzami np: "lekarze" w której była by godz. rozpoczęcia pracy i zakończenia.
Druga tabela np: "wizyty" w której było by ID lekarza z tabeli "lekarze", była by też godz od której lekarz będzie przyjmował pacjenta i godz. w której wizyta dobiegła by końca.

Czas zapisał bym metodą milisekund ale jak kto woli.
Od strony php zrobił bym to tak.

 

if($CzasSerwera > $czasRozpoczeciapracy OR $CzasSerwera < $czasZakonczeniapracy)
{
  $wolnagodzina = 0;

  $wizyty = $db->query("SELECT * FROM `wizyty` WHERE `id_lekarz` = 1");
 
  for($i =0;$i<Count($wizyty);$i++)
  {
      if($wolnagodzina < $wizyty[$i]['czas_z'] OR $wizyty[$i]['czas_z'] <  $czasZakonczeniapracy)
      {
         $wolnagodzina =  ($wizyty[$i]['czas_z'] + 5000);
       }
    }

   if($wolnagodzina != 0)
   {
     ///TU skrypt insertowania pacjenta na wolną godzinę + 5 min przerwy
   }
}


 

komentarz 16 grudnia 2016 przez powrooz666 Początkujący (300 p.)
Rozumiem a co jeśli w przyszłości chciałbym dodać możliwość "myślenia" kalendarza, czyli np. Nie będzie możliwości zarejestrowania się powiedzmy w Święta Bożego narodzenia lub coś takiego? Warto wtedy rozbudowywać tabele lekarze czy lepiej jest może stworzyć nową tabelę?

Podobne pytania

0 głosów
2 odpowiedzi 688 wizyt
pytanie zadane 5 września 2016 w PHP przez Stiuil06 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 354 wizyt
+2 głosów
2 odpowiedzi 473 wizyt
pytanie zadane 26 czerwca 2015 w Nasze projekty przez ArturB Mądrala (6,060 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...