LoganBlackisle

Controller

Sep 10th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. package controller;
  2.  
  3. import java.time.LocalDate;
  4. import java.time.LocalTime;
  5. import java.util.List;
  6. import ordination.DagligFast;
  7. import ordination.DagligSkaev;
  8. import ordination.Laegemiddel;
  9. import ordination.PN;
  10. import ordination.Patient;
  11. import storage.Storage;
  12.  
  13. public class Controller {
  14. private Storage storage;
  15. private static Controller controller;
  16.  
  17. private Controller() {
  18. storage = new Storage();
  19. }
  20.  
  21. public static Controller getController() {
  22. if (controller == null) {
  23. controller = new Controller();
  24. }
  25. return controller;
  26. }
  27.  
  28. public static Controller getTestController() {
  29. return new Controller();
  30. }
  31.  
  32. /**
  33. * Hvis startDato er efter slutDato kastes en IllegalArgumentException og
  34. * ordinationen oprettes ikke Pre: startDen, slutDen, patient og laegemiddel er
  35. * ikke null
  36. *
  37. * @return opretter og returnerer en PN ordination.
  38. */
  39. public static PN opretPNOrdination(LocalDate startDen, LocalDate slutDen, Patient patient, Laegemiddel laegemiddel,
  40. double antal) {
  41. try {
  42. startDen.compareTo(slutDen);
  43. } catch (IllegalArgumentException e) {
  44. System.out.println("Start dato er efter slut dato!");
  45. }
  46. if (antal == 0) {
  47. System.out.println("Antal = 0, Overvej");
  48. }
  49. PN pn = new PN(startDen, slutDen, laegemiddel, antal);
  50. patient.addOrdination(pn);
  51. return pn;
  52. }
  53.  
  54. /**
  55. * Opretter og returnerer en DagligFast ordination. Hvis startDato er efter
  56. * slutDato kastes en IllegalArgumentException og ordinationen oprettes ikke
  57. * Pre: startDen, slutDen, patient og laegemiddel er ikke null
  58. */
  59. public static DagligFast opretDagligFastOrdination(LocalDate startDen, LocalDate slutDen, Patient patient,
  60. Laegemiddel laegemiddel, double morgenAntal, double middagAntal, double aftenAntal, double natAntal) {
  61. try {
  62. startDen.compareTo(slutDen);
  63. } catch (IllegalArgumentException e) {
  64. System.out.println("Start dato er efter slut dato!");
  65. }
  66. DagligFast DFordination = new DagligFast(startDen, slutDen, laegemiddel, morgenAntal, middagAntal, aftenAntal,
  67. natAntal);
  68. patient.addOrdination(DFordination);
  69. return DFordination;
  70. }
  71.  
  72. /**
  73. * Opretter og returnerer en DagligSkæv ordination. Hvis startDato er efter
  74. * slutDato kastes en IllegalArgumentException og ordinationen oprettes ikke.
  75. * Hvis antallet af elementer i klokkeSlet og antalEnheder er forskellige kastes
  76. * også en IllegalArgumentException.
  77. *
  78. * Pre: startDen, slutDen, patient og laegemiddel er ikke null
  79. */
  80. public static DagligSkaev opretDagligSkaevOrdination(LocalDate startDen, LocalDate slutDen, Patient patient,
  81. Laegemiddel laegemiddel, LocalTime[] klokkeSlet, double[] antalEnheder) {
  82.  
  83. try {
  84. startDen.compareTo(slutDen);
  85. } catch (IllegalArgumentException e) {
  86. System.out.println("Start dato er efter slut dato!");
  87. }
  88. DagligSkaev DSordination = new DagligSkaev(startDen, slutDen, laegemiddel);
  89. patient.addOrdination(DSordination);
  90. return DSordination;
  91. }
  92.  
  93. /**
  94. * En dato for hvornår ordinationen anvendes tilføjes ordinationen. Hvis datoen
  95. * ikke er indenfor ordinationens gyldighedsperiode kastes en
  96. * IllegalArgumentException Pre: ordination og dato er ikke null
  97. */
  98. public void ordinationPNAnvendt(PN ordination, LocalDate dato) {
  99. try {
  100. dato.compareTo(ordination.getSlutDen());
  101. } catch (IllegalArgumentException e) {
  102. System.out.println("Dato er efter slut dato!");
  103. }
  104. try {
  105. dato.compareTo(ordination.getStartDen());
  106. } catch (IllegalArgumentException e) {
  107. System.out.println("Dato er før start dato!");
  108. }
  109. ordination.givDosis(dato);
  110. }
  111.  
  112. /**
  113. * Den anbefalede dosis for den pågældende patient (der skal tages hensyn til
  114. * patientens vægt). Det er en forskellig enheds faktor der skal anvendes, og
  115. * den er afhængig af patientens vægt. Pre: patient og lægemiddel er ikke null
  116. */
  117. public double anbefaletDosisPrDoegn(Patient patient, Laegemiddel laegemiddel) {
  118. double result;
  119.  
  120. if (patient.getVaegt() < 25) {
  121. result = patient.getVaegt() * laegemiddel.getEnhedPrKgPrDoegnLet();
  122. } else if (patient.getVaegt() > 120) {
  123. result = patient.getVaegt() * laegemiddel.getEnhedPrKgPrDoegnTung();
  124. } else {
  125. result = patient.getVaegt() * laegemiddel.getEnhedPrKgPrDoegnNormal();
  126. }
  127. return result;
  128. }
  129.  
  130. /**
  131. * For et givent vægtinterval og et givent lægemiddel, hentes antallet af
  132. * ordinationer. Pre: laegemiddel er ikke null
  133. */
  134. public int antalOrdinationerPrVægtPrLægemiddel(double vægtStart, double vægtSlut, Laegemiddel laegemiddel) {
  135. return 0;
  136. }
  137.  
  138. public List<Patient> getAllPatienter() {
  139. return storage.getAllPatienter();
  140. }
  141.  
  142. public List<Laegemiddel> getAllLaegemidler() {
  143. return storage.getAllLaegemidler();
  144. }
  145.  
  146. /**
  147. * Metode der kan bruges til at checke at en startDato ligger før en slutDato.
  148. *
  149. * @return true hvis startDato er før slutDato, false ellers.
  150. */
  151. private boolean checkStartFoerSlut(LocalDate startDato, LocalDate slutDato) {
  152. boolean result = true;
  153. if (slutDato.compareTo(startDato) < 0) {
  154. result = false;
  155. }
  156. return result;
  157. }
  158.  
  159. public Patient opretPatient(String cpr, String navn, double vaegt) {
  160. Patient p = new Patient(cpr, navn, vaegt);
  161. storage.addPatient(p);
  162. return p;
  163. }
  164.  
  165. public Laegemiddel opretLaegemiddel(String navn, double enhedPrKgPrDoegnLet, double enhedPrKgPrDoegnNormal,
  166. double enhedPrKgPrDoegnTung, String enhed) {
  167. Laegemiddel lm = new Laegemiddel(navn, enhedPrKgPrDoegnLet, enhedPrKgPrDoegnNormal, enhedPrKgPrDoegnTung,
  168. enhed);
  169. storage.addLaegemiddel(lm);
  170. return lm;
  171. }
  172.  
  173. public void createSomeObjects() {
  174. opretPatient("121256-0512", "Jane Jensen", 63.4);
  175. opretPatient("070985-1153", "Finn Madsen", 83.2);
  176. opretPatient("050972-1233", "Hans Jørgensen", 89.4);
  177. opretPatient("011064-1522", "Ulla Nielsen", 59.9);
  178. opretPatient("090149-2529", "Ib Hansen", 87.7);
  179.  
  180. opretLaegemiddel("Acetylsalicylsyre", 0.1, 0.15, 0.16, "Styk");
  181. opretLaegemiddel("Paracetamol", 1, 1.5, 2, "Ml");
  182. opretLaegemiddel("Fucidin", 0.025, 0.025, 0.025, "Styk");
  183. opretLaegemiddel("Methotrexat", 0.01, 0.015, 0.02, "Styk");
  184.  
  185. opretPNOrdination(LocalDate.of(2019, 1, 1), LocalDate.of(2019, 1, 12), storage.getAllPatienter().get(0),
  186. storage.getAllLaegemidler().get(1), 123);
  187.  
  188. opretPNOrdination(LocalDate.of(2019, 2, 12), LocalDate.of(2019, 2, 14), storage.getAllPatienter().get(0),
  189. storage.getAllLaegemidler().get(0), 3);
  190.  
  191. opretPNOrdination(LocalDate.of(2019, 1, 20), LocalDate.of(2019, 1, 25), storage.getAllPatienter().get(3),
  192. storage.getAllLaegemidler().get(2), 5);
  193.  
  194. opretPNOrdination(LocalDate.of(2019, 1, 1), LocalDate.of(2019, 1, 12), storage.getAllPatienter().get(0),
  195. storage.getAllLaegemidler().get(1), 123);
  196.  
  197. opretDagligFastOrdination(LocalDate.of(2019, 1, 10), LocalDate.of(2019, 1, 12),
  198. storage.getAllPatienter().get(1), storage.getAllLaegemidler().get(1), 2, -1, 1, -1);
  199.  
  200. LocalTime[] kl = { LocalTime.of(12, 0), LocalTime.of(12, 40), LocalTime.of(16, 0), LocalTime.of(18, 45) };
  201. double[] an = { 0.5, 1, 2.5, 3 };
  202.  
  203. opretDagligSkaevOrdination(LocalDate.of(2019, 1, 23), LocalDate.of(2019, 1, 24),
  204. storage.getAllPatienter().get(1), storage.getAllLaegemidler().get(2), kl, an);
  205. }
  206.  
  207. }
Add Comment
Please, Sign In to add comment