https://wiki.itcollege.ee/api.php?action=feedcontributions&user=Ptiganik&feedformat=atomICO wiki - User contributions [en]2024-03-29T14:35:58ZUser contributionsMediaWiki 1.41.0https://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131585Kuldneloojang2018-06-11T11:53:57Z<p>Ptiganik: /* Veebiteenusele */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid meie projektile=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: BeerPressure<br />
<br />
[https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang retsensioon discussioni lehel]<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Lõpptoode===<br />
https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0<br />
(seisuga 02.06.2018, bugide parandusi lisatud 04.06.2018)<br />
<br />
===Versiooni haldus===<br />
'''Veebirakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
'''Klientrakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
===Ettevalmistus.===<br />
Projekti paigaldamiseks on kaks varianti: 1) kloonida mõlemad repositooriumid või 2) alla laadida .zip fail ning lahti pakkida see sobivasse kohta. Viimasel juhul paigaldatakse nii veebi- kui ka klientrakendus korraga.<br />
<br />
<br />
<br />
===Veebirakendus.===<br />
Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev. Sellisel juhul tuleb vastav aadress meelde jätta ning kopeerida see klientrakenduse sätetesse. Vastasel juhul ei oska klient veebirakenduse poole pöörduda.<br />
<br />
<br />
<br />
===Klientrakendus.===<br />
Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks ning käsud käivitamiseks:<br />
<br />
'''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid)<br />
<br />
'''npm run start-en''' või '''npm run start-ee''' (vastavalt inglise või eesti keelse rakenduse käivitamiseks)<br />
<br />
<br />
Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
Uues andmebaasis esimest korda käivitamisel täidetakse baasis ainult FrequencyTypes tabel, ülejäänud info patsientide, tubade jne kohta tuleb retsensendil ise klientrakendusse sisestada ja asuda seoseid looma. Kuna teiste rollide õigused on muudatuste tegemiseks andmebaasis on piiratud, tuleks alustada andmete sisestamist rollis "admin".<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine, analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.<br />
<br />
=Meie tehtud retsensioonid=<br />
<br />
==Veebiteenusele==<br />
'''Retsensioon meeskond Curry veebiteenusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]''' <br />
<br />
Meeskond Curry on loonud krüptovaluuta tehingute vahendamiseks mõeldud veebiteenuse. Veebiteenuse kaudu saab luua omale kasutaja ja hiljem loodud kasutaja andmeid kasutades panna üles krüptovaluutade vahetustehinguid. Kasutaja saab valida, kas müüa või osta mingit valuutat. Tehingu toimimiseks on vajalik vastaspool ehk keegi teine, kes soovib teha vastupidist tehingut. Kui vastaspoolt ei leita, siis jääb tehing ootele, kuni vastaspool tekib. Äriloogiliselt oli valitud teema ilmselt üpris keerukas.<br />
<br />
Projekt on arhitektuuriliselt üles ehitatud vastavalt õppeaine käigus õpetatud nõuannetele ehk projektil on nö. kihiline arkitektuur, mis võimaldab asju kihi kaupa vajadusel asendada. See on võimalik, sest kihtide vahelised ühendused on kirjutatud kasutades liideseid. Selgelt on eristatavad andmete kiht, äriloogika kiht ning veebiteenuse kiht. Need kihid on jagatud veel omakorda alamkihtideks.<br />
<br />
Veebiteenuse domeeni mudel koosneb 11 olemist, millest üks on jäetud kasutaja andmete jaoks. Olemid kirjeldavad valuutasid ja nendega kaubeldavaid valuuta-paare, tehinguid koos tehingu staatuse ja tüüpidega ning konto seisu, jne. Andmemudel on põhjalik ning koostatud tulevikkuvaatavalt. Sellise andmemudeli pealt saab luua funktsionaalsust, mida sellises keskkonnas kindlasti kliendid tahaksid näha, kuid hetkel pole veel implementeeritud. Näiteks oma konto seisu ajalise muutuse jälgimine, valuutakursside liikumine ajas, erinevat tüüpi tehingud, jne.<br />
<br />
Andmemudeli (Domain) juures on kasutatud annotatsioone, et määrata ära väljade pikkusi, serialiseerimist, jne. Kuid andmete seisukohalt peaks määrama rangemalt, millised väljad on kohustuslikud. Hetkel lubataks andmebaasi panna ka sellised tehinguid, kus näiteks puuduvad tehingu osapooled või valuutad, jne. Õnneks on vastav kontroll enamasti äriloogika poolel. Proovisime teha tehinguid, kus osa infot oleks puudu, aga need ei läinud läbi. Samas kui üritasime lisada uusi valuuta paare, kus puudusid teatud väljad, siis õnnestus saada andmebaasi viga ning teenus kokku jooksutada.<br />
<br />
Annotatsioonid (näiteks välja pikkused) on puudu DTOde küljest, mistõttu kontrollerite ModelState.IsValid kontroll ei pruugi anda oodatud tulemust ja teenuste kihile võidakse edasi saata andmeid, mis andmemudelile tegelikult ei vasta. Selle probleemi testimiseks proovisime lisada kasutaja, kelle nimi oli pikem kui domeenimudelis kirjeldatud 64 tähemärki ning teenus jooksis oodatult kokku. <br />
<br />
Andmete kättesaamise kihid on läbimõeldud. Tore on näha, et lahendusi on erinevaid ning kõik ei kasuta UnitOfWork mustrit. See on antud mahuga projekti juures mõistlik lähenemine. RepositoryProvider/RepositoryFactory mustriga oleks saanud mõned repositooriumid jätta kirjutamata, sest nendes polnud erimeetodeid, kuid see õnneks oli väike lisatöö.<br />
<br />
Kontrollerid on väga kenasti annoteeritud. Lisaks autoriseerimise annotatsioonidele on kasutusel annotatsioonid, mis annavad teada tagastatavad objekti kuju ning võimalikud http staatuskoodid. Nende pealt on loodud swaggeriga API dokumentatsioon, millega on klientrakenduse kaudu võimalik ka tutvuda. Kontrolleritest kasutavad async meetodeid ainult kasutaja kontroller. Kui teenuse kasutusmahud kasvavad, tasuks ka teised kontrollerid kasutaja kontrolleri näitel ümber ehitada. <br />
<br />
Koodi paigaldusjuhised on lakoonilised, piirdudes ühe lausega: “Proovimaks administraator õigustes kasutaja funktsionaalsust, logi sisse kasutajanimega 'adminuser' ning parooliga 'Kala1.maja'”. Sõnagi pole juttu sellest, et uues masinas paigaldamiseks peab looma kõigepealt andmebaasi, jne. Seda asja annaks parandada. Samas on see viga, mis on ühine paljude teiste projektidega. Õnneks sai peale järelepärimist projekti autorilt juhiseid juurde. Retsenseerijale oleks olnud abiks ka lahenduse kirjeldus. Näiteks, et mis eesmärk mingil olemil on, kuidas ja milliseid teenuseid kasutatakse kasutajalugude lahendamiseks jne. Tööde nimekirjas Wiki lehle on ära toodud vaid erinevate etappide alustamise aeg ning sellest ei ole võimalik välja lugeda, kuidas arendusprotsess toimus ning kes ja kui palju panustas. Veebiteenusel paistab puuduvat logide või mingisuguse muu lahendusena kasutusstatistika kogumise võimalus. <br />
<br />
Kokkuvõtteks võib öelda, et meeskond Curry on demonstreerinud edukalt, et nad on omandanud õppeaine õpiväljundid. Loodud projekt peegeldab seda, mida poolaasta jooksul on õpitud ning endale ülesandeks võetud keerukas äriloogika on edukalt ja jätkusuutlikult realiseeritud.<br />
<br />
==Klientrakendusele==<br />
'''Retsensioon meeskond Curry klientrakendusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]'''<br />
<br />
Meeskond Curry on loonud klientrakendusena kliendi oma poolt loodud veebiteenusele. Kaks asja koos moodustavad platvormi, mida saab kasutada krüptorahadega kauplemiseks. Platvorm toimib põhimõttele, et igaüks saab tulla ja luua omale konto, kus saab ülevaate oma krüptorahakoti seisust. Testimiseks täidetakse kasutaja rahakott juhuslike arvude generaatori abil erinevate krüptovaluutadega. Kasutajal on võimalik panna üles ordereid meelepäraste valuutapaaride vahel täpsustades soovitud hinna, koguse ja tehingu tüübi (ost või müük). Orderid jäävad seni üles, kuni leidub vastaspool, kes soovib viia läbi vastupidise tehingu. Seepärast on soovitatav rakenduse testimiseks teha kaks kontot, kelle vahel siis tehinguid ellu viia. <br />
<br />
<br />
Klientrakendus on teostatud Angulari raamistikus. Klientrakendus on kirjutatud veebiteenuse solutioni sisse, mistõttu käib tema käivitamine mugavalt üheskoos veebiteenusega. Klientrakenduse projekti ülesehitus on selge ja arusaadav. Kood on suudetud hoida puhas. Mõned komponendid on siiski päris suured ja võiks ollaväiksemateks osadeks jaotatud. Esineb mõningat koodi kopeerimist, mida oleks võimalik vähendada kirjutades asju komponentidesse. Näiteks tehingute teostamisel on ostu- ja müügitehingu vormid ühesugused, mida oleks lihtsalt saanud hoida ühes komponendis.<br />
Rakenduse kasutamise, ega paigaldamise kohta pole mitte mingisugust informatsiooni. Õnneks on talupoja mõistusega rakenduse käivitamine siiski võimalik. Tuli avada vastav solution, luua lokaalne andmebaas ning seejärel käivitada solutionis vastav projekt (WebApp), mis pani korraga käima nii veebiteenuse kui ka klientrakenduse.<br />
Järgnevalt mõningaid tähelepanekuid rakenduse kasutamise kohta:<br />
<br />
* Kasutaja loomisel valideeritakse kenasti kasutajaandmeid. Pole võimalik sisestada liiga lühikest nime või liiga lihtsat parooli. Kasutaja loomisel antakse kenasti tagasisidet, kui üritatakse luua kasutajat, kelle kasutajanimi või email on juba kasutusel.<br />
* Kasutajal on võimalik muuta kasutajaandmeid - eesnimi, perekonna nimi ning email. Paraku pole võimalik muuta ei parooli ega kasutajanime.<br />
* Klientrakendus näeb selge ja puhas välja. See on saavutatud Bootstrap CSS raamistiku kasutamisega. <br />
* Äriloogika on krüptovaluutade-võõrale kasutajale pisut segane. Kliendi vaatest on näha, et kauplemine on võimalik vaid kahe valuuta suhtes (Bitcoin ja Ethereum). See tähendab, et üks kahest peab olema alati valitud. Seejärel saab kasutaja valida, mis valuuta on tehingu vastaspooleks. See tähendab, et kui näiteks soovitakse vahetada Monero valuuta Agrello vastu, siis tuleb kõige pealt Monero vahetada Ethereumi vastu, mis seejärel vahetatakse Bitcoini vastu, mille eest lõpuks saab osta Agrello valuutat.<br />
* Huvitaval kombel saab kasutaja olla iseenda tehingu vastaspooleks. See tähendab, et kui kasutaja on pannud üles orderi ostmiseks ja seejärel ka müümiseks, siis ka selline tehing läbi viiakse.<br />
* Klientrakenduses on puudu loogilisi funktsionaalsuseid, mis võiks olla seda sorti platvormil realiseeritud. Näiteks kasutajana sooviksin näha enda poolt läbiviidud tehingute ajalugu või sooviksin tühistada enda poolt üles pandud orderieid, jne.<br />
* Kliendipoolelt paistab välja üks äriloogika viga. Näiteks kasutaja krüptovaluutade bilanss ei muutu nii nagu eeldaks. Viies läbi müügi tehingu, kus hind on 10 ja kogus 5, siis müüdava valuuta kogus väheneb vaid 5 võrra, mitte 50 võrra nagu oleks eeldanud. Seda kas selle vea põhjustab kliendi või rakenduse pool peaks välja selgitama koodi põhjalikum analüüs.<br />
* Selliseid vigu, mis suudaksid klientrakenduse kokkujooksutada või panna ta andma veateatei, ei suudetud leida.<br />
<br />
<br />
Kokkuvõtvalt võib öelda, et meeskond Curry on näidanud, et oskavad klientrakendust luua ning saavad aru kuidas klientrakendus peab suhtlema veebiteenusega. Puudused, mis saab välja tuua pole tehnilist laadi vaid pigem seotud sellega, et klientrakenduse poolele on realiseeritud skoop väiksem, kui võiks antud rakendusest eeldada.<br />
<br />
==XML-ile==<br />
'''Retsensioon meeskond [https://wiki.itcollege.ee/index.php/Meeskond:Curry Curry XML-ile]'''<br />
<br />
<br />
XML on süntaksilt korrektne vastavalt validaatorile [https://www.w3schools.com/xml/xml_validator.asp https://www.w3schools.com/xml/xml_validator.asp]<br />
<br />
XML ja XSD on kooskõlas vastavalt [https://www.freeformatter.com/xml-validator-xsd.html https://www.freeformatter.com/xml-validator-xsd.html]<br />
<br />
XML-i ülesehitus on selline, millist retsenseerija varem näinud ei ole. Kui tavaliselt on erinevad elemendid paigutatud loogiliselt üksteise sisse, siis antud näites on alguses ära toodud linnad ning neile antud id. Järgnevalt on eraldi ära kirjeldatud riigid, mille sees on element, mis id abil viitab eelnevalt kirjeldatud linnale. Objektidevahelised seosed on küll olemas, kuid fail on tänu sellele mahukam, see on raskemini loetav ning ilmselt on raskendatud XMLi töötlemine XPATHi abil, millest enamus eeldab parent-child tüüpi seoseid, mitte relatsioonilisust. XMLi elementidel on piisavalt attribuute ning objektid on piisava sügavusega.<br />
<br />
Esimesel XSLT versioonil oli paar tähemärki algusest puudu, kuid need parandati kiirelt ning seejärel sai XSLT abil väikese HTML tabeli kui uue XMLi. Tabeli loomisel on kasutatud peamiselt for-each tsükleid ning leidub üks tingimuste kontroll. Kasutatud on xsl:key attribuuti.<br />
<br />
XMLiks transformeeriv XSLT on oma ülesehituselt veidi lihtsam, kuid seal on ühe huvitava lisana kokku loetud ja kuvatud lapselementide arv. Ühe võimaliku murekohana pole tulemusena saadavas XMLis välja toodavad riigid grupeeritud eraldi tagi <Country> vahele. Seetõttu, kui meid huvitaksid näiteks Leedu linnad, peaksime me praegusest XMList otsima Leedu nimele järgnevaid linnasid <Towns> , mis on samas enne järgmist <name> tagi. Lihtsam oleks võtta ainult järgmised <Towns> elemendid, kuid mõnel riigil võivad need ka puudu olla ja sellisel juhul võime saada tulemuseks teise riigi linnad.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131584Kuldneloojang2018-06-11T11:47:46Z<p>Ptiganik: /* Veebiteenusele */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid meie projektile=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: BeerPressure<br />
<br />
[https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang retsensioon discussioni lehel]<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Lõpptoode===<br />
https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0<br />
(seisuga 02.06.2018, bugide parandusi lisatud 04.06.2018)<br />
<br />
===Versiooni haldus===<br />
'''Veebirakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
'''Klientrakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
===Ettevalmistus.===<br />
Projekti paigaldamiseks on kaks varianti: 1) kloonida mõlemad repositooriumid või 2) alla laadida .zip fail ning lahti pakkida see sobivasse kohta. Viimasel juhul paigaldatakse nii veebi- kui ka klientrakendus korraga.<br />
<br />
<br />
<br />
===Veebirakendus.===<br />
Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev. Sellisel juhul tuleb vastav aadress meelde jätta ning kopeerida see klientrakenduse sätetesse. Vastasel juhul ei oska klient veebirakenduse poole pöörduda.<br />
<br />
<br />
<br />
===Klientrakendus.===<br />
Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks ning käsud käivitamiseks:<br />
<br />
'''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid)<br />
<br />
'''npm run start-en''' või '''npm run start-ee''' (vastavalt inglise või eesti keelse rakenduse käivitamiseks)<br />
<br />
<br />
Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
Uues andmebaasis esimest korda käivitamisel täidetakse baasis ainult FrequencyTypes tabel, ülejäänud info patsientide, tubade jne kohta tuleb retsensendil ise klientrakendusse sisestada ja asuda seoseid looma. Kuna teiste rollide õigused on muudatuste tegemiseks andmebaasis on piiratud, tuleks alustada andmete sisestamist rollis "admin".<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine, analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.<br />
<br />
=Meie tehtud retsensioonid=<br />
<br />
==Veebiteenusele==<br />
'''Retsensioon meeskond Curry veebiteenusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]''' <br />
<br />
Meeskond Curry on loonud krüptovaluuta tehingute vahendamiseks mõeldud veebiteenuse. Veebiteenuse kaudu saab luua omale kasutaja ja hiljem loodud kasutaja andmeid kasutades panna üles krüptovaluutade vahetustehinguid. Kasutaja saab valida, kas müüa või osta mingit valuutat. Tehingu toimimiseks on vajalik vastaspool ehk keegi teine, kes soovib teha vastupidist tehingut. Kui vastaspoolt ei leita, siis jääb tehing ootele, kuni vastaspool tekib. Äriloogiliselt oli valitud teema ilmselt üpris keerukas.<br />
<br />
Projekt on arhitektuuriliselt üles ehitatud vastavalt õppeaine käigus õpetatud nõuannetele ehk projektil on nö. kihiline arkitektuur, mis võimaldab asju kihi kaupa vajadusel asendada. See on võimalik, sest kihtide vahelised ühendused on kirjutatud kasutades liideseid. Selgelt on eristatavad andmete kiht, äriloogika kiht ning veebiteenuse kiht. Need kihid on jagatud veel omakorda alamkihtideks.<br />
<br />
Veebiteenuse domeeni mudel koosneb 11 olemist, millest üks on jäetud kasutaja andmete jaoks. Olemid kirjeldavad valuutasid ja nendega kaubeldavaid valuuta-paare, tehinguid koos tehingu staatuse ja tüüpidega ning konto seisu, jne. Andmemudel on põhjalik ning koostatud tulevikkuvaatavalt. Sellise andmemudeli pealt saab luua funktsionaalsust, mida sellises keskkonnas kindlasti kliendid tahaksid näha, kuid hetkel pole veel implementeeritud. Näiteks oma konto seisu ajalise muutuse jälgimine, valuutakursside liikumine ajas, erinevat tüüpi tehingud, jne.<br />
<br />
Andmemudeli (Domain) juures on kasutatud annotatsioone, et määrata ära väljade pikkusi, serialiseerimist, jne. Kuid andmete seisukohalt peaks määrama rangemalt, millised väljad on kohustuslikud. Hetkel lubataks andmebaasi panna ka sellised tehinguid, kus näiteks puuduvad tehingu osapooled või valuutad, jne. Õnneks on vastav kontroll enamasti äriloogika poolel. Proovisime teha tehinguid, kus osa infot oleks puudu, aga need ei läinud läbi. Samas kui üritasime lisada uusi valuuta paare, kus puudusid teatud väljad, siis õnnestus saada andmebaasi viga ning teenus kokku jooksutada.<br />
<br />
Annotatsioonid (näiteks välja pikkused) on puudu DTOde küljest, mistõttu kontrollerite ModelState.IsValid kontroll ei pruugi anda oodatud tulemust ja teenuste kihile võidakse edasi saata andmeid, mis andmemudelile tegelikult ei vasta. <br />
<br />
Andmete kättesaamise kihid on läbimõeldud. Tore on näha, et lahendusi on erinevaid ning kõik ei kasuta UnitOfWork mustrit. See on antud mahuga projekti juures mõistlik lähenemine. RepositoryProvider/RepositoryFactory mustriga oleks saanud mõned repositooriumid jätta kirjutamata, sest nendes polnud erimeetodeid, kuid see õnneks oli väike lisatöö.<br />
<br />
Kontrollerid on väga kenasti annoteeritud. Lisaks autoriseerimise annotatsioonidele on kasutusel annotatsioonid, mis annavad teada tagastatavad objekti kuju ning võimalikud http staatuskoodid. Nende pealt on loodud swaggeriga API dokumentatsioon, millega on klientrakenduse kaudu võimalik ka tutvuda. Kontrolleritest kasutavad async meetodeid ainult kasutaja kontroller. Kui teenuse kasutusmahud kasvavad, tasuks ka teised kontrollerid kasutaja kontrolleri näitel ümber ehitada. <br />
<br />
Koodi paigaldusjuhised on lakoonilised, piirdudes ühe lausega: “Proovimaks administraator õigustes kasutaja funktsionaalsust, logi sisse kasutajanimega 'adminuser' ning parooliga 'Kala1.maja'”. Sõnagi pole juttu sellest, et uues masinas paigaldamiseks peab looma kõigepealt andmebaasi, jne. Seda asja annaks parandada. Samas on see viga, mis on ühine paljude teiste projektidega. Õnneks sai peale järelepärimist projekti autorilt juhiseid juurde. Retsenseerijale oleks olnud abiks ka lahenduse kirjeldus. Näiteks, et mis eesmärk mingil olemil on, kuidas ja milliseid teenuseid kasutatakse kasutajalugude lahendamiseks jne. Tööde nimekirjas Wiki lehle on ära toodud vaid erinevate etappide alustamise aeg ning sellest ei ole võimalik välja lugeda, kuidas arendusprotsess toimus ning kes ja kui palju panustas. Veebiteenusel paistab puuduvat logide või mingisuguse muu lahendusena kasutusstatistika kogumise võimalus. <br />
<br />
Kokkuvõtteks võib öelda, et meeskond Curry on demonstreerinud edukalt, et nad on omandanud õppeaine õpiväljundid. Loodud projekt peegeldab seda, mida poolaasta jooksul on õpitud ning endale ülesandeks võetud keerukas äriloogika on edukalt ja jätkusuutlikult realiseeritud.<br />
<br />
==Klientrakendusele==<br />
'''Retsensioon meeskond Curry klientrakendusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]'''<br />
<br />
Meeskond Curry on loonud klientrakendusena kliendi oma poolt loodud veebiteenusele. Kaks asja koos moodustavad platvormi, mida saab kasutada krüptorahadega kauplemiseks. Platvorm toimib põhimõttele, et igaüks saab tulla ja luua omale konto, kus saab ülevaate oma krüptorahakoti seisust. Testimiseks täidetakse kasutaja rahakott juhuslike arvude generaatori abil erinevate krüptovaluutadega. Kasutajal on võimalik panna üles ordereid meelepäraste valuutapaaride vahel täpsustades soovitud hinna, koguse ja tehingu tüübi (ost või müük). Orderid jäävad seni üles, kuni leidub vastaspool, kes soovib viia läbi vastupidise tehingu. Seepärast on soovitatav rakenduse testimiseks teha kaks kontot, kelle vahel siis tehinguid ellu viia. <br />
<br />
<br />
Klientrakendus on teostatud Angulari raamistikus. Klientrakendus on kirjutatud veebiteenuse solutioni sisse, mistõttu käib tema käivitamine mugavalt üheskoos veebiteenusega. Klientrakenduse projekti ülesehitus on selge ja arusaadav. Kood on suudetud hoida puhas. Mõned komponendid on siiski päris suured ja võiks ollaväiksemateks osadeks jaotatud. Esineb mõningat koodi kopeerimist, mida oleks võimalik vähendada kirjutades asju komponentidesse. Näiteks tehingute teostamisel on ostu- ja müügitehingu vormid ühesugused, mida oleks lihtsalt saanud hoida ühes komponendis.<br />
Rakenduse kasutamise, ega paigaldamise kohta pole mitte mingisugust informatsiooni. Õnneks on talupoja mõistusega rakenduse käivitamine siiski võimalik. Tuli avada vastav solution, luua lokaalne andmebaas ning seejärel käivitada solutionis vastav projekt (WebApp), mis pani korraga käima nii veebiteenuse kui ka klientrakenduse.<br />
Järgnevalt mõningaid tähelepanekuid rakenduse kasutamise kohta:<br />
<br />
* Kasutaja loomisel valideeritakse kenasti kasutajaandmeid. Pole võimalik sisestada liiga lühikest nime või liiga lihtsat parooli. Kasutaja loomisel antakse kenasti tagasisidet, kui üritatakse luua kasutajat, kelle kasutajanimi või email on juba kasutusel.<br />
* Kasutajal on võimalik muuta kasutajaandmeid - eesnimi, perekonna nimi ning email. Paraku pole võimalik muuta ei parooli ega kasutajanime.<br />
* Klientrakendus näeb selge ja puhas välja. See on saavutatud Bootstrap CSS raamistiku kasutamisega. <br />
* Äriloogika on krüptovaluutade-võõrale kasutajale pisut segane. Kliendi vaatest on näha, et kauplemine on võimalik vaid kahe valuuta suhtes (Bitcoin ja Ethereum). See tähendab, et üks kahest peab olema alati valitud. Seejärel saab kasutaja valida, mis valuuta on tehingu vastaspooleks. See tähendab, et kui näiteks soovitakse vahetada Monero valuuta Agrello vastu, siis tuleb kõige pealt Monero vahetada Ethereumi vastu, mis seejärel vahetatakse Bitcoini vastu, mille eest lõpuks saab osta Agrello valuutat.<br />
* Huvitaval kombel saab kasutaja olla iseenda tehingu vastaspooleks. See tähendab, et kui kasutaja on pannud üles orderi ostmiseks ja seejärel ka müümiseks, siis ka selline tehing läbi viiakse.<br />
* Klientrakenduses on puudu loogilisi funktsionaalsuseid, mis võiks olla seda sorti platvormil realiseeritud. Näiteks kasutajana sooviksin näha enda poolt läbiviidud tehingute ajalugu või sooviksin tühistada enda poolt üles pandud orderieid, jne.<br />
* Kliendipoolelt paistab välja üks äriloogika viga. Näiteks kasutaja krüptovaluutade bilanss ei muutu nii nagu eeldaks. Viies läbi müügi tehingu, kus hind on 10 ja kogus 5, siis müüdava valuuta kogus väheneb vaid 5 võrra, mitte 50 võrra nagu oleks eeldanud. Seda kas selle vea põhjustab kliendi või rakenduse pool peaks välja selgitama koodi põhjalikum analüüs.<br />
* Selliseid vigu, mis suudaksid klientrakenduse kokkujooksutada või panna ta andma veateatei, ei suudetud leida.<br />
<br />
<br />
Kokkuvõtvalt võib öelda, et meeskond Curry on näidanud, et oskavad klientrakendust luua ning saavad aru kuidas klientrakendus peab suhtlema veebiteenusega. Puudused, mis saab välja tuua pole tehnilist laadi vaid pigem seotud sellega, et klientrakenduse poolele on realiseeritud skoop väiksem, kui võiks antud rakendusest eeldada.<br />
<br />
==XML-ile==<br />
'''Retsensioon meeskond [https://wiki.itcollege.ee/index.php/Meeskond:Curry Curry XML-ile]'''<br />
<br />
<br />
XML on süntaksilt korrektne vastavalt validaatorile [https://www.w3schools.com/xml/xml_validator.asp https://www.w3schools.com/xml/xml_validator.asp]<br />
<br />
XML ja XSD on kooskõlas vastavalt [https://www.freeformatter.com/xml-validator-xsd.html https://www.freeformatter.com/xml-validator-xsd.html]<br />
<br />
XML-i ülesehitus on selline, millist retsenseerija varem näinud ei ole. Kui tavaliselt on erinevad elemendid paigutatud loogiliselt üksteise sisse, siis antud näites on alguses ära toodud linnad ning neile antud id. Järgnevalt on eraldi ära kirjeldatud riigid, mille sees on element, mis id abil viitab eelnevalt kirjeldatud linnale. Objektidevahelised seosed on küll olemas, kuid fail on tänu sellele mahukam, see on raskemini loetav ning ilmselt on raskendatud XMLi töötlemine XPATHi abil, millest enamus eeldab parent-child tüüpi seoseid, mitte relatsioonilisust. XMLi elementidel on piisavalt attribuute ning objektid on piisava sügavusega.<br />
<br />
Esimesel XSLT versioonil oli paar tähemärki algusest puudu, kuid need parandati kiirelt ning seejärel sai XSLT abil väikese HTML tabeli kui uue XMLi. Tabeli loomisel on kasutatud peamiselt for-each tsükleid ning leidub üks tingimuste kontroll. Kasutatud on xsl:key attribuuti.<br />
<br />
XMLiks transformeeriv XSLT on oma ülesehituselt veidi lihtsam, kuid seal on ühe huvitava lisana kokku loetud ja kuvatud lapselementide arv. Ühe võimaliku murekohana pole tulemusena saadavas XMLis välja toodavad riigid grupeeritud eraldi tagi <Country> vahele. Seetõttu, kui meid huvitaksid näiteks Leedu linnad, peaksime me praegusest XMList otsima Leedu nimele järgnevaid linnasid <Towns> , mis on samas enne järgmist <name> tagi. Lihtsam oleks võtta ainult järgmised <Towns> elemendid, kuid mõnel riigil võivad need ka puudu olla ja sellisel juhul võime saada tulemuseks teise riigi linnad.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018&diff=131583Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 20182018-06-11T05:22:28Z<p>Ptiganik: /* Meeskond: Kuldne loojang */</p>
<hr />
<div>[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]<br />
__NOINDEX__<br />
<br />
=Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018=<br />
==Eesmärk==<br />
Saada praktiline kogemus hajussüsteemide ehitamisest XML(SOAP) või Rest veebiteenusel ja sellele klientrakenduse loomise abil ning süvendada meeskonnatööoskust. <br />
*SOAP veebiteenuse puhul eeldatakse WCF tehnoloogia kasutamist. Vanema põlvkonna ASP.NET veebiteenuse loomine ei ole lubatud, kuna seda ei toeta ka Microsoft enam tänasel päeval.<br />
*REST teenuste loomisel tuleks kasutada ASP.NET Web API2/ASP.NET Core 2.0/WCF võimalusi.<br />
<br />
Kaugem eesmärk on loomulikult hinne :).<br />
<br />
==Reeglid==<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus<br />
<br />
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda. 1,2 ja viie liikmelised meeskonnad tuleks õppejõuga eraldi kooskõlastada.<br />
<br />
Töö käiku kajastatakse http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.<br />
<br />
==Tähtajad==<br />
<br />
<br />
* '''Veebiteenus''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Veebiteenus NB! Täpsem info]<br />
** Veebiteenuse analüüs peab olema valmis, esitatud ja wikilehel kirjeldatud hiljemalt: '''01.aprill 2018'''. Lisaks on '''Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. <ins>Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.</ins>'''<br />
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid veebiteenuste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''Klientrakendused''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Klientrakendus NB! Täpsem info]<br />
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid klientrakenduste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''XML fail''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#XML_andmefail NB! Täpsem info]<br />
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt '''01. juuni 2018'''.<br />
** Retsensioonid XML-failide kohta peavad tehtud olema '''05.juuni 2018'''.<br />
<br />
==Hindamine==<br />
===Üldised kriteeriumid===<br />
<br />
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.<br />
<br />
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), paigaldusjuhend ning lahenduse kirjeldus. <br />
<br />
'''Maksimumtulemuse annab (vähemalt 4/7):'''<br />
<br />
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)<br />
* Mobiilirakendused/Angularis/reactis loodud klientrakendus<br />
* Kogukondade kaasamine<br />
* Kasutajamugavus<br />
* Läbimõeldud töökorraldus<br />
* Lisavõimaluste realiseerimine (vt näidisteemad)<br />
* Korraliku arhitektuuriga kirjutatud kood<br />
<br />
===XML andmefail===<br />
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning minimaalselt kaks sobivat XSL transformatsiooni faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. Transformatsioonid peavad sisaldama midagi enamat, kui ainult üks for-each klausel. Transformatsiooni käigus peaks kasutama vajadusel parameetreid ning kindlasti ka erinevaid tingimuste kontrolle.<br />
<br />
XML-il peab olema vähemalt 4 loogilist dimensiooni.<br />
<dim1><br />
<dim2><br />
<dim3><br />
<dim4><br />
</dim4><br />
</dim3><br />
</dim2><br />
</dim1><br />
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.<br />
<br />
===Veebiteenus===<br />
Loodav veebiteenus peab võimaldama:<br />
* Teenuse pakkumist<br />
* '''Teenuse kasutajate tuvastamist ning haldamist'''<br />
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes<br />
* Teenuse poole pöördumiste arvu piiramist ja piirangute haldamist.<br />
<br />
Loodav veebiteenus peab toetama mitme kasutaja võimalust.<br />
<br />
Loodav veebiteenus tuleb luua kasutades ''Windows Communication Foundation'' või ASP.NET MVC Web API tehnoloogiat<br />
<br />
Andmebaasis peab olema vähemalt 9 olemit ehk andmebaas on eeldus,<br />
<br />
<br />
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).<br />
<br />
===Klientrakendus===<br />
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena(ASP.NET veebirakendus või hoopis Angulari või Reacti baasil), töölauarakendusena(WPF) või mobiilse rakendusena(Xamarin)<br />
<br />
Variant1: teha klientrakendus enda loodud veebiteenusele <br />
<br />
Variant2: teha klientrakendus mõnele levinud veebiteenusele.<br />
Näiteks: <br />
* http://www.bing.com/developer<br />
* http://www.flickr.com/services/api/response.soap.html<br />
* http://developer.ebay.com/developercenter/windows/<br />
* http://apiwiki.twitter.com/Getting-Started<br />
<br />
===Retsensioonid===<br />
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.<br />
<br />
Retsensioon peab sisaldama minimaalselt...<br />
* XML - ...200 sõna.<br />
* Veebiteenus - ...600 sõna.<br />
* Klientrakendus - ...600 sõna.<br />
<br />
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.<br />
<br />
==Konsultatsioonid==<br />
Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma<br />
töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida<br />
õppejõuga kokkuleppeid kontaktidel<br />
mait.poska [ät] itcollege.ee või (+372 53 469 734)<br />
(teksti originaalautor Priit Raspel)<br />
<br />
==Kaitsmisele registreerumine==<br />
Kaitsmisele tuleks registreerida järjest(st iga järgmine lisab vajaliku 15min ajaakna) ja suvalisis kellaaegasid ei hakka kuhugi vahele kirjutama<br />
<br />
'''05.06.2018'''<br />
*15:00 - Miisiks<br />
*15:15 - Maagikud <br />
*15:30 - GoFood<br />
*15:45 - Raavo V2™<br />
*16:00 - LearnToDrive<br />
Sellele päevale rohkem aegu juurde lisada ei saa<br />
<br />
<br />
Allpool olevate päevadele võib vabalt aegasid juurde lisada 15min sammga. Reegel on, et aegu lisame järjest<br />
<br />
'''06.06.2018'''<br />
*17:00 - Raamaturiiul<br />
*17:15 - Pakiraam<br />
*..<br />
<br />
<br />
'''09.06.2018'''<br />
*16:00 - MealPlannerSolo(Triin Oja)<br />
*16:15 - Beer Pressure<br />
*16:30 - &lt;div&gt;<br />
*16:45 - NutriCheck<br />
*17:00 - JääTuli<br />
*17:15 - Ophelia<br />
*17:30 - Kuldne Loojang<br />
*17:45 - Hammas<br />
*18:00 - VariousArtists<br />
*18:15 - Pillar Of Autumn<br />
*18:30 - Curry<br />
*18:45 - WatchWinders<br />
*19:00 - MOT<br />
*19:15 - AmateurBB<br />
*19:30 - Autolugu<br />
*19:45 - VRII2018<br />
<br />
=Teemad 2018 kevad=<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele<br />
<br />
NB! XML andmefail ja veebiteenus ei pea olema omavahel seotud.<br />
<br />
<br />
==Näidisteemad==<br />
<br />
<br />
====Ülesanne====<br />
Luua sobiva alguse järgi nimede pakkumise teenus:<br />
* alates kahetähelisetest algustest pakkuda sobivad nimesid<br />
* luua võimalus kasutajatel nimesid lisada<br />
* luua võimalus administraatoril nimesid muuta/kustutada<br />
* meeste ja naiste nimed peavad olema süsteemis eristatavad<br />
* luua võimalus, mis võimaldab kuvada populaarseid nimesid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* luua võimalus, et nimi lisatakse baasi alles siis, kui administraatori õigustega inimene on selleks vastava loa andnud<br />
<br />
===Külastusstatistika teenus===<br />
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.<br />
<br />
====Ülesanne====<br />
Luua külastusstatistika teenus:<br />
* kasutaja saab teenuses registreerida külastusi<br />
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
<br />
Lisavõimalused:<br />
* luua võimalus registreerida alamlehtede külastusstatistikat<br />
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)<br />
<br />
===Telefoniraamatu teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida<br />
<br />
====Ülesanne====<br />
Luua telefoniraamatu teenus:<br />
* kasutaja saab teenuses kontakte lisada ja kustutada<br />
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutajaid on võimalik lisada gruppidesse<br />
* kasutajal on võimalik lisada vajalike kontaktandmete liike<br />
* kasutajatel on võimalik jagada omavahel kontakte ja kontaktide grupper<br />
<br />
===RSS voogude kogumise ja uudiste kuvamise teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda<br />
<br />
====Ülesanne====<br />
Luua RSS voogude haldusteenus:<br />
* kasutaja saab teenuses RSS vooge lisada ja kustudada<br />
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutaja saab RSS vooge vaadata eraldi või grupeeritult<br />
* vooge peab puhverdama, kuna voogude lugemine võtab enamasti üsna palju aega <br />
*<br />
<br />
= Meeskonnad 2018=<br />
==Päevaõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/HairSaloon Meeskond: HairSaloon]===<br />
Liikmed:<br />
* Kaido Henrik Elias<br />
* Arvo Paomees<br />
<br />
===[https://wiki.itcollege.ee/index.php/VariousArtists Meeskond: VariousArtists]===<br />
Liikmed:<br />
* Ruudi Vinter<br />
* Madis Roosioks<br />
* Pavel Fleišer<br />
<br />
Lõpptoode: [https://drive.google.com/open?id=1Pq8Lhrs3G5mGiTje70ww-zMBNB5cXnRh ZIP]<br />
<br />
TFS: [https://variousartists.visualstudio.com/VariousArtists/_versionControl/changesets siin]<br />
<br />
XML: [https://wiki.itcollege.ee/index.php/VariousArtists#XML siin]<br />
<br />
Retsensioonid: [https://wiki.itcollege.ee/index.php/VariousArtists#Retsensioonid siin]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Maagikud Meeskond: Maagikud]===<br />
Liikmed:<br />
*Kristina Rästas<br />
*Simo Jaanus<br />
*Artur Tammiste<br />
*Rauno Lõhmus<br />
Lõpptoote [http://enos.itcollege.ee/~sjaanus/c/Airport_solution.zip link]<br />
<br />
Veebiteenuse ja klientrakenduse retsensioon tiimile Raavo V2 asub [https://docs.google.com/document/d/1fxmdLa94Do1u5WlmPQjSd4mMmdbDw5WmDne547jqQc4/edit siin]<br />
<br />
XML retsensioon tiimile LTD asub [https://docs.google.com/document/d/15rMhpqyG5XHsvOCZJp88ucHkiMa5Non6BbYwBBKT2_Y/edit siin]<br />
<br />
===[https://wiki.itcollege.ee/index.php/RaamatuRiiul Meeskond: RaamatuRiiul]===<br />
Liikmed:<br />
* Alo Avi<br />
* Arnika Rästa<br />
* Marite Rammo<br />
'''Meie XML:''' [https://wiki.itcollege.ee/index.php/RaamatuRiiul#XML XML]<br />
<br />
'''Meie veebiteenuse, klientrakenduse ja XML retsensioonid meeskonnale Miisiiks:''' [https://wiki.itcollege.ee/index.php/Talk:Miisiiks retsensioonid]<br />
<br />
'''Meie veebiteenus ning klientrakendus.''' [https://www.dropbox.com/s/ugbvx4j4zdlbp68/RaamatuRiiul.7z?dl=0 Zip]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Autolugu Meeskond: Autolugu]===<br />
Liikmed:<br />
* Margus Põlma<br />
* Karl Erik Õunapuu<br />
<br />
Veebiteenus: [http://enos.itcollege.ee/~mpolma/vr2/API.zip]<br />
<br />
Klientrakendus: [https://github.com/karlerikounapuu/autolugu-front]<br />
<br />
===[https://wiki.itcollege.ee/index.php/VRII2018 Meeskond: VRII2018]===<br />
Liikmed:<br />
* Kaspar Kaal<br />
* Teet Adamson<br />
* Rahel Kangur<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Raavo_V2%E2%84%A2 Meeskond: Raavo V2™]===<br />
Liikmed:<br />
* Peeter Fridolin<br />
* Kristo Leesmann<br />
* Rando Rommot<br />
<br />
Projekti retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/Meeskond_Raavo_V2™#Retsentsioonid Maagikud]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Pillarofautumn Meeskond: Pillar of Autumn ]===<br />
Liikmed:<br />
* Taavi Põder<br />
* Taavi Vesinurm (Meeskonnast lahkunud)<br />
* Raido Vell<br />
'''Lõpptoode API ja klientrakendus:''' [https://github.com/taavip9/Veebirakendused-II Lõpptoode]<br />
<br />
===[https://wiki.itcollege.ee/index.php/jaatuli Meeskond: JääTuli]===<br />
Liikmed:<br />
*Tarmo Luugus<br />
*Leho Kivistik<br />
*Hannes Mäeorg<br />
*Marten Tammeleht<br />
<br />
===[https://wiki.itcollege.ee/index.php/JustABot Meeskond: JustABot]===<br />
Liikmed:<br />
*Argo Hansen<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Pakiraam Meeskond: Pakiraam]===<br />
Liikmed:<br />
*Kristo Naeris<br />
*Indro Kottise<br />
<br />
Klientrakendus [https://github.com/knaeris/VR2Klient siin] ja veebiteenus [https://github.com/knaeris/VR2Projekt siin]<br />
<br />
Retsensioon meeskonna Raavo v2 klientrakendusele : [https://wiki.itcollege.ee/index.php/Meeskond_Pakiraam#Retsensioonid Retsensioon]<br />
<br />
Retsensioon meeskonna Raavo v2 veebiteenusele:<br />
<br />
===[https://wiki.itcollege.ee/index.php/GoFood Meeskond: GoFood]===<br />
Liikmed: <br />
<br />
* Rando Kurel<br />
* Henrik Prangel<br />
* Markus Mänd<br />
* Edgar Tereping<br />
* Jane Kaldma<br />
<br />
Lõpptoode: [https://wiki.itcollege.ee/index.php/GoFood#Projektikood lõpptoote leiab siit]<br />
<br />
Meie rühma kirjutatud retsentsioonid rühmale Maagikud:[https://wiki.itcollege.ee/index.php/GoFood#Retsensioon_rühmale_Maagikud Retsensioon]<br />
<br />
===[https://wiki.itcollege.ee/index.php/LTD Meeskond: LearnToDrive]===<br />
'''Liikmed:'''<br />
*Eve Ormisson<br />
*Carlos Kirtsi<br />
<br />
Projekt [https://wiki.itcollege.ee/index.php/LTD#Kood_ise asub siin, kliendina kasutame JustInCaseWPFi]<br />
<br />
Projekti retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/LTD#Projekti_retsensioon Maagikud]<br />
<br />
XML osa retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/LTD#XML_retsensioon RaamatuRiiul]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Miisiiks Meeskond: Miisiiks]===<br />
Liikmed:<br />
*Christo Aruste<br />
*Heleriin Malkov<br />
*Tõnis Prants<br />
<br />
[https://www.dropbox.com/s/e2vu3ukgckyc2x5/MiisiiksWS.zip?dl=0 Veebiteenus]<br />
<br />
Veebiteenus v2 (05.06): [https://www.dropbox.com/s/4acyvc9c7h08xl6/MiisiiksWS-v2.rar?dl=0 Veebiteenus]<br />
<br />
[https://www.dropbox.com/s/iwtheohp5mn0lek/MiisiiksC.zip?dl=0 Klientrakendus]<br />
<br />
Klientrakendus v2 (05.06): [https://www.dropbox.com/s/m6ijv2yyqthebgr/MiisiiksC2-v2.rar?dl=0 Klientrakendus]<br />
<br />
[https://wiki.itcollege.ee/index.php/Miisiiks#XML XML]<br />
<br />
<br />
Retsensioonid meeskonnale Raavo V2™<br />
<br />
Veebiteenus: [https://wiki.itcollege.ee/index.php/Miisiiks#Veebiteenuse_retsensioon Retsensioon]<br />
<br />
Klientrakendus: [https://wiki.itcollege.ee/index.php/Miisiiks#Klientrakenduse_retsensioon Retsensioon]<br />
<br />
XML: [https://wiki.itcollege.ee/index.php/Miisiiks#XML_retsensioon XML]<br />
<br />
===[https://wiki.itcollege.ee/index.php/VR2_div Meeskond: &lt;div&gt;]===<br />
Liikmed:<br />
*Kaarel Pärtel<br />
*Marek Juhanson<br />
*Kai Kallastu<br />
<br />
Retsensioonid rühmale [https://wiki.itcollege.ee/index.php/Miisiiks Miisiiks™]: [https://docs.google.com/document/d/1gQmas-Fay_XHHhLInKM92152vYeFdFflDIRozN63mxA/edit?usp=sharing veebiteenus, klientrakendus ja XML]<br />
<br />
==Kaugõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/BestInShow Meeskond: BestInShow]===<br />
Liikmed:<br />
* Liina Abner<br />
* Marju Pütsepp<br />
* Liisi Taimre<br />
<br />
'''Lõpptoode veebiteenus:''' [https://www.dropbox.com/s/j5ixmwmx45kxcyo/BestInShow.zip?dl=0 https://www.dropbox.com/s/j5ixmwmx45kxcyo/BestInShow.zip?dl=0]<br><br />
'''Kasutusjuhend:''' [https://wiki.itcollege.ee/index.php/BestInShow#Kasutusjuhend https://wiki.itcollege.ee/index.php/BestInShow#Kasutusjuhend]<br><br />
'''Lõpptoode klient:''' [https://bitbucket.org/Marjup/bestinshow/ https://bitbucket.org/Marjup/bestinshow/]<br><br />
'''XML failid:''' [https://wiki.itcollege.ee/index.php/BestInShow#XML_failid Schema, XML ja XSLT HTML ja XML transformatsiooniks]<br><br />
Retsensioon veebiteenusele: TODO retsenseerime projekti WatchWinders<br><br />
Retsensioon klientrakendusele: TODO retsenseerime projekti WatchWinders<br><br />
Retsensioon XML-ile: TODO retsenseerime projekti WatchWinders<br><br />
<br />
===[https://wiki.itcollege.ee/index.php/AssistDesq Meeskond: AssistDesq]===<br />
Liikmed: <br />
* Karen Grigorjan<br />
<br />
===[https://wiki.itcollege.ee/index.php/WatchWinders Meeskond: WatchWinders]===<br />
Liikmed:<br />
* Toomas Juhkov<br />
* Kunnar Kukk<br />
* Tiit Kuuskmäe<br />
[https://wiki.itcollege.ee/index.php/WatchWinders#Link_klientrakendusele_ja_API-le Link klientrakendusele ja API-le]<br />
<br />
===[[ Kuldneloojang | Meeskond: Kuldne loojang]]===<br />
'''Liikmed''':<br />
* Andrus Seiman<br />
* Marko Belzetski<br />
* Priit Tiganik<br />
* Kristjan Peterson (loobus)<br />
<br />
<br />
'''Lõpptoode:'''<br />
algselt üles laetud 02.06.2018, bugide parandusi lisatud 04.06.2018<br />
* [https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0 .zip fail rakendus ja klient koos] <br />
* [https://bitbucket.org/itcollegeprojects/loojang-app veebirakenduse repo] <br />
* [https://bitbucket.org/itcollegeprojects/loojang-client klientrakenduse repo] <br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus XML: link meie Wiki lehele]<br />
<br />
<br />
'''Meie tehtud retsensioonid:'''<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#Veebiteenusele veebiteenuse retsensioon meeskonna Curry tööle.]<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#Klientrakendusele klientrakenduse retsensioon meeskonna Curry tööle.]<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML-ile XML retsensioon meeskonna Curry tööle.]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Ophelia Meeskond: Ophelia]===<br />
Liikmed:<br />
* Siim Kallari<br />
* Andres Kepler (loobus)<br />
* Jorma Rebane<br />
<br />
[https://www.dropbox.com/s/v63fkbjnd5umqqm/Ophelia.zip?dl=0 Lõpptoote link]<br />
<br />
[https://wiki.itcollege.ee/index.php/Ophelia#L.C3.B5pptoote_kasutusjuhend Kasutusjuhend(Kaasas ka lõpptootes)]<br />
<br />
[https://wiki.itcollege.ee/index.php/Ophelia#XML_.C3.9Clesanne XML Ülesanne]<br />
<br />
===[https://wiki.itcollege.ee/index.php/SharpRestoVRII Meeskond: SharpRestoVRII]===<br />
Liikmed:<br />
* Andres Aava (lahkunud liige)<br />
* Henri Annilo<br />
* Jaan Koolmeister<br />
* Lauri Üksti<br />
<br />
Lähtekood: [http://enos.itcollege.ee/~luksti/CSharp/CSharpResto.zip CSharpResto]<br />
<br />
XML: [https://wiki.itcollege.ee/index.php/SharpRestoVRII#XML Wikis]<br />
<br />
Retsensioonid:<br />
<br />
===[https://wiki.itcollege.ee/index.php/BeerPressure Meeskond: BeerPressure]===<br />
Liikmed:<br />
* Sigrid Aasma<br />
* Evelin Jõgi<br />
* Martin Kask<br />
* Marko Nõu<br />
'''Projekt:''' [https://github.com/sikumiku/TaisKohtApi TaisKohtApi]<br />
<br />
'''Lõpptoode:''' [https://github.com/sikumiku/TaisKohtApi/archive/61438e187a1a972410c8a3bc6274d69489d00aa6.zip GitHub commit]<br />
<br />
'''XML:''' [https://wiki.itcollege.ee/index.php/BeerPressure#XML.2FXSD.2FXSLT Beer Pressure XML/XSD/XSLT]<br />
<br />
'''Meie kirjutatud XML failide retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:MOT#XML_retsensioon_by_meeskond_BeerPressure: Team MOT retsensioon]<br />
<br />
'''Meie kirjutatud veebiteenuse retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:MOT#Veebiteenuse_retsensensioon_by_meeskond_BeerPressure: Team MOT retsensioon]<br />
<br />
'''Meie kirjutatud klientrakenduse retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang#Klientrakenduse_retsensensioon_by_meeskond_BeerPressure: Team Kuldneloojang retsensioon]<br />
<br />
===[[ Memorize | Meeskond: Memorize]]===<br />
Liikmed:<br />
* Madis Uudam<br />
* Olle Mikk<br />
<br />
===[https://wiki.itcollege.ee/index.php/UCanDo Meeskond: UCanDo]===<br />
Liikmed:<br />
* Mart Raus<br />
* Ando Kiidron (loobus)<br />
* Liina Saar<br />
<br />
'''Lõpptoode: ''' [https://drive.google.com/drive/folders/1GIgiG5NvmnnKoQYmWWbfV_9Nhs2dezz8?usp=sharing UCanDo] <br><br />
'''Veebiteenuse retsensioon: ''' <br><br />
'''Klientrakenduse retsensioon: ''' <br><br />
'''XML retsensioon: ''' <br><br />
<br />
===[https://wiki.itcollege.ee/index.php/MOT Meeskond: MOT]===<br />
Liikmed:<br />
* Merike Meizner<br />
* Helen Oppar (loobus)<br />
* Hardi Tiitus<br />
<br />
'''Lõpptoode: ''' http://enos.itcollege.ee/~mmeizner/MOT/ <br><br />
'''Meie kirjutatud veebiteenuse, klientrakenduse ja XML'i retsensioon:''' [https://docs.google.com/document/d/16WL12wmvQ_TPcY_-4pG_kjwtstQoX5meEYcigE4Febw/edit?usp=sharing: Team Raavo V2]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:_MealPlanner Meeskond: MealPlanner]===<br />
Liikmed:<br />
*Triin Oja<br />
*Rein Remsu<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:Curry Meeskond: Curry]===<br />
Liikmed:<br />
* Rain Elken<br />
* Peeter Ploom<br />
<br />
'''Lõpptoode: ''' [http://enos.itcollege.ee/~pploom/VR2/ link] <br><br />
'''XML: ''' [https://wiki.itcollege.ee/index.php/Meeskond:Curry#XML_andmefail link] <br><br />
'''XSD: ''' [https://wiki.itcollege.ee/index.php/Meeskond:Curry#XSD_schema_fail link] <br><br />
'''XSLT1: ''' [https://wiki.itcollege.ee/index.php/Meeskond:Curry#XSLT_transformatsioon:_XML_-.3E_HTML link] <br><br />
'''XSLT2: ''' [https://wiki.itcollege.ee/index.php/Meeskond:Curry#XSLT_transformatsioon:_XML_-.3E_XML link] <br><br />
<br />
Curry meeskonna veebiteenust, klientrakendust ja XML-i retsenseerib meeskond KuldneLoojang. Curryle kirjutatud retsensioonid [https://wiki.itcollege.ee/index.php/Kuldneloojang#Meie_tehtud_retsensioonid asuvad siin: link]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Hammas Meeskond: Hammas]===<br />
<br />
Liikmed:<br />
* Sten Lunden<br />
<br />
'''Lõpptoode:''' [https://ildtest.azurewebsites.net azure]<br />
<br/><br />
'''Projekt:''' [https://github.com/lundens/ild-core github]<br />
<br/><br />
'''XML''' [https://wiki.itcollege.ee/index.php/Hammas#XML wiki]<br />
<br/><br />
'''Veebiteenuse retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#Veebiteenuse_retsensioon_meeskonnale_GoFood GoFood]<br />
<br/><br />
'''Klientrakenduse retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#Klientrakenduse_retsensioon_meeskonnale_GoFood GoFood]<br />
<br/><br />
'''XML retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#XMLi_retsensioon_meeskonnale_MealPlannerSolo MealPlannerSolo]<br />
<br />
===[https://wiki.itcollege.ee/index.php/LabLite Meeskond: LabLite]===<br />
Liikmed:<br />
* Alex Kaska<br />
<br />
===[https://wiki.itcollege.ee/index.php/AmateurBB Meeskond: AmateurBB]===<br />
Liikmed:<br />
*Taavi Kivimaa<br />
'''Veebiteenus:''' [https://github.com/Tafkinz/AmateurBB/tree/BB-1 GitHub]<br />
<br/><br />
'''Klientrakendus:''' [https://github.com/Tafkinz/frontend GitHub]<br />
<br/><br />
'''XML''' [https://wiki.itcollege.ee/index.php/AmateurBB wiki]<br />
<br/><br />
'''Veebiteenuse retsensioon'''<br />
<br/><br />
'''Klientrakenduse retsensioon'''<br />
<br/><br />
'''XML retsensioon'''<br />
<br />
===[https://wiki.itcollege.ee/index.php/MealPlannerSolo Meeskond: MealPlannerSolo]===<br />
Liikmed:<br />
*Triin Oja<br />
'''[https://wiki.itcollege.ee/index.php/MealPlannerSolo#XML_andmefail XML]'''<br />
<br/><br />
'''[http://enos.itcollege.ee/~troja/VRII2018/ Veebiteenus ja klientrakendus]'''<br />
<br />
===[https://wiki.itcollege.ee/index.php/NutriCheck Meeskond: NutriCheck]===<br />
Liikmed:<br />
*Artyom Likhachev<br />
'''Project:'''<br />
<br/>[https://www.dropbox.com/s/z9snrydbl5e8jp2/vr2_service-v2.zip?dl=0 Veebiteenus]<br />
<br/>[https://www.dropbox.com/s/7kn1u6z2481ligm/WebClient.zip?dl=0 Klientrakendus]<br />
<br/>'''XML:''' TODO<br />
<br/>'''Retsensioon:''' TODO</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131572Kuldneloojang2018-06-10T14:12:48Z<p>Ptiganik: /* XML-ile */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid meie projektile=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: BeerPressure<br />
<br />
[https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang retsensioon discussioni lehel]<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Lõpptoode===<br />
https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0<br />
(seisuga 02.06.2018, bugide parandusi lisatud 04.06.2018)<br />
<br />
===Versiooni haldus===<br />
'''Veebirakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
'''Klientrakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
===Ettevalmistus.===<br />
Projekti paigaldamiseks on kaks varianti: 1) kloonida mõlemad repositooriumid või 2) alla laadida .zip fail ning lahti pakkida see sobivasse kohta. Viimasel juhul paigaldatakse nii veebi- kui ka klientrakendus korraga.<br />
<br />
<br />
<br />
===Veebirakendus.===<br />
Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev. Sellisel juhul tuleb vastav aadress meelde jätta ning kopeerida see klientrakenduse sätetesse. Vastasel juhul ei oska klient veebirakenduse poole pöörduda.<br />
<br />
<br />
<br />
===Klientrakendus.===<br />
Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks ning käsud käivitamiseks:<br />
<br />
'''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid)<br />
<br />
'''npm run start-en''' või '''npm run start-ee''' (vastavalt inglise või eesti keelse rakenduse käivitamiseks)<br />
<br />
<br />
Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
Uues andmebaasis esimest korda käivitamisel täidetakse baasis ainult FrequencyTypes tabel, ülejäänud info patsientide, tubade jne kohta tuleb retsensendil ise klientrakendusse sisestada ja asuda seoseid looma. Kuna teiste rollide õigused on muudatuste tegemiseks andmebaasis on piiratud, tuleks alustada andmete sisestamist rollis "admin".<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine, analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.<br />
<br />
=Meie tehtud retsensioonid=<br />
<br />
==Veebiteenusele==<br />
'''Retsensioon meeskond Curry veebiteenusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]'''<br />
TODO<br />
<br />
==Klientrakendusele==<br />
'''Retsensioon meeskond Curry klientrakendusele [https://wiki.itcollege.ee/index.php/Meeskond:Curry link]'''<br />
<br />
Meeskond Curry on loonud klientrakendusena kliendi oma poolt loodud veebiteenusele. Kaks asja koos moodustavad platvormi, mida saab kasutada krüptorahadega kauplemiseks. Platvorm toimib põhimõttele, et igaüks saab tulla ja luua omale konto, kus saab ülevaate oma krüptorahakoti seisust. Testimiseks täidetakse kasutaja rahakott juhuslike arvude generaatori abil erinevate krüptovaluutadega. Kasutajal on võimalik panna üles ordereid meelepäraste valuutapaaride vahel täpsustades soovitud hinna, koguse ja tehingu tüübi (ost või müük). Orderid jäävad seni üles, kuni leidub vastaspool, kes soovib viia läbi vastupidise tehingu. Seepärast on soovitatav rakenduse testimiseks teha kaks kontot, kelle vahel siis tehinguid ellu viia. <br />
<br />
<br />
Klientrakendus on teostatud Angulari raamistikus. Klientrakendus on kirjutatud veebiteenuse solutioni sisse, mistõttu käib tema käivitamine mugavalt üheskoos veebiteenusega. Klientrakenduse projekti ülesehitus on selge ja arusaadav. Kood on suudetud hoida puhas. Mõned komponendid on siiski päris suured ja võiks ollaväiksemateks osadeks jaotatud. Esineb mõningat koodi kopeerimist, mida oleks võimalik vähendada kirjutades asju komponentidesse. Näiteks tehingute teostamisel on ostu- ja müügitehingu vormid ühesugused, mida oleks lihtsalt saanud hoida ühes komponendis.<br />
Rakenduse kasutamise, ega paigaldamise kohta pole mitte mingisugust informatsiooni. Õnneks on talupoja mõistusega rakenduse käivitamine siiski võimalik. Tuli avada vastav solution, luua lokaalne andmebaas ning seejärel käivitada solutionis vastav projekt (WebApp), mis pani korraga käima nii veebiteenuse kui ka klientrakenduse.<br />
Järgnevalt mõningaid tähelepanekuid rakenduse kasutamise kohta:<br />
<br />
* Kasutaja loomisel valideeritakse kenasti kasutajaandmeid. Pole võimalik sisestada liiga lühikest nime või liiga lihtsat parooli. Kasutaja loomisel antakse kenasti tagasisidet, kui üritatakse luua kasutajat, kelle kasutajanimi või email on juba kasutusel.<br />
* Kasutajal on võimalik muuta kasutajaandmeid - eesnimi, perekonna nimi ning email. Paraku pole võimalik muuta ei parooli ega kasutajanime.<br />
* Klientrakendus näeb selge ja puhas välja. See on saavutatud Bootstrap CSS raamistiku kasutamisega. <br />
* Äriloogika on krüptovaluutade-võõrale kasutajale pisut segane. Kliendi vaatest on näha, et kauplemine on võimalik vaid kahe valuuta suhtes (Bitcoin ja Ethereum). See tähendab, et üks kahest peab olema alati valitud. Seejärel saab kasutaja valida, mis valuuta on tehingu vastaspooleks. See tähendab, et kui näiteks soovitakse vahetada Monero valuuta Agrello vastu, siis tuleb kõige pealt Monero vahetada Ethereumi vastu, mis seejärel vahetatakse Bitcoini vastu, mille eest lõpuks saab osta Agrello valuutat.<br />
* Huvitaval kombel saab kasutaja olla iseenda tehingu vastaspooleks. See tähendab, et kui kasutaja on pannud üles orderi ostmiseks ja seejärel ka müümiseks, siis ka selline tehing läbi viiakse.<br />
* Klientrakenduses on puudu loogilisi funktsionaalsuseid, mis võiks olla seda sorti platvormil realiseeritud. Näiteks kasutajana sooviksin näha enda poolt läbiviidud tehingute ajalugu või sooviksin tühistada enda poolt üles pandud orderieid, jne.<br />
* Kliendipoolelt paistab välja üks äriloogika viga. Näiteks kasutaja krüptovaluutade bilanss ei muutu nii nagu eeldaks. Viies läbi müügi tehingu, kus hind on 10 ja kogus 5, siis müüdava valuuta kogus väheneb vaid 5 võrra, mitte 50 võrra nagu oleks eeldanud. Seda kas selle vea põhjustab kliendi või rakenduse pool peaks välja selgitama koodi põhjalikum analüüs.<br />
* Selliseid vigu, mis suudaksid klientrakenduse kokkujooksutada või panna ta andma veateatei, ei suudetud leida.<br />
<br />
<br />
Kokkuvõtvalt võib öelda, et meeskond Curry on näidanud, et oskavad klientrakendust luua ning saavad aru kuidas klientrakendus peab suhtlema veebiteenusega. Puudused, mis saab välja tuua pole tehnilist laadi vaid pigem seotud sellega, et klientrakenduse poolele on realiseeritud skoop väiksem, kui võiks antud rakendusest eeldada.<br />
<br />
==XML-ile==<br />
'''Retsensioon meeskond [https://wiki.itcollege.ee/index.php/Meeskond:Curry Curry XML-ile]'''<br />
<br />
<br />
XML on süntaksilt korrektne vastavalt validaatorile [https://www.w3schools.com/xml/xml_validator.asp https://www.w3schools.com/xml/xml_validator.asp]<br />
<br />
XML ja XSD on kooskõlas vastavalt [https://www.freeformatter.com/xml-validator-xsd.html https://www.freeformatter.com/xml-validator-xsd.html]<br />
<br />
XML-i ülesehitus on selline, millist retsenseerija varem näinud ei ole. Kui tavaliselt on erinevad elemendid paigutatud loogiliselt üksteise sisse, siis antud näites on alguses ära toodud linnad ning neile antud id. Järgnevalt on eraldi ära kirjeldatud riigid, mille sees on element, mis id abil viitab eelnevalt kirjeldatud linnale. Objektidevahelised seosed on küll olemas, kuid fail on tänu sellele mahukam, see on raskemini loetav ning ilmselt on raskendatud XMLi töötlemine XPATHi abil, millest enamus eeldab parent-child tüüpi seoseid, mitte relatsioonilisust. XMLi elementidel on piisavalt attribuute ning objektid on piisava sügavusega.<br />
<br />
Esimesel XSLT versioonil oli paar tähemärki algusest puudu, kuid need parandati kiirelt ning seejärel sai XSLT abil väikese HTML tabeli kui uue XMLi. Tabeli loomisel on kasutatud peamiselt for-each tsükleid ning leidub üks tingimuste kontroll. Kasutatud on xsl:key attribuuti.<br />
<br />
XMLiks transformeeriv XSLT on oma ülesehituselt veidi lihtsam, kuid seal on ühe huvitava lisana kokku loetud ja kuvatud lapselementide arv. Ühe võimaliku murekohana pole tulemusena saadavas XMLis välja toodavad riigid grupeeritud eraldi tagi <Country> vahele. Seetõttu, kui meid huvitaksid näiteks Leedu linnad, peaksime me praegusest XMList otsima Leedu nimele järgnevaid linnasid <Towns> , mis on samas enne järgmist <name> tagi. Lihtsam oleks võtta ainult järgmised <Towns> elemendid, kuid mõnel riigil võivad need ka puudu olla ja sellisel juhul võime saada tulemuseks teise riigi linnad.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018&diff=131547Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 20182018-06-09T13:51:47Z<p>Ptiganik: /* Meeskond: Curry */</p>
<hr />
<div>[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]<br />
__NOINDEX__<br />
<br />
=Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018=<br />
==Eesmärk==<br />
Saada praktiline kogemus hajussüsteemide ehitamisest XML(SOAP) või Rest veebiteenusel ja sellele klientrakenduse loomise abil ning süvendada meeskonnatööoskust. <br />
*SOAP veebiteenuse puhul eeldatakse WCF tehnoloogia kasutamist. Vanema põlvkonna ASP.NET veebiteenuse loomine ei ole lubatud, kuna seda ei toeta ka Microsoft enam tänasel päeval.<br />
*REST teenuste loomisel tuleks kasutada ASP.NET Web API2/ASP.NET Core 2.0/WCF võimalusi.<br />
<br />
Kaugem eesmärk on loomulikult hinne :).<br />
<br />
==Reeglid==<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus<br />
<br />
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda. 1,2 ja viie liikmelised meeskonnad tuleks õppejõuga eraldi kooskõlastada.<br />
<br />
Töö käiku kajastatakse http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.<br />
<br />
==Tähtajad==<br />
<br />
<br />
* '''Veebiteenus''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Veebiteenus NB! Täpsem info]<br />
** Veebiteenuse analüüs peab olema valmis, esitatud ja wikilehel kirjeldatud hiljemalt: '''01.aprill 2018'''. Lisaks on '''Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. <ins>Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.</ins>'''<br />
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid veebiteenuste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''Klientrakendused''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Klientrakendus NB! Täpsem info]<br />
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid klientrakenduste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''XML fail''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#XML_andmefail NB! Täpsem info]<br />
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt '''01. juuni 2018'''.<br />
** Retsensioonid XML-failide kohta peavad tehtud olema '''05.juuni 2018'''.<br />
<br />
==Hindamine==<br />
===Üldised kriteeriumid===<br />
<br />
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.<br />
<br />
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), paigaldusjuhend ning lahenduse kirjeldus. <br />
<br />
'''Maksimumtulemuse annab (vähemalt 4/7):'''<br />
<br />
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)<br />
* Mobiilirakendused/Angularis/reactis loodud klientrakendus<br />
* Kogukondade kaasamine<br />
* Kasutajamugavus<br />
* Läbimõeldud töökorraldus<br />
* Lisavõimaluste realiseerimine (vt näidisteemad)<br />
* Korraliku arhitektuuriga kirjutatud kood<br />
<br />
===XML andmefail===<br />
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning minimaalselt kaks sobivat XSL transformatsiooni faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. Transformatsioonid peavad sisaldama midagi enamat, kui ainult üks for-each klausel. Transformatsiooni käigus peaks kasutama vajadusel parameetreid ning kindlasti ka erinevaid tingimuste kontrolle.<br />
<br />
XML-il peab olema vähemalt 4 loogilist dimensiooni.<br />
<dim1><br />
<dim2><br />
<dim3><br />
<dim4><br />
</dim4><br />
</dim3><br />
</dim2><br />
</dim1><br />
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.<br />
<br />
===Veebiteenus===<br />
Loodav veebiteenus peab võimaldama:<br />
* Teenuse pakkumist<br />
* '''Teenuse kasutajate tuvastamist ning haldamist'''<br />
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes<br />
* Teenuse poole pöördumiste arvu piiramist ja piirangute haldamist.<br />
<br />
Loodav veebiteenus peab toetama mitme kasutaja võimalust.<br />
<br />
Loodav veebiteenus tuleb luua kasutades ''Windows Communication Foundation'' või ASP.NET MVC Web API tehnoloogiat<br />
<br />
Andmebaasis peab olema vähemalt 9 olemit ehk andmebaas on eeldus,<br />
<br />
<br />
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).<br />
<br />
===Klientrakendus===<br />
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena(ASP.NET veebirakendus või hoopis Angulari või Reacti baasil), töölauarakendusena(WPF) või mobiilse rakendusena(Xamarin)<br />
<br />
Variant1: teha klientrakendus enda loodud veebiteenusele <br />
<br />
Variant2: teha klientrakendus mõnele levinud veebiteenusele.<br />
Näiteks: <br />
* http://www.bing.com/developer<br />
* http://www.flickr.com/services/api/response.soap.html<br />
* http://developer.ebay.com/developercenter/windows/<br />
* http://apiwiki.twitter.com/Getting-Started<br />
<br />
===Retsensioonid===<br />
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.<br />
<br />
Retsensioon peab sisaldama minimaalselt...<br />
* XML - ...200 sõna.<br />
* Veebiteenus - ...600 sõna.<br />
* Klientrakendus - ...600 sõna.<br />
<br />
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.<br />
<br />
==Konsultatsioonid==<br />
Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma<br />
töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida<br />
õppejõuga kokkuleppeid kontaktidel<br />
mait.poska [ät] itcollege.ee või (+372 53 469 734)<br />
(teksti originaalautor Priit Raspel)<br />
<br />
==Kaitsmisele registreerumine==<br />
Kaitsmisele tuleks registreerida järjest(st iga järgmine lisab vajaliku 15min ajaakna) ja suvalisis kellaaegasid ei hakka kuhugi vahele kirjutama<br />
<br />
'''05.06.2018'''<br />
*15:00 - Miisiks<br />
*15:15 - Maagikud <br />
*15:30 - GoFood<br />
*15:45 - Raavo V2™<br />
*16:00 - LearnToDrive<br />
Sellele päevale rohkem aegu juurde lisada ei saa<br />
<br />
<br />
Allpool olevate päevadele võib vabalt aegasid juurde lisada 15min sammga. Reegel on, et aegu lisame järjest<br />
<br />
'''06.06.2018'''<br />
*17:00 - Raamaturiiul<br />
*17:15 - Pakiraam<br />
*..<br />
<br />
<br />
'''09.06.2018'''<br />
*16:00 - MealPlannerSolo(Triin Oja)<br />
*16:15 - Beer Pressure<br />
*16:30 - &lt;div&gt;<br />
*16:45 - NutriCheck<br />
*17:00 - JääTuli<br />
*17:15 - Ophelia<br />
*17:30 - Kuldne Loojang<br />
*17:45 - Hammas<br />
*18:00 - VariousArtists<br />
*18:15 - Pillar Of Autumn<br />
*18:30 - Curry<br />
*18:45 - WatchWinders<br />
*19:00 - MOT<br />
*19:15 - AmateurBB<br />
*19:30 - Autolugu<br />
<br />
=Teemad 2018 kevad=<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele<br />
<br />
NB! XML andmefail ja veebiteenus ei pea olema omavahel seotud.<br />
<br />
<br />
==Näidisteemad==<br />
<br />
<br />
====Ülesanne====<br />
Luua sobiva alguse järgi nimede pakkumise teenus:<br />
* alates kahetähelisetest algustest pakkuda sobivad nimesid<br />
* luua võimalus kasutajatel nimesid lisada<br />
* luua võimalus administraatoril nimesid muuta/kustutada<br />
* meeste ja naiste nimed peavad olema süsteemis eristatavad<br />
* luua võimalus, mis võimaldab kuvada populaarseid nimesid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* luua võimalus, et nimi lisatakse baasi alles siis, kui administraatori õigustega inimene on selleks vastava loa andnud<br />
<br />
===Külastusstatistika teenus===<br />
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.<br />
<br />
====Ülesanne====<br />
Luua külastusstatistika teenus:<br />
* kasutaja saab teenuses registreerida külastusi<br />
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
<br />
Lisavõimalused:<br />
* luua võimalus registreerida alamlehtede külastusstatistikat<br />
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)<br />
<br />
===Telefoniraamatu teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida<br />
<br />
====Ülesanne====<br />
Luua telefoniraamatu teenus:<br />
* kasutaja saab teenuses kontakte lisada ja kustutada<br />
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutajaid on võimalik lisada gruppidesse<br />
* kasutajal on võimalik lisada vajalike kontaktandmete liike<br />
* kasutajatel on võimalik jagada omavahel kontakte ja kontaktide grupper<br />
<br />
===RSS voogude kogumise ja uudiste kuvamise teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda<br />
<br />
====Ülesanne====<br />
Luua RSS voogude haldusteenus:<br />
* kasutaja saab teenuses RSS vooge lisada ja kustudada<br />
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutaja saab RSS vooge vaadata eraldi või grupeeritult<br />
* vooge peab puhverdama, kuna voogude lugemine võtab enamasti üsna palju aega <br />
*<br />
<br />
= Meeskonnad 2018=<br />
==Päevaõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/HairSaloon Meeskond: HairSaloon]===<br />
Liikmed:<br />
* Kaido Henrik Elias<br />
* Arvo Paomees<br />
<br />
===[https://wiki.itcollege.ee/index.php/VariousArtists Meeskond: VariousArtists]===<br />
Liikmed:<br />
* Ruudi Vinter<br />
* Madis Roosioks<br />
* Pavel Fleišer<br />
<br />
Lõpptoode: [https://drive.google.com/open?id=1Pq8Lhrs3G5mGiTje70ww-zMBNB5cXnRh ZIP]<br />
<br />
TFS: [https://variousartists.visualstudio.com/VariousArtists/_versionControl/changesets siin]<br />
<br />
XML: [https://wiki.itcollege.ee/index.php/VariousArtists#XML siin]<br />
<br />
Retsensioonid: [https://wiki.itcollege.ee/index.php/VariousArtists#Retsensioonid siin]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Maagikud Meeskond: Maagikud]===<br />
Liikmed:<br />
*Kristina Rästas<br />
*Simo Jaanus<br />
*Artur Tammiste<br />
*Rauno Lõhmus<br />
Lõpptoote [http://enos.itcollege.ee/~sjaanus/c/Airport_solution.zip link]<br />
<br />
Veebiteenuse ja klientrakenduse retsensioon tiimile Raavo V2 asub [https://docs.google.com/document/d/1fxmdLa94Do1u5WlmPQjSd4mMmdbDw5WmDne547jqQc4/edit siin]<br />
<br />
XML retsensioon tiimile LTD asub [https://docs.google.com/document/d/15rMhpqyG5XHsvOCZJp88ucHkiMa5Non6BbYwBBKT2_Y/edit siin]<br />
<br />
===[https://wiki.itcollege.ee/index.php/RaamatuRiiul Meeskond: RaamatuRiiul]===<br />
Liikmed:<br />
* Alo Avi<br />
* Arnika Rästa<br />
* Marite Rammo<br />
'''Meie XML:''' [https://wiki.itcollege.ee/index.php/RaamatuRiiul#XML XML]<br />
<br />
'''Meie veebiteenuse, klientrakenduse ja XML retsensioonid meeskonnale Miisiiks:''' [https://wiki.itcollege.ee/index.php/Talk:Miisiiks retsensioonid]<br />
<br />
'''Meie veebiteenus ning klientrakendus.''' [https://www.dropbox.com/s/ugbvx4j4zdlbp68/RaamatuRiiul.7z?dl=0 Zip]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Autolugu Meeskond: Autolugu]===<br />
Liikmed:<br />
* Margus Põlma<br />
* Karl Erik Õunapuu<br />
<br />
===[https://wiki.itcollege.ee/index.php/VRII2018 Meeskond: VRII2018]===<br />
Liikmed:<br />
* Kaspar Kaal<br />
* Teet Adamson<br />
* Rahel Kangur<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Raavo_V2%E2%84%A2 Meeskond: Raavo V2™]===<br />
Liikmed:<br />
* Peeter Fridolin<br />
* Kristo Leesmann<br />
* Rando Rommot<br />
<br />
Projekti retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/Meeskond_Raavo_V2™#Retsentsioonid Maagikud]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Pillarofautumn Meeskond: Pillar of Autumn ]===<br />
Liikmed:<br />
* Taavi Põder<br />
* Taavi Vesinurm (Meeskonnast lahkunud)<br />
* Raido Vell<br />
'''Lõpptoode API ja klientrakendus:''' [https://github.com/taavip9/Veebirakendused-II Lõpptoode]<br />
<br />
===[https://wiki.itcollege.ee/index.php/jaatuli Meeskond: JääTuli]===<br />
Liikmed:<br />
*Tarmo Luugus<br />
*Leho Kivistik<br />
*Hannes Mäeorg<br />
*Marten Tammeleht<br />
<br />
===[https://wiki.itcollege.ee/index.php/JustABot Meeskond: JustABot]===<br />
Liikmed:<br />
*Argo Hansen<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Pakiraam Meeskond: Pakiraam]===<br />
Liikmed:<br />
*Kristo Naeris<br />
*Indro Kottise<br />
<br />
Klientrakendus [https://github.com/knaeris/VR2Klient siin] ja veebiteenus [https://github.com/knaeris/VR2Projekt siin]<br />
<br />
Retsensioon meeskonna Raavo v2 klientrakendusele : [https://wiki.itcollege.ee/index.php/Meeskond_Pakiraam#Retsensioonid Retsensioon]<br />
<br />
Retsensioon meeskonna Raavo v2 veebiteenusele:<br />
<br />
===[https://wiki.itcollege.ee/index.php/GoFood Meeskond: GoFood]===<br />
Liikmed: <br />
<br />
* Rando Kurel<br />
* Henrik Prangel<br />
* Markus Mänd<br />
* Edgar Tereping<br />
* Jane Kaldma<br />
<br />
Lõpptoode: [https://wiki.itcollege.ee/index.php/GoFood#Projektikood lõpptoote leiab siit]<br />
<br />
Meie rühma kirjutatud retsentsioonid rühmale Maagikud:[https://wiki.itcollege.ee/index.php/GoFood#Retsensioon_rühmale_Maagikud Retsensioon]<br />
<br />
===[https://wiki.itcollege.ee/index.php/LTD Meeskond: LearnToDrive]===<br />
'''Liikmed:'''<br />
*Eve Ormisson<br />
*Carlos Kirtsi<br />
<br />
Projekt [https://wiki.itcollege.ee/index.php/LTD#Kood_ise asub siin, kliendina kasutame JustInCaseWPFi]<br />
<br />
Projekti retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/LTD#Projekti_retsensioon Maagikud]<br />
<br />
XML osa retsensioon meeskonnale [https://wiki.itcollege.ee/index.php/LTD#XML_retsensioon RaamatuRiiul]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Miisiiks Meeskond: Miisiiks]===<br />
Liikmed:<br />
*Christo Aruste<br />
*Heleriin Malkov<br />
*Tõnis Prants<br />
<br />
[https://www.dropbox.com/s/e2vu3ukgckyc2x5/MiisiiksWS.zip?dl=0 Veebiteenus]<br />
<br />
Veebiteenus v2 (05.06): [https://www.dropbox.com/s/4acyvc9c7h08xl6/MiisiiksWS-v2.rar?dl=0 Veebiteenus]<br />
<br />
[https://www.dropbox.com/s/iwtheohp5mn0lek/MiisiiksC.zip?dl=0 Klientrakendus]<br />
<br />
Klientrakendus v2 (05.06): [https://www.dropbox.com/s/m6ijv2yyqthebgr/MiisiiksC2-v2.rar?dl=0 Klientrakendus]<br />
<br />
[https://wiki.itcollege.ee/index.php/Miisiiks#XML XML]<br />
<br />
<br />
Retsensioonid meeskonnale Raavo V2™<br />
<br />
Veebiteenus: [https://wiki.itcollege.ee/index.php/Miisiiks#Veebiteenuse_retsensioon Retsensioon]<br />
<br />
Klientrakendus: [https://wiki.itcollege.ee/index.php/Miisiiks#Klientrakenduse_retsensioon Retsensioon]<br />
<br />
XML: [https://wiki.itcollege.ee/index.php/Miisiiks#XML_retsensioon XML]<br />
<br />
===[https://wiki.itcollege.ee/index.php/VR2_div Meeskond: &lt;div&gt;]===<br />
Liikmed:<br />
*Kaarel Pärtel<br />
*Marek Juhanson<br />
*Kai Kallastu<br />
<br />
Retsensioonid rühmale [https://wiki.itcollege.ee/index.php/Miisiiks Miisiiks™]: [https://docs.google.com/document/d/1gQmas-Fay_XHHhLInKM92152vYeFdFflDIRozN63mxA/edit?usp=sharing veebiteenus, klientrakendus ja XML]<br />
<br />
==Kaugõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/BestInShow Meeskond: BestInShow]===<br />
Liikmed:<br />
* Liina Abner<br />
* Marju Pütsepp<br />
* Liisi Taimre<br />
<br />
'''Lõpptoode veebiteenus:''' [https://www.dropbox.com/s/j5ixmwmx45kxcyo/BestInShow.zip?dl=0 https://www.dropbox.com/s/j5ixmwmx45kxcyo/BestInShow.zip?dl=0]<br><br />
'''Kasutusjuhend:''' [https://wiki.itcollege.ee/index.php/BestInShow#Kasutusjuhend https://wiki.itcollege.ee/index.php/BestInShow#Kasutusjuhend]<br><br />
'''Lõpptoode klient:''' [https://bitbucket.org/Marjup/bestinshow/ https://bitbucket.org/Marjup/bestinshow/]<br><br />
'''XML failid:''' [https://wiki.itcollege.ee/index.php/BestInShow#XML_failid Schema, XML ja XSLT HTML ja XML transformatsiooniks]<br><br />
Retsensioon veebiteenusele: TODO<br><br />
Retsensioon klientrakendusele: TODO<br><br />
Retsensioon XML-ile: TODO<br><br />
<br />
===[https://wiki.itcollege.ee/index.php/AssistDesq Meeskond: AssistDesq]===<br />
Liikmed: <br />
* Karen Grigorjan<br />
<br />
===[https://wiki.itcollege.ee/index.php/WatchWinders Meeskond: WatchWinders]===<br />
Liikmed:<br />
* Toomas Juhkov<br />
* Kunnar Kukk<br />
* Tiit Kuuskmäe<br />
[https://wiki.itcollege.ee/index.php/WatchWinders#Link_klientrakendusele_ja_API-le Link klientrakendusele ja API-le]<br />
<br />
===[[ Kuldneloojang | Meeskond: Kuldne loojang]]===<br />
'''Liikmed''':<br />
* Andrus Seiman<br />
* Marko Belzetski<br />
* Priit Tiganik<br />
* Kristjan Peterson (loobus)<br />
<br />
<br />
'''Lõpptoode:'''<br />
algselt üles laetud 02.06.2018, bugide parandusi lisatud 04.06.2018<br />
* [https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0 .zip fail rakendus ja klient koos] <br />
* [https://bitbucket.org/itcollegeprojects/loojang-app veebirakenduse repo] <br />
* [https://bitbucket.org/itcollegeprojects/loojang-client klientrakenduse repo] <br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus XML: link meie Wiki lehele]<br />
<br />
<br />
'''Retsensioonid:'''<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#Veebiteenusele veebiteenuse retsensioon meeskonna Curry tööle. '''(TEGEMISEL)''']<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#Klientrakendusele klientrakenduse retsensioon meeskonna Curry tööle.]<br />
* [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML-ile XML retsensioon meeskonna Curry tööle. '''(TEGEMISEL)''']<br />
<br />
===[https://wiki.itcollege.ee/index.php/Ophelia Meeskond: Ophelia]===<br />
Liikmed:<br />
* Siim Kallari<br />
* Andres Kepler (loobus)<br />
* Jorma Rebane<br />
<br />
[https://www.dropbox.com/s/v63fkbjnd5umqqm/Ophelia.zip?dl=0 Lõpptoote link]<br />
<br />
[https://wiki.itcollege.ee/index.php/Ophelia#L.C3.B5pptoote_kasutusjuhend Kasutusjuhend(Kaasas ka lõpptootes)]<br />
<br />
[https://wiki.itcollege.ee/index.php/Ophelia#XML_.C3.9Clesanne XML Ülesanne]<br />
<br />
===[https://wiki.itcollege.ee/index.php/SharpRestoVRII Meeskond: SharpRestoVRII]===<br />
Liikmed:<br />
* Andres Aava (lahkunud liige)<br />
* Henri Annilo<br />
* Jaan Koolmeister<br />
* Lauri Üksti<br />
<br />
Lähtekood: [http://enos.itcollege.ee/~luksti/CSharp/CSharpResto.zip CSharpResto]<br />
<br />
Retsensioonid:<br />
<br />
===[https://wiki.itcollege.ee/index.php/BeerPressure Meeskond: BeerPressure]===<br />
Liikmed:<br />
* Sigrid Aasma<br />
* Evelin Jõgi<br />
* Martin Kask<br />
* Marko Nõu<br />
'''Projekt:''' [https://github.com/sikumiku/TaisKohtApi TaisKohtApi]<br />
<br />
'''Lõpptoode:''' [https://github.com/sikumiku/TaisKohtApi/archive/61438e187a1a972410c8a3bc6274d69489d00aa6.zip GitHub commit]<br />
<br />
'''XML:''' [https://wiki.itcollege.ee/index.php/BeerPressure#XML.2FXSD.2FXSLT Beer Pressure XML/XSD/XSLT]<br />
<br />
'''Meie kirjutatud XML failide retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:MOT#XML_retsensioon_by_meeskond_BeerPressure: Team MOT retsensioon]<br />
<br />
'''Meie kirjutatud veebiteenuse retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:MOT#Veebiteenuse_retsensensioon_by_meeskond_BeerPressure: Team MOT retsensioon]<br />
<br />
'''Meie kirjutatud klientrakenduse retsensioon:''' [https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang#Klientrakenduse_retsensensioon_by_meeskond_BeerPressure: Team Kuldneloojang retsensioon]<br />
<br />
===[[ Memorize | Meeskond: Memorize]]===<br />
Liikmed:<br />
* Madis Uudam<br />
* Olle Mikk<br />
<br />
===[https://wiki.itcollege.ee/index.php/UCanDo Meeskond: UCanDo]===<br />
Liikmed:<br />
* Mart Raus<br />
* Ando Kiidron (loobus)<br />
* Liina Saar<br />
<br />
'''Lõpptoode: ''' [https://drive.google.com/drive/folders/1GIgiG5NvmnnKoQYmWWbfV_9Nhs2dezz8?usp=sharing UCanDo] <br><br />
'''Veebiteenuse retsensioon: ''' <br><br />
'''Klientrakenduse retsensioon: ''' <br><br />
'''XML retsensioon: ''' <br><br />
<br />
===[https://wiki.itcollege.ee/index.php/MOT Meeskond: MOT]===<br />
Liikmed:<br />
* Merike Meizner<br />
* Helen Oppar (loobus)<br />
* Hardi Tiitus<br />
<br />
'''Lõpptoode: ''' http://enos.itcollege.ee/~mmeizner/MOT/ <br><br />
'''Meie kirjutatud veebiteenuse, klientrakenduse ja XML'i retsensioon:''' [https://docs.google.com/document/d/16WL12wmvQ_TPcY_-4pG_kjwtstQoX5meEYcigE4Febw/edit?usp=sharing: Team Raavo V2]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:_MealPlanner Meeskond: MealPlanner]===<br />
Liikmed:<br />
*Triin Oja<br />
*Rein Remsu<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:Curry Meeskond: Curry]===<br />
Liikmed:<br />
* Rain Elken<br />
* Peeter Ploom<br />
<br />
'''Lõpptoode: ''' [http://enos.itcollege.ee/~pploom/VR2/ link] <br><br />
<br />
Curry meeskonna veebiteenust, klientrakendust ja XML-i retsenseerib meeskond KuldneLoojang. Curryle kirjutatud retsensioonid [https://wiki.itcollege.ee/index.php/Kuldneloojang#Meie_tehtud_retsensioonid asuvad siin: link]<br />
<br />
===[https://wiki.itcollege.ee/index.php/Hammas Meeskond: Hammas]===<br />
<br />
Liikmed:<br />
* Sten Lunden<br />
<br />
'''Lõpptoode:''' [https://ildtest.azurewebsites.net azure]<br />
<br/><br />
'''Projekt:''' [https://github.com/lundens/ild-core github]<br />
<br/><br />
'''XML''' [https://wiki.itcollege.ee/index.php/Hammas#XML wiki]<br />
<br/><br />
'''Veebiteenuse retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#Veebiteenuse_retsensioon_meeskonnale_GoFood GoFood]<br />
<br/><br />
'''Klientrakenduse retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#Klientrakenduse_retsensioon_meeskonnale_GoFood GoFood]<br />
<br/><br />
'''XML retsensioon''' meeskonnale [https://wiki.itcollege.ee/index.php/Hammas#XMLi_retsensioon_meeskonnale_MealPlannerSolo MealPlannerSolo]<br />
<br />
===[https://wiki.itcollege.ee/index.php/LabLite Meeskond: LabLite]===<br />
Liikmed:<br />
* Alex Kaska<br />
<br />
===[https://wiki.itcollege.ee/index.php/AmateurBB Meeskond: AmateurBB]===<br />
Liikmed:<br />
*Taavi Kivimaa<br />
<br />
===[https://wiki.itcollege.ee/index.php/MealPlannerSolo Meeskond: MealPlannerSolo]===<br />
Liikmed:<br />
*Triin Oja<br />
'''[https://wiki.itcollege.ee/index.php/MealPlannerSolo#XML_andmefail XML]'''<br />
<br/><br />
'''[http://enos.itcollege.ee/~troja/VRII2018/ Veebiteenus ja klientrakendus]'''<br />
<br />
===[https://wiki.itcollege.ee/index.php/NutriCheck Meeskond: NutriCheck]===<br />
Liikmed:<br />
*Artyom Likhachev<br />
'''Project:'''<br />
<br/>[https://www.dropbox.com/s/z9snrydbl5e8jp2/vr2_service-v2.zip?dl=0 Veebiteenus]<br />
<br/>[https://www.dropbox.com/s/7kn1u6z2481ligm/WebClient.zip?dl=0 Klientrakendus]</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131419Kuldneloojang2018-06-07T10:09:18Z<p>Ptiganik: /* Klientrakendus */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: BeerPressure<br />
<br />
[https://wiki.itcollege.ee/index.php/Talk:Kuldneloojang retsensioon discussioni lehel]<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Lõpptoode===<br />
https://www.dropbox.com/s/4h9bvq4k6388fmo/loojang.zip?dl=0<br />
(seisuga 02.06.2018, bugide parandusi lisatud 04.06.2018)<br />
<br />
===Versiooni haldus===<br />
'''Veebirakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
'''Klientrakendus'''<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
===Ettevalmistus.===<br />
Projekti paigaldamiseks on kaks varianti: 1) kloonida mõlemad repositooriumid või 2) alla laadida .zip fail ning lahti pakkida see sobivasse kohta. Viimasel juhul paigaldatakse nii veebi- kui ka klientrakendus korraga.<br />
<br />
<br />
<br />
===Veebirakendus.===<br />
Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev. Sellisel juhul tuleb vastav aadress meelde jätta ning kopeerida see klientrakenduse sätetesse. Vastasel juhul ei oska klient veebirakenduse poole pöörduda.<br />
<br />
<br />
<br />
===Klientrakendus.===<br />
Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks ning käsud käivitamiseks:<br />
<br />
'''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid)<br />
<br />
'''npm run start-en''' või '''npm run start-ee''' (vastavalt inglise või eesti keelse rakenduse käivitamiseks)<br />
<br />
<br />
Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
Uues andmebaasis esimest korda käivitamisel täidetakse baasis ainult FrequencyTypes tabel, ülejäänud info patsientide, tubade jne kohta tuleb retsensendil ise klientrakendusse sisestada ja asuda seoseid looma. Kuna teiste rollide õigused on muudatuste tegemiseks andmebaasis on piiratud, tuleks alustada andmete sisestamist rollis "admin".<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine, analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018&diff=131101Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 20182018-06-02T11:36:38Z<p>Ptiganik: /* Meeskond: Kuldne loojang */</p>
<hr />
<div>[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]<br />
__NOINDEX__<br />
<br />
=Kodutöö aines "Võrgurakendused II: hajussüsteemide ehitamine" 2018=<br />
==Eesmärk==<br />
Saada praktiline kogemus hajussüsteemide ehitamisest XML(SOAP) või Rest veebiteenusel ja sellele klientrakenduse loomise abil ning süvendada meeskonnatööoskust. <br />
*SOAP veebiteenuse puhul eeldatakse WCF tehnoloogia kasutamist. Vanema põlvkonna ASP.NET veebiteenuse loomine ei ole lubatud, kuna seda ei toeta ka Microsoft enam tänasel päeval.<br />
*REST teenuste loomisel tuleks kasutada ASP.NET Web API2/ASP.NET Core 2.0/WCF võimalusi.<br />
<br />
Kaugem eesmärk on loomulikult hinne :).<br />
<br />
==Reeglid==<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus<br />
<br />
Ühte projektimeeskonda kuulub 3..4 tudengit ning ühel teemal teostab projekti üks või mitu meeskonda. 1,2 ja viie liikmelised meeskonnad tuleks õppejõuga eraldi kooskõlastada.<br />
<br />
Töö käiku kajastatakse http://wiki.itcollege.ee keskkonnas. Wikilehe täitmise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest.<br />
<br />
==Tähtajad==<br />
<br />
<br />
* '''Veebiteenus''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Veebiteenus NB! Täpsem info]<br />
** Veebiteenuse analüüs peab olema valmis, esitatud ja wikilehel kirjeldatud hiljemalt: '''01.aprill 2018'''. Lisaks on '''Meeskonnad on loonud omale enda wiki lehe, kuhu kirjeldavad meeskonna ja panevad nad üles oma tööd. Lisaks hakkavad kogunema ka sinna teiste gruppide poolt kirjutatavad retsensioonid. <ins>Meeskonnalehed lingitakse selle lehe lõppu Meeskonna pealkirja alla.</ins>'''<br />
** Veebiteenus peab olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid veebiteenuste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''Klientrakendused''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#Klientrakendus NB! Täpsem info]<br />
** Klientrakendused peavad olema valmis, esitatud ja ja wikilehel kirjeldatud hiljemalt '''27. mai 2018'''.<br />
** Retsensioonid klientrakenduste kohta peavad tehtud olema '''03. juuni 2018'''.<br />
<br />
<br />
* '''XML fail''' [https://wiki.itcollege.ee/index.php/Kodut%C3%B6%C3%B6_aines_%22V%C3%B5rgurakendused_II:_hajuss%C3%BCsteemide_ehitamine%22_2018#XML_andmefail NB! Täpsem info]<br />
** XML fail, stiilifail ja skeemifail peavad olema valmis ja wikilehel kirjeldatud hiljemalt '''01. juuni 2018'''.<br />
** Retsensioonid XML-failide kohta peavad tehtud olema '''05.juuni 2018'''.<br />
<br />
==Hindamine==<br />
===Üldised kriteeriumid===<br />
<br />
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.<br />
<br />
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), paigaldusjuhend ning lahenduse kirjeldus. <br />
<br />
'''Maksimumtulemuse annab (vähemalt 4/7):'''<br />
<br />
* Majanduslik mõtlemine (kas loodav teenus ja rakendused oleks kasutatav ka ärilistel eesmärkidel)<br />
* Mobiilirakendused/Angularis/reactis loodud klientrakendus<br />
* Kogukondade kaasamine<br />
* Kasutajamugavus<br />
* Läbimõeldud töökorraldus<br />
* Lisavõimaluste realiseerimine (vt näidisteemad)<br />
* Korraliku arhitektuuriga kirjutatud kood<br />
<br />
===XML andmefail===<br />
Ülesande täitmiseks tuleb luua XML fail andmete edastamiseks, selle XML faili skeemifail ning minimaalselt kaks sobivat XSL transformatsiooni faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. Transformatsioonid peavad sisaldama midagi enamat, kui ainult üks for-each klausel. Transformatsiooni käigus peaks kasutama vajadusel parameetreid ning kindlasti ka erinevaid tingimuste kontrolle.<br />
<br />
XML-il peab olema vähemalt 4 loogilist dimensiooni.<br />
<dim1><br />
<dim2><br />
<dim3><br />
<dim4><br />
</dim4><br />
</dim3><br />
</dim2><br />
</dim1><br />
Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis one enamat, kui lihtsalt ID.<br />
<br />
===Veebiteenus===<br />
Loodav veebiteenus peab võimaldama:<br />
* Teenuse pakkumist<br />
* '''Teenuse kasutajate tuvastamist ning haldamist'''<br />
* Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes<br />
* Teenuse poole pöördumiste arvu piiramist ja piirangute haldamist.<br />
<br />
Loodav veebiteenus peab toetama mitme kasutaja võimalust.<br />
<br />
Loodav veebiteenus tuleb luua kasutades ''Windows Communication Foundation'' või ASP.NET MVC Web API tehnoloogiat<br />
<br />
Andmebaasis peab olema vähemalt 9 olemit ehk andmebaas on eeldus,<br />
<br />
<br />
Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).<br />
<br />
===Klientrakendus===<br />
Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena(ASP.NET veebirakendus või hoopis Angulari või Reacti baasil), töölauarakendusena(WPF) või mobiilse rakendusena(Xamarin)<br />
<br />
Variant1: teha klientrakendus enda loodud veebiteenusele <br />
<br />
Variant2: teha klientrakendus mõnele levinud veebiteenusele.<br />
Näiteks: <br />
* http://www.bing.com/developer<br />
* http://www.flickr.com/services/api/response.soap.html<br />
* http://developer.ebay.com/developercenter/windows/<br />
* http://apiwiki.twitter.com/Getting-Started<br />
<br />
===Retsensioonid===<br />
Retsensioon on üliõpilase iseseisva teadustöö kriitilise analüüsi põhjal koostatud argumenteeritud hinnang. Retsensioonis tuleb hinnata töö vastavust esitatud tingimustele, programmikoodi loetavust ning kommenteeritust, dokumentatsiooni ja kirjeldada puudusi. Retsensioonide põhjal on meeskondadel õigus oma projekte parandada enne määratud esitamistähtaja kättejõudmist.<br />
<br />
Retsensioon peab sisaldama minimaalselt...<br />
* XML - ...200 sõna.<br />
* Veebiteenus - ...600 sõna.<br />
* Klientrakendus - ...600 sõna.<br />
<br />
Mõnelauselisest arvamusest ei piisa, kuna tegemist on grupi loodavate arvustustega, mitte individuaalsete arvustustega.<br />
<br />
==Konsultatsioonid==<br />
Igal projektimeeskonnal on piiramatu õigus saada õppejõu käest konsultatsiooni ja juhendamist oma<br />
töö tegemiseks, kas harjutuste ajal või pärast harjutusi ja loenguid. Eriaegade suhtes saab sõlmida<br />
õppejõuga kokkuleppeid kontaktidel<br />
mait.poska [ät] itcollege.ee või (+372 53 469 734)<br />
(teksti originaalautor Priit Raspel)<br />
<br />
==Kaitsmisele registreerumine==<br />
Kaitsmisele tuleks registreerida järjest(st iga järgmine lisab vajaliku 15min ajaakna) ja suvalisis kellaaegasid ei hakka kuhugi vahele kirjutama<br />
<br />
'''05.06.2018'''<br />
*15:00 - ..<br />
*15:15 - ..<br />
*15:30 - ..<br />
<br />
=Teemad 2018 kevad=<br />
''' Kodutöö koosneb kolmest eraldiseisvast ülesandest:'''<br />
* Luua XML fail vabalt valitud andmete edastamiseks,selle faili skeemifail ning XSL fail(id) erinevate transformatsioonide tarvis (soovitavalt vähemalt andmete HTML ja XML kujul kuvamiseks)<br />
* Luua veebiteenus, mis võimaldaks pakkuda teenust, eristada kasutajaid ning näidata teenuse kasutamise statistikat kasutajate ja tegevuste lõikes<br />
* Luua klientrakendus mõnele olemasolevale või endaloodud veebiteenusele<br />
<br />
NB! XML andmefail ja veebiteenus ei pea olema omavahel seotud.<br />
<br />
<br />
==Näidisteemad==<br />
<br />
<br />
====Ülesanne====<br />
Luua sobiva alguse järgi nimede pakkumise teenus:<br />
* alates kahetähelisetest algustest pakkuda sobivad nimesid<br />
* luua võimalus kasutajatel nimesid lisada<br />
* luua võimalus administraatoril nimesid muuta/kustutada<br />
* meeste ja naiste nimed peavad olema süsteemis eristatavad<br />
* luua võimalus, mis võimaldab kuvada populaarseid nimesid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* luua võimalus, et nimi lisatakse baasi alles siis, kui administraatori õigustega inimene on selleks vastava loa andnud<br />
<br />
===Külastusstatistika teenus===<br />
Mõte selles, et pakkuda teenust, kus kasutajal on võimalik registreerida külastused ning küsida oma külastusstatistikat.<br />
<br />
====Ülesanne====<br />
Luua külastusstatistika teenus:<br />
* kasutaja saab teenuses registreerida külastusi<br />
* kasutaja saab küsida külastusstatistikat päevade/kuude/kogu perioodi lõikes<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
<br />
Lisavõimalused:<br />
* luua võimalus registreerida alamlehtede külastusstatistikat<br />
* luua võimalus külastusstatistikale lisaparameetrite lisamiseks (ip aadress, sirviku versioon jne)<br />
<br />
===Telefoniraamatu teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada kontakte ja nende seast otsida<br />
<br />
====Ülesanne====<br />
Luua telefoniraamatu teenus:<br />
* kasutaja saab teenuses kontakte lisada ja kustutada<br />
* kasutaja saab kontaktide nime/telefoninumbri jne abil otsida<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutajaid on võimalik lisada gruppidesse<br />
* kasutajal on võimalik lisada vajalike kontaktandmete liike<br />
* kasutajatel on võimalik jagada omavahel kontakte ja kontaktide grupper<br />
<br />
===RSS voogude kogumise ja uudiste kuvamise teenus===<br />
Mõte selles, et kasutaja saab teenuse abil salvestada talle huvipakkuvaid RSS vooge ja nendelt voogudelt uudiseid lugeda<br />
<br />
====Ülesanne====<br />
Luua RSS voogude haldusteenus:<br />
* kasutaja saab teenuses RSS vooge lisada ja kustudada<br />
* kasutaja saab pärida talle huvipakkuvate voogude viimaseid uudiseid<br />
* luua võimalus ühele kasutajale (või erinevatele kasutajagruppidele) maksimumpäringute hulga määramiseks<br />
* kasutaja saab RSS vooge vaadata eraldi või grupeeritult<br />
* vooge peab puhverdama, kuna voogude lugemine võtab enamasti üsna palju aega <br />
*<br />
<br />
= Meeskonnad 2018=<br />
==Päevaõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/HairSaloon Meeskond: HairSaloon]===<br />
Liikmed:<br />
* Kaido Henrik Elias<br />
* Arvo Paomees<br />
<br />
===[https://wiki.itcollege.ee/index.php/VariousArtists Meeskond: VariousArtists]===<br />
Liikmed:<br />
* Ruudi Vinter<br />
* Madis Roosioks<br />
* Madis Heinsoo<br />
* Pavel Fleišer<br />
<br />
===[https://wiki.itcollege.ee/index.php/Maagikud Meeskond: Maagikud]===<br />
Liikmed:<br />
*Kristina Rästas<br />
*Simo Jaanus<br />
*Artur Tammiste<br />
*Rauno Lõhmus<br />
Lõpptoote [http://enos.itcollege.ee/~sjaanus/c/Airport_solution.zip link]<br />
<br />
===[https://wiki.itcollege.ee/index.php/RaamatuRiiul Meeskond: RaamatuRiiul]===<br />
Liikmed:<br />
* Alo Avi<br />
* Arnika Rästa<br />
* Marite Rammo<br />
'''Meie XML:''' https://wiki.itcollege.ee/index.php/RaamatuRiiul#XML<br />
<br />
===[https://wiki.itcollege.ee/index.php/Autolugu Meeskond: Autolugu]===<br />
Liikmed:<br />
* Margus Põlma<br />
* Karl Erik Õunapuu<br />
<br />
===[https://wiki.itcollege.ee/index.php/VRII2018 Meeskond: VRII2018]===<br />
Liikmed:<br />
* Kaspar Kaal<br />
* Teet Adamson<br />
* Rahel Kangur<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Raavo_V2%E2%84%A2 Meeskond: Raavo V2™]===<br />
Liikmed:<br />
* Peeter Fridolin<br />
* Kristo Leesmann<br />
* Rando Rommot<br />
<br />
===[https://wiki.itcollege.ee/index.php/Pillarofautumn Meeskond: Pillar of Autumn ]===<br />
Liikmed:<br />
* Taavi Põder<br />
* Taavi Vesinurm<br />
* Raido Vell<br />
<br />
===[https://wiki.itcollege.ee/index.php/jaatuli Meeskond: JääTuli]===<br />
Liikmed:<br />
*Tarmo Luugus<br />
*Leho Kivistik<br />
*Hannes Mäeorg<br />
*Marten Tammeleht<br />
<br />
===[https://wiki.itcollege.ee/index.php/JustABot Meeskond: JustABot]===<br />
Liikmed:<br />
*Argo Hansen<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond_Pakiraam Meeskond: Pakiraam]===<br />
Liikmed:<br />
*Kristo Naeris<br />
*Margus Kildemaa<br />
*Indro Kottise<br />
<br />
===[https://wiki.itcollege.ee/index.php/GoFood Meeskond: GoFood]===<br />
Liikmed: <br />
<br />
* Rando Kurel<br />
* Henrik Prangel<br />
* Markus Mänd<br />
* Edgar Tereping<br />
* Jane Kaldma<br />
<br />
===[https://wiki.itcollege.ee/index.php/LTD Meeskond: LearnToDrive]===<br />
'''Liikmed:'''<br />
*Eve Ormisson<br />
*Carlos Kirtsi<br />
<br />
===[https://wiki.itcollege.ee/index.php/Miisiiks Meeskond: Miisiiks]===<br />
Liikmed:<br />
*Christo Aruste<br />
*Heleriin Malkov<br />
*Tõnis Prants<br />
<br />
[https://www.dropbox.com/s/e2vu3ukgckyc2x5/MiisiiksWS.zip?dl=0 Veebiteenus]<br />
<br />
[https://www.dropbox.com/s/iwtheohp5mn0lek/MiisiiksC.zip?dl=0 Klientrakendus]<br />
<br />
[https://wiki.itcollege.ee/index.php/Miisiiks#XML XML]<br />
<br />
===[https://wiki.itcollege.ee/index.php/VR2_div Meeskond: &lt;div&gt;]===<br />
Liikmed:<br />
*Kaarel Pärtel<br />
*Marek Juhanson<br />
*Kai Kallastu<br />
<br />
==Kaugõpe==<br />
<br />
===[https://wiki.itcollege.ee/index.php/BestInShow Meeskond: BestInShow]===<br />
Liikmed:<br />
* Liina Abner<br />
* Marju Pütsepp<br />
* Liisi Taimre<br />
<br />
===[https://wiki.itcollege.ee/index.php/WatchWinders Meeskond: WatchWinders]===<br />
Liikmed:<br />
* Toomas Juhkov<br />
* Kunnar Kukk<br />
* Tiit Kuuskmäe<br />
<br />
===[[ Kuldneloojang | Meeskond: Kuldne loojang]]===<br />
'''Liikmed''':<br />
* Andrus Seiman<br />
* Marko Belzetski<br />
* Priit Tiganik<br />
* Kristjan Peterson (loobus)<br />
<br />
<br />
'''Lõpptoode''' (seisuga 2. juuni 2018)''':'''<br />
* .zip fail rakendus ja klient koos: https://www.dropbox.com/s/0qs4zcon2bsnr72/loojang.zip?dl=0<br />
* veebirakenduse repo: https://bitbucket.org/itcollegeprojects/loojang-app<br />
* klientrakenduse repo: https://bitbucket.org/itcollegeprojects/loojang-client<br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus link meie Wiki lehele]<br />
<br />
<br />
'''Retsensioonid:'''<br />
* TODO<br />
<br />
===[https://wiki.itcollege.ee/index.php/Ophelia Meeskond: Ophelia]===<br />
Liikmed:<br />
* Siim Kallari<br />
* Andres Kepler (loobus)<br />
* Jorma Rebane<br />
<br />
===[https://wiki.itcollege.ee/index.php/SharpRestoVRII Meeskond: SharpRestoVRII]===<br />
Liikmed:<br />
* Andres Aava (lahkunud liige)<br />
* Henri Annilo<br />
* Jaan Koolmeister<br />
* Lauri Üksti<br />
<br />
Lähtekood: [http://enos.itcollege.ee/~luksti/CSharp/CSharpResto.zip CSharpResto]<br />
<br />
Retsensioonid:<br />
<br />
===[https://wiki.itcollege.ee/index.php/BeerPressure Meeskond: BeerPressure]===<br />
Liikmed:<br />
* Sigrid Aasma<br />
* Evelin Jõgi<br />
* Martin Kask<br />
* Marko Nõu<br />
'''Projekt:''' https://github.com/sikumiku/TaisKohtApi <br />
<br />
'''Lõpptoode:''' https://github.com/sikumiku/TaisKohtApi/archive/61438e187a1a972410c8a3bc6274d69489d00aa6.zip<br />
<br />
'''Meie kirjutatud XML retsensioon:''' TODO <br />
<br />
'''Meie kirjutatud veebiteenuse ja klientrakenduse retsensioon:''' https://wiki.itcollege.ee/index.php/Talk:MOT, TODO<br />
<br />
===[[ Memorize | Meeskond: Memorize]]===<br />
Liikmed:<br />
* Madis Uudam<br />
* Olle Mikk<br />
<br />
===[https://wiki.itcollege.ee/index.php/UCanDo Meeskond: UCanDo]===<br />
Liikmed:<br />
* Mart Raus<br />
* Ando Kiidron<br />
* Liina Saar<br />
<br />
===[https://wiki.itcollege.ee/index.php/MOT Meeskond: MOT]===<br />
Liikmed:<br />
* Merike Meizner<br />
* Helen Oppar<br />
* Hardi Tiitus<br />
<br />
'''Lõpptoode: ''' http://enos.itcollege.ee/~mmeizner/MOT/<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:_MealPlanner Meeskond: MealPlanner]===<br />
Liikmed:<br />
*Triin Oja<br />
*Rein Remsu<br />
<br />
===[https://wiki.itcollege.ee/index.php/Meeskond:Curry Meeskond: Curry]===<br />
Liikmed:<br />
* Rain Elken<br />
* Peeter Ploom<br />
<br />
===[https://wiki.itcollege.ee/index.php/Hammas Meeskond: Hammas]===<br />
Liikmed:<br />
* Sten Lunden<br />
<br />
===[https://wiki.itcollege.ee/index.php/LabLite Meeskond: LabLite]===<br />
Liikmed:<br />
* Alex Kaska<br />
<br />
===[https://wiki.itcollege.ee/index.php/AmateurBB Meeskond: AmateurBB]===<br />
Liikmed:<br />
*Taavi Kivimaa<br />
<br />
===[https://wiki.itcollege.ee/index.php/MealPlannerSolo Meeskond: MealPlannerSolo]===<br />
Liikmed:<br />
*Triin Oja<br />
<br />
===[https://wiki.itcollege.ee/index.php/NutriCheck Meeskond: NutriCheck]===<br />
Liikmed:<br />
*Artyom Likhachev</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131023Kuldneloojang2018-06-01T09:27:20Z<p>Ptiganik: /* Käivitamine (retsensentidele) */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev. <br />
<br />
'''Klientrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
Uues andmebaasis esimest korda käivitamisel täidetakse baasis ainult FrequencyTypes tabel, ülejäänud info patsientide, tubade jne kohta tuleb retsensendil ise klientrakendusse sisestada ja asuda seoseid looma. Kuna teiste rollide õigused on muudatuste tegemiseks andmebaasis on piiratud, tuleks alustada andmete sisestamist rollis "admin".<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131022Kuldneloojang2018-06-01T09:22:22Z<p>Ptiganik: /* Analüüs ja dokumentatsioon */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev.<br />
<br />
'''Klientrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
* 2018-06-01 Veebiteenuse ja klientrakenduse kokkuvõtte lisamine<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131021Kuldneloojang2018-06-01T09:21:49Z<p>Ptiganik: /* Käivitamine (retsensentidele) */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik vaated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda veebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On võimalik, et igas süsteemis on see erinev.<br />
<br />
'''Klientrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klient päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid uued loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131020Kuldneloojang2018-06-01T08:13:35Z<p>Ptiganik: </p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik aated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda vebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On täiesti võimali, et igas süsteemis on see erinev.<br />
<br />
'''Klinetrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klinet on päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131019Kuldneloojang2018-06-01T08:13:17Z<p>Ptiganik: /* Retsensioonid */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==Klientrakendus==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
==XML==<br />
Retsenseerija meeskond: '''Kes soovib retsenseerida?'''<br />
<br />
TODO<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik aated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda vebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On täiesti võimali, et igas süsteemis on see erinev.<br />
<br />
'''Klinetrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klinet on päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131018Kuldneloojang2018-06-01T08:12:37Z<p>Ptiganik: /* Retsensioonid */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
'''Kes soovib retsenseerida?'''<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
'''Kes soovib retsenseerida?'''<br />
==XML==<br />
Retsenseerija meeskond: <br />
'''Kes soovib retsenseerida?'''<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik aated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda vebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On täiesti võimali, et igas süsteemis on see erinev.<br />
<br />
'''Klinetrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klinet on päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131017Kuldneloojang2018-06-01T08:11:48Z<p>Ptiganik: /* Meeskond ja projekt */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
**Kristjan Peterson - ei osalenud arenduses<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==XML==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik aated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda vebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On täiesti võimali, et igas süsteemis on see erinev.<br />
<br />
'''Klinetrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klinet on päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=131016Kuldneloojang2018-06-01T08:07:53Z<p>Ptiganik: /* Meeskond ja projekt */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
Lõpptooted:<br />
* Veebiteenus ja klientrakendus: [https://wiki.itcollege.ee/index.php/Kuldneloojang#L.C3.B5pptoode Link antud lehe peatükile] <br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==XML==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Lõpptoode=<br />
<br />
==Kood / Versioonihaldus==<br />
<br />
===Veebirakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-app/<br />
<br />
===Klientrakendus===<br />
https://bitbucket.org/itcollegeprojects/loojang-client/<br />
<br />
==Käivitamine (retsensentidele)==<br />
'''Ettevalmistus.''' Kloonida mõlemad repositooriumid.<br />
<br />
'''Veebirakendus.''' Avada Visual Studios LoojangApp solution ning käivitada projekt Web App läbi. Kuna kõik aated on projektist eemaldatud, siis avaneb tühi aken. Sealt tuleb välja lugeda vebiaadress, mille poole klientrakendus pöörduma peab. Meie puhul oli selleks: '''https://localhost:44382'''. On täiesti võimali, et igas süsteemis on see erinev.<br />
<br />
'''Klinetrakendus.''' Peale kloonimist käivitada käsurealt klientrakenduse kaustas käsud projekti ehitamiseks '''npm install''' (vajalik vaid esimesel korral, sest paigaldab vajalikud paketid) ning käivitamiseks '''npm run start-en''' või '''npm run start-ee''' vastavalt inglise või eesti keelse rakenduse käivitamiseks. Kui backendi aadress erines meie poolt kasutatavast (https://localhost:44382), siis tuleb otsida klientrakenduse kaustas '''src/enivornemnts/environments.ts''' ja '''src/enivornemnts/environments.prod.ts''' failis ära muutuja '''apiUrl''' väärtused. Selle aadressi pihta teeb klinet on päringud ja see peab ühtima veebirakenduse aadressiga.<br />
<br />
Rakenduses on neli erinevat kasutaja tüüp: admin, doctor (arst), caretaker (hooldaja) ja guardian (lähedane). Nendele on loodud vaikimisi kasutajad vastavalt: admin@eesti.ee, doctor@eesti.ee, caretaker@eesti.ee. guardian@eesti.ee. Kõikide parool on '''aaaaaa'''. Kasutajaid võib vabalt juurde teha, kuid loodud kasutaja on õigusteta ning neile peab õigused andma mõni olemasoleva admin kasutaja.<br />
<br />
=Tegevuste logi=<br />
===Analüüs ja dokumentatsioon===<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-05-31 XMLi osa täiendamine wikilehel<br />
<br />
<br />
===Veebirakendus===<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Andmebaasi kiht EF baasil püsti.<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis. Äriloogika arendamise algus.<br />
* 2018-04-10 Kasutajalugude lisamine wikisse. Swaggeri integreerimine koodi.<br />
* 2018-04-13 Identity lisatud veebirakendusele.<br />
* 2018-04-15 Veebirakenduse äriloogika selgroog püsti (Factoryd, DTO-d ja Serviced enamikele olemitele). Algas suurem kontrollerite tegemine.<br />
* 2018-04-28 Enamus CRUD operatsioone ja vastavaid kontrolleried töökorras. Edaspidi arendati palju asju paralleelis kliendiga ning täiendati vastavalt veebiteenuse äriloogikat või kontrollereid.<br />
* 2018-05-06 Logimise lisamine veebirakendusele.<br />
* 2018-05-16 Enamus kontrolleritesse sisseviidud turvakontrollid vastavalt kasutaja rollile või id-le.<br />
* 2018-05-20 Täiendavad turvalisuse nõuded sisse viidud<br />
* 2018-05-30 Koodi puhastamine. Kasutamata kontrollerite ja vaadete eemaldamine.<br />
<br />
<br />
===Klientrakendus===<br />
* 2018-04-09 Pandi algus klientrakenduse arendamisele.<br />
* 2018-04-12 Esimene vaade püsti.<br />
* 2018-04-12 i18 mustriga kakskeelsuse toe lisamine.<br />
* 2018-04-17 Rollide põhine roiting.<br />
* 2018-04-22 Baas pipe-d olemite sortimiseks või filtreerimiseks.<br />
* 2018-05-01 JWT tokeniga sisse logimine.<br />
* 2018-05-09 Vaadete lisamine (toad, arstlikud läbivaatused).<br />
* 2018-05-15 Navigation-bari lisamine.<br />
* 2018-05-21 Protseduuride ja nende sageduse lisamine.<br />
* 2018-05-25 Kasutajahaldus.<br />
* 2018-05-29 Tokeni talletamine.<br />
<br />
<br />
=Projektliikmete panus=<br />
* 1/3 Andrus Seiman (valdav osa klientrakenduse koodist, andmemudeli ja EF andmebaasikihi loomine, analüüs, wiki)<br />
* 1/3 Marko Belzetski (suurem osa äriloogikast ja kontrolleritest, turvalisuse nõuded ja nende täitmise kontrollimine)analüüs)<br />
* 1/3 Priit Tiganik (suur osa äriloogikast ja kontrolleritest, protseduuride ja ettekirjutuste vaated klientrakenduses, analüüs, XML-osa, wiki)<br />
* Kristjan Peterson loobus üsna algul isiklikel põhjustel. Rakenduste loomises ta ei osalenud, küll aga panustas analüüsi ja wiki-lehe loomisse.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130995Kuldneloojang2018-05-31T11:15:11Z<p>Ptiganik: /* API endpointide kirjeldus (esialgne) */</p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
Projektide asukohad:<br />
* Veebiteenus: TODO<br />
* Klientrakendus: TODO<br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==XML==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
Tegemist on esialgse, analüüsi käigus loodud kirjeldusega. Lõpliku dokumentatsiooni saamiseks kasuta veebiteenuse Swaggerit.<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130994Kuldneloojang2018-05-31T11:13:54Z<p>Ptiganik: </p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
Projektide asukohad:<br />
* Veebiteenus: TODO<br />
* Klientrakendus: TODO<br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==XML==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
<br />
=Meeskonnatöö=<br />
Kes millega on tegelenud<br />
<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130992Kuldneloojang2018-05-31T11:11:49Z<p>Ptiganik: </p>
<hr />
<div>=Meeskond ja projekt=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
Projektide asukohad:<br />
* Veebiteenus: TODO<br />
* Klientrakendus: TODO<br />
* XML: [https://wiki.itcollege.ee/index.php/Kuldneloojang#XML_.C3.BClesande_kirjeldus Link antud lehe peatükile]<br />
<br />
=Retsensioonid=<br />
Meie tööle kirjutatud retsensioonid<br />
==Veebiteenus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==Klientrakendus==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
==XML==<br />
Retsenseerija meeskond: <br />
Kes soovib retsenseerida?<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130989Kuldneloojang2018-05-31T11:03:52Z<p>Ptiganik: /* KuldneLoojang_toXML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. Lõpptulemus näeb välja alljärgnev:<br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130985Kuldneloojang2018-05-31T10:59:15Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste kasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130984Kuldneloojang2018-05-31T10:54:54Z<p>Ptiganik: /* XML ülesande kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130983Kuldneloojang2018-05-31T10:54:23Z<p>Ptiganik: /* XML ülesande kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendid, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130982Kuldneloojang2018-05-31T10:53:45Z<p>Ptiganik: /* XML ülesande kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* '''KuldneLoojang.wsdl''' - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* '''KuldneLoojang.xsd''' - XSD fail XML-i sisu kirjeldamiseks<br />
* '''KuldneLoojangExample_forXML.xml''' - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojangExample_forHTML.xml''' - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* '''KuldneLoojang_toHTML.xslt''' - meie XMList HTMLi transformatisioonid<br />
* '''KuldneLoojang_toXML.xslt''' - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130981Kuldneloojang2018-05-31T10:52:31Z<p>Ptiganik: /* KuldneLoojang_toXML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
Kuna HTMLi transformeerimisel on kasutatud juba teatud hulk nõutust, siis XMLi transformatsioon sai üpris lihtne. Selle ''tag''-ide nimetused on muudetud eestikeelseteks ning kokku on kogutud kõik raviprotseduurid. <br />
<br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<ettekirjutused><br />
<ettekirjutus id="9223d9c2"><br />
<kirjeldus>võta Sudafedi</kirjeldus><br />
<algus>2018-01-01</algus><br />
<lopp>2018-01-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="35c813bd"><br />
<kirjeldus>loputa nina</kirjeldus><br />
<algus>2018-02-01</algus><br />
<lopp>2018-02-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="d10d3379"><br />
<kirjeldus>võta rögalahtistit</kirjeldus><br />
<algus>2018-03-01</algus><br />
<lopp>2018-08-14</lopp><br />
</ettekirjutus><br />
<ettekirjutus id="220d3379"><br />
<kirjeldus>võta valuvaigistit</kirjeldus><br />
<algus>2017-01-01</algus><br />
<lopp>2017-01-14</lopp><br />
</ettekirjutus><br />
</ettekirjutused><br />
</pre><br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130975Kuldneloojang2018-05-31T10:45:58Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130974Kuldneloojang2018-05-31T10:45:50Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
[[File:KuldneLoojangHTML.JPG | 500px ]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130973Kuldneloojang2018-05-31T10:45:37Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
[[File:KuldneLoojangHTML.JPG | 500px | left]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130972Kuldneloojang2018-05-31T10:45:17Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
[[File:KuldneLoojangHTML.JPG | 600px | center]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=File:KuldneLoojangHTML.JPG&diff=130970File:KuldneLoojangHTML.JPG2018-05-31T10:44:58Z<p>Ptiganik: </p>
<hr />
<div></div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130969Kuldneloojang2018-05-31T10:43:55Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
Lõplik transformatsioon näeb meie andmetega välja alljärgnev:<br />
[[File:.png | 600px | center]]<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130968Kuldneloojang2018-05-31T10:42:18Z<p>Ptiganik: /* XML ülesande kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud, nimelt on guid lühendatud ning käsitsi lisatud mõned attribuudid. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
<br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130967Kuldneloojang2018-05-31T10:41:17Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
<br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130966Kuldneloojang2018-05-31T10:41:04Z<p>Ptiganik: /* KuldneLoojang_toHTML.xslt */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
Õppejõu poolt antud ülesanne nõudis paljude erinevate XSLT võimaluste ärakasutamist. Otsustasime erinevaid transformatisoone kasutada erinevate HTML tabelite loomiseks. <br />
Esimeses tabelis on ära toodud Kuldne Loojang hooldekodu kõikide patsientide nimekiri kasutades xsL:for-each meetodit. Lisaks antakse igale reale xsl:choose abil klassi nimetus vastavalt patsiendi soo atribuudile. Nõnda on lõpptulemuses mehed värvitud siniseks ja naised roosaks.<br />
Teises tabelis antakse ülevaade patsientide ravist ning välja on kogutud kõik raviprotseduurid. Nende külge on omakorda otsitud XPath ancestor meetodiga nende protseduuride haiguslood ja patsiendid. Lisaks on andmed patsiendi perekonnanime järgi sorteeritud.<br />
Kolmandas janeljandas tabelis on välja otsitud ilma ravita patsiendid. Neid saab eristada kahte viisi kasutades. Esiteks on haiguslugudel XMLis küljes info, kas neil on küljes raviprotseduure või mitte. Seda lahendust kasutab kolmas tabel. Neljandas tabelis loetakse XSLT abil kokku, mitu raviprotseduuri ravijuhtumil küljes on ning kui neid ei ole, siis kuvatakse patsiendi andmed.<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130962Kuldneloojang2018-05-31T10:23:42Z<p>Ptiganik: </p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
=XML ülesande kirjeldus=<br />
Kuna antud ülesandega tuli kokku päris palju faile, ei ole hakatud nende sisu siia kopeerima, vaid kõik failid leiab üles sellelt aadressilt: [https://drive.google.com/drive/folders/1HzdoZaEJ-i475aFXH-OfYER7Try0fNne]<br />
<br />
Failide nimekiri:<br />
* KuldneLoojang.wsdl - infoks WCF SOAP teenuse kirjeldus, mille abil näidis-XML ja xsd said loodud<br />
* KuldneLoojang.xsd - XSD fail XML-i sisu kirjeldamiseks<br />
* KuldneLoojangExample_forXML.xml - XML näidis, millesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojangExample_forHTML.xml - täpselt sama XML näidis nagu eelmine, aga sellesse on lisatud HTML-iks transformeerimise XSLT faili link<br />
* KuldneLoojang_toHTML.xslt - meie XMList HTMLi transformatisioonid<br />
* KuldneLoojang_toXML.xslt - meie XMList väikese uue XMLi transformatisoonid<br />
<br />
XMLi näide pärineb enam-vähem meie veebirakenduse andmestruktuurist, kuigi lihtsuse nimel on seda veidi muudetud. XML-ist leiab väikese infohulgaga patsiendi, kellel on omakorda küljes nimekiri temaga seotud haigusjutudest (Medicalcase) ning viimaste küljes võib olla veel hulk raviprotseduure (Prescription). XMLi näidetes on alles jäetud SOAP päised ja nimeruumid. Kuigi need lisavad andmete töötlemisel keerukust, on nimeruumidega tegelemine eluliselt vajalik oskus ja seetõttu ei hakanud neid ka eemaldama ja XMLi lihtsamaks muutma. Kolmele XMLi tasemele on lisatud andmete lisakirjeldusena atribuute. <br />
Järgnevalt veidi lähemalt transformatsioonidest. <br />
<br />
==KuldneLoojang_toHTML.xslt==<br />
<br />
==KuldneLoojang_toXML.xslt==<br />
<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse<br />
* tõsisem arendus, polnud aegagi verstaposte kirja panna<br />
* 2018-05-31 XMLi osa täiendamine wikilehel</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130356Kuldneloojang2018-04-10T14:22:50Z<p>Ptiganik: /* Hooldaja */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga*) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130355Kuldneloojang2018-04-10T14:22:16Z<p>Ptiganik: /* Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. Nice-to-have funktsionaalsus on märgitud tärniga (*).<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130354Kuldneloojang2018-04-10T14:21:22Z<p>Ptiganik: /* Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. <br />
(*) Nice-to-have funktsionaalsus<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130353Kuldneloojang2018-04-10T14:20:47Z<p>Ptiganik: /* Arst= */</p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. <br />
* - Nice-to-have funktsionaalsus<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst===<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Kuldneloojang&diff=130352Kuldneloojang2018-04-10T14:20:13Z<p>Ptiganik: </p>
<hr />
<div>=Meeskond=<br />
<br />
*Andrus Seiman<br />
*Marko Belzetski<br />
*Priit Tiganik<br />
*Kristjan Peterson<br />
<br />
=Analüüs=<br />
<br />
==Kirjeldus==<br />
Vanadekodu “Kuldne loojang” on vanadekodu nagu vanadekodud ikka. Siin kantakse igapäevast hoolt vanemate inimeste eest, kes üksi enam hakkama ei saa ja kelle eest hooldamise on lähedased inimesed usaldanud professionaalide kätte. Vananevas ühiskonnas on vajadus säärase teenuse vastu suur ja pidevalt kasvav, seetõttu on konkurents tihe. Kuna teenuse kvaliteet on vanadekodule “Kuldne loojang” südameasi, on juhtkond otsustanud investeerida teenuse kvaliteedikontrolli digitaliseerimisse. On tehtud plaan luua infosüsteem, mis aitab põetajatel pidada järge klientidega igapäevaselt sooritatavate protseduuride üle. Kuna infotehnoloogia on juhtkonnale võõras teema, siis on otsustatud alustada vaikselt ja liikuda samm haaval. Seetõttu on disainitav infosüsteem kaunis väike.<br />
<br />
==Kasutajad==<br />
<br />
*juhtkonna poolt volitatud administratiivsed kasutajad, kes jagavad kasutajate õiguseid ja kontrollivad põetajate tööd<br />
*vanadekodu arstid, kes teostavad meditsiinilist läbivaatust ja määravad vajalikke protseduure,<br />
*klientide lähedased või kliendid ise, kes pääsevad ligi nendega seotud kliendiga seotud informatsioonile (meditsiiniline läbivaatus, protseduurid, jne.)<br />
*põetajad, kes saavad tutvuda tööülesannetega ning märkida neid teostatuks<br />
<br />
==Infosüsteemi funktsionaalsus==<br />
* Vanadekodu arsti vastutada on klientide tervise jälgimine.<br />
* Vajadusel teeb arst tervisekontrolli käigus ettekirjutisi, mille järgi põetajad klientide eest hoolitsevad.<br />
* Iga ettekirjutise kohta on teada kirjeldus, algus ja lõpu kuupäev ning sagedus, mis ütleb kui tihti protseduure ette tuleb võtta.<br />
* Vanadekodus võib tegutseda korraga mitu arsti.<br />
* Ühele kliendile võib ettekirjutisi teha mitu erinevat arsti.<br />
* Kuna klientide eest hoolitsemine käib kindlate graafikute alusel, siis peab ettekirjutises märgitud protseduuri sagedus tulema lubatud sageduste sõnastikust, mis sisaldab sagedusi nagu “kolm korda päevas peale sööki”, “hommikul ja õhtuti enne sööki”, jne.<br />
* Kui arst on ettekirjutise teinud, siis vastavalt alguse ja lõpukuupäevadele ning valitud sagedusele genereeritakse süsteemi kõik üksikud protseduurid, mis selle ettekirjutuse täitmiseks on vaja teostada.<br />
* Protseduuride läbi viimiseks on vanadekodus põetajad. Põetajate ülesanne on klientide eest hoolitsemine ja arstide ettekirjutuste elluviimine. Kuna patsiente on palju ja ettekirjutused erinevad, siis on vaja olla hoolas. Infosüsteem on selleks, et aidata põetajatel järge pidada, mis tööd on juba tehtud või mis töid on veel vaja teha. Selleks kuvab infosüsteem kõiki ühe toa või ühe kliendi kohta tänasel päeval tehtavaid protseduure.<br />
* Kui protseduur on täide viidud, siis saab põetaja märkida selle tehtuks ja asuda järgmiseid ülesandeid täitma.<br />
*Lähedastel on esialgu infosüsteemis väike roll. Nemad saavad lihtsalt uurida, mis ettekirjutisi arst on nende lähedaste kohta teinud ja kas need on kõik ikka ellu viidud.<br />
* Administraatoritel on voli luua teisi kasutajaid ja jagada neile rolle.<br />
* Lisaks on neil võimalus kontrollida arstide ja põetajate töid ning korraldada klientide paiknemist tubades.<br />
<br />
==Andmemudel==<br />
[[File:Kuldne_loojang_ERD1.png | 600px | center]]<br />
<br />
==API endpointide kirjeldus (esialgne)==<br />
<br />
====User==== <br />
POST/user - Adds a new user<br />
<br />
GET/users/{UserId} - Returns a user object for the given UserId<br />
<br />
DELETE/users/{UserId} - Deletes the user according to user id<br />
<br />
PATCH/users/{UserId} - Modify the user's data<br />
<br />
GET/users - Returns all the users in the database<br />
<br />
<br />
====Guardian====<br />
POST/guardian - Adds a new patient's guardian<br />
<br />
GET/guardians/{GuardianId} - Returns a patient's guardian by ID<br />
<br />
DELETE/guardians/{GuardianId} - Deletes guardian according to guardian's ID<br />
<br />
PATCH/guardians/{GuardianId} - Updates Guardian according to id<br />
<br />
GET/guardians - Returns all Guardians<br />
<br />
<br />
====Patient====<br />
POST/patient - Adds a new patient<br />
<br />
GET/patient/{PatientId} - Gets patient according to patient ID<br />
<br />
DELETE/patient/{PatientId} - Deletes patient according to patient ID<br />
<br />
PATCH/patient/{PatientId} - Modified patient's data according to patient ID<br />
<br />
GET/patients - Returns all patients<br />
<br />
<br />
====UserType====<br />
POST/usertype - Adds a new usertype<br />
<br />
GET/usertypes/{UserTypeId} - Returns a usertype object for the given UserTypeId<br />
<br />
DELETE/usertypes/{UserTypeId} - Deletes the usertype according to usertype id<br />
<br />
PATCH/usertypes/{UserTypeId} - Modify the usertype's data<br />
<br />
GET/usertypes - Returns all the usertypes in the database<br />
<br />
<br />
====PatientRoom====<br />
POST/patientRoom - Adds a new patientRoom<br />
<br />
GET/patientRooms/{PatientRoomId} - Returns a patientRoom object for the given PatientRoomId<br />
<br />
DELETE/patientRooms/{PatientRoomId} - Deletes the patientRoom according to patientRoom id<br />
<br />
PATCH/patientRooms/{PatientRoomId} - Modify the patientRoom's data<br />
<br />
GET/patientRooms - Returns all the patientRooms in the database<br />
<br />
<br />
====Room====<br />
<br />
POST/room - Adds a new room<br />
<br />
GET/rooms/{RoomId} - Returns a room object for the given RoomId<br />
<br />
DELETE/rooms/{RoomId} - Deletes the room according to room id<br />
<br />
PATCH/rooms/{RoomId} - Modify the room's data<br />
<br />
GET/rooms - Returns all the rooms in the database<br />
<br />
<br />
====PatientsDoctor====<br />
<br />
POST/patientsDoctor - Adds a new patientsDoctor<br />
<br />
GET/patientsDoctor/{PatientsDoctorId} - Returns a patientsDoctor object for the given PatientsDoctorId<br />
<br />
DELETE/patientsDoctor/{PatientsDoctorId} - Deletes the patientsDoctor according to patientsDoctor id<br />
<br />
PATCH/patientsDoctor/{PatientsDoctorId} - Modify the patientsDoctor's data<br />
<br />
GET/patientsDoctors - Returns all the patientsDoctors in the database<br />
<br />
<br />
====MedicalReview====<br />
<br />
POST/medicalReview - Adds a new medicalReview<br />
<br />
GET/medicalReviews/{MedicalReviewId} - Returns a medicalReview object for the given MedicalReviewId<br />
<br />
DELETE/medicalReviews/{MedicalReviewId} - Deletes the medicalReview according to medicalReview id<br />
<br />
PATCH/medicalReviews/{MedicalReviewId} - Modify the medicalReview's data<br />
<br />
GET/medicalReviews - Returns all the medicalReviews in the database<br />
<br />
GET/medicalReviews/patient/{PatientId} - Gets all medical review IDs for the given patient<br />
<br />
<br />
====FrequencyType====<br />
<br />
POST/frequencyType - Adds a new frequencyType<br />
<br />
GET/frequencyTypes/{FrequencyTypeId} - Returns a frequencyType object for the given FrequencyTypeId<br />
<br />
DELETE/frequencyTypes/{FrequencyTypeId} - Deletes the frequencyType according to frequencyType id<br />
<br />
PATCH/frequencyTypes/{FrequencyTypeId} - Modify the frequencyType's data<br />
<br />
GET/frequencyTypes - Returns all the frequencyTypes in the database<br />
<br />
<br />
=Kasutajalood ehk üldisem kliendi funktsionaalsuse kirjeldus=<br />
Kasutajalood-funktsionaalsus erinevatele rollidele. Kasutatud ERD tabelite nimetusi. <br />
* - Nice-to-have funktsionaalsus<br />
<br />
===Administraator===<br />
Soovin <br />
*Lisada/muuta/kustutada tubasid<br />
*Lisada/muuta/kustutada kasutajaid: hooldaja, arst, patsient, kliendi lähedane<br />
*Lisada/muuta/kustutada Patient seost Room-is<br />
*Lisada/muuta/kustutada FrequencyTypesid<br />
*Lisada/muuta/kustutada kõiki muid mõeldavaid asju kõikide tabelitega *<br />
===Arst====<br />
Soovin<br />
*Patsiendi külge lisada uut MedicalCase-t <br />
*MedicalCase külge lisada Prescription ja määrata selle sagedus<br />
*Saada ülevaadet enda MedicalCase-dest<br />
*Saada ülevaadet enda patsientidest<br />
*Enda ühe Patienti raames ülevaadet <br />
**tema MedicalCase-dest<br />
**Prescription-itest<br />
**Procedure-dest<br />
===Patsient või kliendi lähedane===<br />
Soovin<br />
*Saada ülevaadet enda kõikidest MedicalCase-dest<br />
*Saada ülevaadet enda Prescription-itest<br />
*Saada ülevaadet enda Procedure-dest<br />
*Saada teada, mis toas ma asun<br />
===Hooldaja===<br />
Soovin<br />
*Teada, millised Procedure pean järgmisena tegema<br />
*Märkida üks (või mitu korraga) Procedure tehtuks<br />
*Ülevaadet, milliseid procedure-sid ma pean tegema mingis kuupäevavahemikus*<br />
*Ülevaadet, milliseid procedure-sid ma olen mingis kuupäevavahemikus teinud*<br />
<br />
<br />
<br />
=Tegevuste logi=<br />
* 2018-03-06 Meeskonna loomine, teema fikseerimine<br />
* 2018-03-14 Esialgne analüüs ja andmemudel<br />
* 2018-03-16 API kirjeldus Swaggeris<br />
* 2018-03-20 Repositooriumi loomine TFS-is. Mudelite ja DAL-i seadistamine.<br />
* 2018-03-23 Wiki lehe loomine<br />
* 2018-03-30 Analüüsi lõplik vormistamine wikis<br />
* 2018-04-10 Kasutajalugude lisamine wikisse</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117573Talk:Elekter2017-02-01T20:03:27Z<p>Ptiganik: /* Retsensioon meeskonna Elekter lõpptootele - tehtud IseArve poolt */</p>
<hr />
<div>= Analüüsi retsensioon =<br />
==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
==C#==<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
= Lõpptoote retsensioon =<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele - tehtud [[Isearve]] poolt ==<br />
<br />
Meeskond Elekter on korralikult vaeva näinud ning teinud endale selgeks, missugust lõpp-produkti nad soovivad.<br />
Analüüs oli põhjalik ning selgelt on näha, et jaotatud rollid on toiminud ilusti.<br />
<br />
Põhjalik dokumentatsioon (!) ning blogipostitused olid huvitavaks kaaslaseks retsensiooni koostamisel, andis aimu kuidas meeskond on kogu produkti arendanud ning missuguseid väljakutseid nähti toote arendamise käigus.<br />
Elektri programmi sain tööle ilma igasuguste viperusteta.<br />
<br />
UI poole peal on näha, et on vaeva nähtud ning toodud ka silmailu, samas on näha, et akna suuruse muutmise peale mõeldud ei ole või ei jäänud aega sellega tegeleda.<br />
<br />
Kood on korrektne ning paigutatud loogiliselt ning saab jälgida kust kuhu mingid meetodid viivad ning seda lugedes tekib kiiresti ettekujutus, kuidas programm töötab.<br />
<br />
Alguses esimese käivitamise juures võiks kogu selle loogika, mis käib andmebaasis ja teeb muid asju, viia eraldi Service-sse ja xaml.cs failist välja (Ntx: FirstRunService), sinna alla võiks viia ka kõik meetodid mis esimese käivitamisega tegelevad ja on muidu ElekterService-s, st hiljem kui on soov toode produktsiooni viia siis selle, mis on ilmselgelt testimiseks ja debugimiseks mõeldud, saab lihtsalt eemaldada.<br />
<br />
Teatud kohtades ei ole piisavalt kontrollitud, kas koodi jooksutamiseks on kõik vajalik ikka olemas:<br />
N: Kui korteril ei ole võlgnevusi ja vajutada nuppu "Märgi arved makstuks", siis saab NullReferenceExceptioni.<br />
Natuke rohkem feedbacki võiks ka olla -> korteri lisamisel tekib loll tunne, et kas korter sai ikka lisatud või mitte?<br />
Kui kõiki välju korteri lisamisel ei täida, siis öeldakse, et täida kõik väljad, aga vanad väljad tühjendatakse, natukene tüütu.<br />
Selliseid väikeseid vigu leiab palju.<br />
<br />
Aga ärge laske ennast vigadest häirida, vaatamata tähelepanekutele on toode koos dokumentatsiooniga antud aine projekti raames meie arvates enam kui piisav. Arvestades selle mahtu kindlasti vähemalt 100% vääriline.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117572Talk:Elekter2017-02-01T20:02:52Z<p>Ptiganik: /* Retsensioon meeskonna Elekter lõpptootele - tehtud IseArve poolt */</p>
<hr />
<div>= Analüüsi retsensioon =<br />
==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
==C#==<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
= Lõpptoote retsensioon =<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele - tehtud IseArve poolt ==<br />
<br />
Meeskond Elekter on korralikult vaeva näinud ning teinud endale selgeks, missugust lõpp-produkti nad soovivad.<br />
Analüüs oli põhjalik ning selgelt on näha, et jaotatud rollid on toiminud ilusti.<br />
<br />
Põhjalik dokumentatsioon (!) ning blogipostitused olid huvitavaks kaaslaseks retsensiooni koostamisel, andis aimu kuidas meeskond on kogu produkti arendanud ning missuguseid väljakutseid nähti toote arendamise käigus.<br />
Elektri programmi sain tööle ilma igasuguste viperusteta.<br />
<br />
UI poole peal on näha, et on vaeva nähtud ning toodud ka silmailu, samas on näha, et akna suuruse muutmise peale mõeldud ei ole või ei jäänud aega sellega tegeleda.<br />
<br />
Kood on korrektne ning paigutatud loogiliselt ning saab jälgida kust kuhu mingid meetodid viivad ning seda lugedes tekib kiiresti ettekujutus, kuidas programm töötab.<br />
<br />
Alguses esimese käivitamise juures võiks kogu selle loogika, mis käib andmebaasis ja teeb muid asju, viia eraldi Service-sse ja xaml.cs failist välja (Ntx: FirstRunService), sinna alla võiks viia ka kõik meetodid mis esimese käivitamisega tegelevad ja on muidu ElekterService-s, st hiljem kui on soov toode produktsiooni viia siis selle, mis on ilmselgelt testimiseks ja debugimiseks mõeldud, saab lihtsalt eemaldada.<br />
<br />
Teatud kohtades ei ole piisavalt kontrollitud, kas koodi jooksutamiseks on kõik vajalik ikka olemas:<br />
N: Kui korteril ei ole võlgnevusi ja vajutada nuppu "Märgi arved makstuks", siis saab NullReferenceExceptioni.<br />
Natuke rohkem feedbacki võiks ka olla -> korteri lisamisel tekib loll tunne, et kas korter sai ikka lisatud või mitte?<br />
Kui kõiki välju korteri lisamisel ei täida, siis öeldakse, et täida kõik väljad, aga vanad väljad tühjendatakse, natukene tüütu.<br />
Selliseid väikeseid vigu leiab palju.<br />
<br />
Aga ärge laske ennast vigadest häirida, vaatamata tähelepanekutele on toode koos dokumentatsiooniga antud aine projekti raames meie arvates enam kui piisav. Arvestades selle mahtu kindlasti vähemalt 100% vääriline.</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117383Talk:Elekter2017-01-30T08:10:18Z<p>Ptiganik: /* Retsensioon meeskonna Elekter lõpptootele */</p>
<hr />
<div>= Analüüsi retsensioon =<br />
==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
==C#==<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
= Lõpptoote retsensioon =<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele ==<br />
<br />
broneering tiimi [[Isearve]] poolt, töös</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016)&diff=117382Juhend: Kodutöö aines "Programmeerimine CSharp keeles" (2016)2017-01-30T08:09:50Z<p>Ptiganik: /* Meeskond: Elekter */</p>
<hr />
<div>=Kodutöö aines "Programmeerimine C# keeles"=<br />
<br />
==Eesmärk==<br />
Saada praktiline arenduskogemus .NET keskkonnas ning arendada meeskonnatöö kogemust ja analüüsivõimet. Kasutada arendusprotsessis koodihoidlat.<br />
<br />
==Reeglid==<br />
Ühte projektimeeskonda kuulub 3-5 tudengit(Soovituslik meeskonna suurus on 3-4). Ühel teemal võib teostada projekti üks või mitu meeskonda.Töö käiku kajastatakse https://wiki.itcollege.ee keskkonnas või soovi korral võib seda teha ka ajaveebis(blogis).<br />
Ajaveebi pidamise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg ja dokumentatsioon) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest. Ajaveebi loob ja ajaveebi haldab projektimeeskond vabalt valitud (avalikus) keskkonnas. <br />
<br />
'''Projekti loomine ja arendamine '''<br />
Projekt lisatakse versioonihaldusesse, kasutades selleks [Team Foundation Service'it http://tfs.visualstudio.com/] ning õppejõule antakse ligipääs. Õppejõu live id: maitposka ät hotmail.com . Projekt peab olema alates algfaasist lisatud TFSi ning kogu tööprotsess toimub versioonihaldust kasutades<br />
<br />
'''Tööde esitamine''' (prototüüb ja lõpptoode)<br />
Töö esitamisel pakitakse see kokku ning lisatakse wiki leheküljele link lähtekoodile. Kui töö lähtekoodi ei soovita mingil põhjusel avalikustata, tuleb õppejõuga selle jaoks sõlmida eraldi kokkulepe. Lähtekood on vajalik, et tööd oleks võimalik hinnata nii õppejõul kui kaastudengitel selle kohta retsensiooni kirjutada.<br />
<br />
'''Team Foundation Service kasutamine''' (tänasel päeval '' Visual Studio online'')<br />
[http://www.visualstudio.com/get-started/sign-up-for-visual-studio-online Step-by-Step juhend]<br />
<br />
NB! Versioonihalduse kohta jagab õppejõud materjale.<br />
<br />
==Tähtaegadest kinnipidamine==<br />
Projekt jaguneb alamosadeks, millele on määratud tähtajad. Tähtaegade ületamisel võimalike punkte ei kaotata. Kui töö aga on esitatud tähtajaks, siis on võimalik selle eest teenida boonuspunkte (enamasti 0-10% võimalikust maksimumist boonust). Enne tähtaega esitatud töö ei tähenda automaatselt maksimumpunkte, kui see ei ole sooritatud korralikult.<br />
<br />
NB! Juhul kui analüüsi tähtajast on möödunud nädal, määrab õppejõud meeskonnale ise vabalt valitud ülesande, mis on võetud näidis teemade alt. Peale seda ei ole võimalik teemat enam muuta.<br />
<br />
==Hindamine==<br />
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.<br />
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. Tehnilisi ja vormistuslike puudujääke on võimalik korvata lisavõimaluste realiseerimisega.Üldjuhul tuleb loodud lahendust ka praktikumides või loengutes teistele tudengitele tutvustada (ca 10 min).<br />
Nagu eelpool mainitud, koosneb projekt erinevatest osadest. Punktide arvu määramisel arvestatakse ka tähtajast kinni pidamist, mille toimimisloogika on kirjeldatud eespool.<br />
<br />
===Meeskonna kokkupanek ja idee===<br />
'''27.10.2016''' (2p) (Kuna vahepeal oli loengute toimumise kord paigast ära ning TFSi loomisega on segadust olnud, siis nihutan seda tähtaega)<br />
<br />
Tekitatakse meeskonna wiki lehekülg. Meeskonnal peab olema nimi ning see koosneb kolmest kuni viiest liikmest. Määratakse projektijuht. Juhul kui hakatakse blogi pidama kuskil mujal keskkonnas ilmub selle kohta link. Lühidalt peaks kirjeldama idee olemust nii, et selle üldine suund oleks arusaadav. Samuti peab olema märgitud tehnoloogia, milles hakatakse rakendust looma. Meeskond on loonud TFSi konto ning on saatnud õppejõule kutse.<br />
<br />
===Analüüs===<br />
'''01.11.2016''' (4p)<br />
Analüütilise osa eesmärgiks on arendada tudengite analüüsioskust, mida on vaja ka päris tarkvaraarenduse protsessi juures.'''NB! Miinimum sõnade arv 700''' Selle osa käigus peab valmima loodava rakenduse analüüs, mis sisaldab muu hulgas ka:<br />
*Analüüs rakendusele. (Mida see endas sisaldab? Mis on selle eesmärk? Mida tavakasutaja sellega teha saaks? Milliste osade realiseerimine võib osutuda problemaatiliseks?) Kui on tööjaotus paigas, siis tuua ka see välja.<br />
*Tuua välja nimekiri funktsionaalsusest, mida plaanitakse kindlasti teostada(''Must have'')<br />
*Nimekiri funktsionaalsustest, mis võiks olla, aga mida ei pruugita ajapuuduse tõttu realiseerida.(''Nice to have'')<br />
<br />
'''Retsensioon(päevaõpe)''' 08.11.2016 (3p) <br/><br />
'''Retsensioon(kaugõpe)''' 13.11.2016 (3p)<br />
<br />
===Prototüüp + esitlemine===<br />
'''Päevaõpe:28.11.2016 / Kaugõpe: 18.12.2016 '''(10p)<br />
<br />
Valmib projekti esmane realisatsioon. Laias laastus on peafunktsionaalsused realiseeritud(Nimekiri funktsionaalsusest, mida plaanitakse teostada). Rakenduses on loodud erinevad vaated, mis võimaldavad ülevaate rakendusest saada.<br />
<br />
28. novembril esitatakse prototüüp, mida kaitstakse sellele järgneval nädalal.Esitamine tähendab seda, et meeskond lisab oma Wiki lehele prototüübi lingi, kust see on võimalik alla laadida. Vajadusel antakse kaasa paigaldusjuhend. NB! Juhul kui prototüüpi ei kaitsta ja ei esitata, siis ei ole võimalik selle osa eest punkte saada.<br />
Kaugõppe puhul ei ole vaja koha peal eraldi oma prototüüpi kaitsta<br />
<br />
===Prototüübi kaitsmisele registreerumine===<br />
'''EDIT:Uuendus 30.11: Võimalik on prototüüpi kaitsta ka neljapäeval järgnevatel aegadel'''<br />
<br />
Neljapäev:<br />
*08:00 - <br />
*08:10 -<br />
*08:20 - Dogify (Roland Soosaar, Krista Norak, Mihkel Roots)<br />
*08:30 - Kassarakendus (Mikk Sarapuu, Piret Pomerants, Meelis Sääsk)<br />
*08:40 - Bomory (Cathy Toomast, Hando Laasmägi, Tarvo Tammejuur)<br />
*08:50 - Bank (Teet Adamson, Aleksei Kopõlov, Tarvo Sbitnev)<br />
*09:00 - ParkWell (Taavi Vesinurm, Raido Vell, Madis Roosioks)<br />
*09:10 - <br />
*09:20 - Hidden Mustard (Andreas Kirotar, Anneli Asser, Tõnn Vaher)<br />
*09:30 - D♭ (Martin Arusalu, Martin Nõukas, Roomet Saadi, Semjon Greef)<br />
*09:40 - NullPointerException (Kertu Nurmberg, Tõnis Piirits)<br />
.. 20 min puhvrit ja siit edasi soovi korral, kui keegi soovib, saab ka veel kaitsta<br />
<br />
*10:00 - Pie Piper (Uku-Mart Uprus, Ardo Erik, Olari Pipenberg, Villem Markus Loigom)<br />
*10:10 - PirateNetflix (Janno Oolo, Joosep Voolmaa, Arti Zirk, Mihkel Vajak)<br />
*10:20 -<br />
*10:30 -<br />
*10:40 -<br />
*10:50 -<br />
*11:00 - <br />
*11:10 -<br />
*11:20 -<br />
<br />
<br />
Kaitsmine toimub 2. detsembril(reede) alates kell 09:00. Iga meeskonna jaoks on arvestatud 10 minutit. Palun lisada kellaaeg ja meeskonna nimetus. Kõik meeskonna liikmed ei pea kohal olema, kuid tore oleks, kui kõigil oleks seda aega teha. Kaitsmised toimuvad ruumis 316.<br />
<br />
'''EDIT:Uuendus 30.11. 2.detsembri kaitsmised hakkavad alates 11:10'''<br />
<br />
<br />
<br />
*11:10 - Elibrium (Märt Häkkinen, Karl Frank)<br />
*11:20 - Gurmaanid (Koit Kõrvel, Marko Kask, Ott Sõerumäe, Brita Pentšuk)<br />
*11:30 - Brainery (Madis Lugus, Berit Põldoja, Elina Kuldkepp, Taavi Teearu)<br />
*11:40 - ForeverNotes (Margus Muru, Martin Nigul, Joosep Koort)<br />
*11:50 - Korterid Kõrgel Künkal (Edward Mardo)<br />
*12:00 - ATDV<br />
*12:10 - B12 (Martin Paakspuu, Marvin Mardiat, Kerdo Kullamäe)<br />
*12:20 - <br />
... siia võib vajaduse korral veel aegu lisada.<br />
NB! Alustame aegade lisamisest alates kell 09:10 st :)<br />
<br />
===Lõpptoode===<br />
'''Päevaõpe:08.01.2017 / Kaugõpe: 18.01.2017'''(30p)<br />
Selleks faasiks peab projekt maksimumpuntkide saavutamiseks olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus.<br />
<br />
'''Retsensioon''' Päevaõpe:15.01.2017 /Kaugõpe 25.01.2017 (4p)<br />
<br />
===Esitlus/Kaitsmine=== <br />
<br />
'''Kokkulepitud ajal enne eksamit''' ''(3p) ''<br />
Esitlusel kaitstakse projekti. Tutvustatakse tehnoloogiat, mida kasutati rakenduse realiseerimiseks. Lühidalt räägitakse tööjaotusest ning probleemidest, mis tekkisid projekti realiseerimisel. Näidatakse lähtekoodi ja demonstreeritakse oma rakendust teistele tudengitele, kes võivad selle kohta küsimusi küsida. Kestvus ~20min.<br />
<br />
====Kaitsmise ajad====<br />
<br />
<br />
Ideaalne esitlus, sisaldab endas ka powerpointi, kus on<br />
*väljatoodud meeskonna nimi ja liikmed<br />
*idee<br />
*realiseerimine<br />
*mis oli keerukas?<br />
*mida uut õpiti?<br />
*mõnede keerulisemate probleemide lahendamine<br />
*meeskonnaliikmete panus<br />
<br />
<br />
'''Päevaõpe'''<br />
25.01.2016<br />
<br />
*15:30 - Bank<br />
*15:45 - Bomory<br />
*16:00 - B12<br />
*16:15 - Elibrium<br />
*16:30 - Librarians<br />
*16.45 - ForeverNotes<br />
*17.00 - ATDV<br />
*17:15 - Gurmaanid<br />
*17.30 - Hidden Mustard<br />
*17:45 - Pie Piper<br />
*18:00 - Brainery<br />
*18:15 - Kassarakendus<br />
*18.30 - Pirate Netflix<br />
*18.45 - CozinHero<br />
*19.00 - D♭<br />
*19.15 - Library<br />
..jne.. Lisada ise juurde 15 min intervallidega<br />
<br />
<br />
'''Kaugõpe'''<br />
27.01.2016<br />
<br />
*12:00 - Autoparandaja<br />
*12:15 - Paabel<br />
*12:30 - Battle2048<br />
*12:45 - Rahaplaneerija<br />
*13:00 - Elekter<br />
*13:15 - Isearve<br />
*13:30 - Jarvis<br />
*13:45 - Vitamin C#<br />
*14:00 - Kingalaenutus<br />
*14:15 - OnTime<br />
*14:30 - FoodCab<br />
*14:45 - MoneyG<br />
*15:00 - Laener<br />
*15:15 - MeieTalu<br />
*15:30 - Dogify<br />
*15:45 - Just Another Library<br />
..jne.. Lisada ise juurde 15 min intervallidega<br />
<br />
=Teemad 2016 sügis=<br />
Kodutööna tuleb luua:<br />
<br />
==Nõuded rakendusele==<br />
Loodav rakendus peab:<br />
* Peab kasutama andmebaasi (erikokkuleppel ka XML formaadis andmeallikat)<br />
**Andmebaasis peab olema vähemalt 6 andmebaasi tabelit<br />
* Peab võimaldama tegevuste kohta registri pidamist (logi)<br />
**Rakenduses tehtavad tegevused salvestatakse<br />
* Kasutama kasutajaliidesena ühte järgmistest: Windows Presentation Foundation, Windows Phone , Windows Store App või ASP.Net<br />
* Kood on kommenteeritud ning rakendus on varustatud dokumentatsiooniga<br />
* Maksimumpunktide jaoks kasutatakse vastavalt valitud tehnoloogiale soovitatud arendusmustreid<br />
* Kood on kirjutatud C# programmeerimiskeeles<br />
**Kuna aine nimi on "Programmeerimine C# keeles" ei tohi esitada rakendust, mis on loodud Javas, PHPs vms keeles<br />
* Rakendus on jaotatud kihtidesse<br />
'''Loodav rakendus peab olema loodud objektorienteeritud lähenemist kasutades!''' Klassid, klassid, klassid<br />
*Kood on kommenteeritud<br />
<br />
Lisapunkte annab:<br />
* Silmailu<br />
* Kood on kirjutatud häid praktikaid järgides ja on veatu(testimine, testimine, testimine)<br />
* Orginaalsed ideed ja hea äriidee<br />
<br />
==Kodune raamatukogu==<br />
Kodudes on tihti erinevaid raamatuid (filme, muud nänni) ja sõbrad tahavad neid vahel laenutada.<br />
Loo rakendus, mis<br />
* Võimaldaks sisestada kodused raamatud<br />
* Võimaldaks luua laenutajate profiile<br />
* Raamatuid välja laenutada (tähtajaliselt)<br />
* Laseks koostada erinevaid aruandeid (kodusolevad raamatud, väljalaenutatud raamatud, tähtaja ületanud laenutused jne)<br />
<br />
<br />
Lisavõimalused<br />
* Kui laenutaja profiilis on e-mail, siis saada automaatselt e-kiri „kallis sõber see ja see, Sinu käes on minu raamat, kas tood tagasi ka?”<br />
* Kuva hoiatused, kui laenutaja laenutuste ajalugu on vilets või kui mõni raamat on tagastamata.<br />
* Lase lisada raamatutele pilt<br />
* Loo lihtne veebiliides (et sõbrad saaksid veebist vaadata, mis raamatud kasutajal kodus veel alles on)<br />
Või<br />
<br />
==CRM==<br />
Oma klientidest peab olema ülevaade.<br />
Loo rakendus, mis võimaldab:<br />
* Kliente ning nende kontaktisikuid sisestada, muuta ning kustutada<br />
* Võimalda sisestada kliendikontakte<br />
* Koostada hinnapakkumisi klientidele, kusjuures hinnapakkumine lisatakse süsteemi ka kui kliendikontakt ning saadetakse samast süsteemist kliendile.<br />
* Kliendi andmete vaatamisel kuvatakse ka kliendikontaktid<br />
<br />
<br />
Lisavõimalused<br />
* Loo võimalus, kus kontaktisiku sünnipäeva saabumisel saadetakse automaatselt inimesele meil õnnesoovidega<br />
* Õnnitlusmeilide template’sid võiks olla mitu<br />
* Loo võimalus kliendi huvide (huvialade) kajastamiseks süsteemis<br />
<br />
==Mäng(Unit)==<br />
Loodav mäng peab sisaldama:<br />
* Erinevaid tasemeid<br />
* Punktiarvestust<br />
* XBox puldi tuge<br />
* Klaviatuurilt juhtimise tuge<br />
<br />
'''Loodav mäng peab olema loodud objektorienteeritud lähenemist kasutades!''' Klassid, klassid, klassid<br />
<br />
Lisapunkte annab:<br />
* Silmailu<br />
* Kood on kirjutatud häid praktikaid järgides ja on veatu(testimine, testimine, testimine)<br />
* Orginaalsed ideed ja hea ''story''<br />
<br />
=Meeskonnad 2016=<br />
==Päevaõpe==<br />
<br />
===Meeskond: Kuri Kohvikupidaja===<br />
Liikmed:<br />
* Egert Aia<br />
Meeskonna koduleht: [[Kuri_Kohvikupidaja]]<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonnale [[CozinHero]] asub [https://wiki.itcollege.ee/index.php/Talk:CozinHero siin]<br />
Retsensioon meeskonnale [[Pie_Piper]] asub [https://wiki.itcollege.ee/index.php/Talk:Pie_Piper siin]<br />
<br />
<br />
'''Lõpptoode'''<br />
Kättesaadav siit: https://drive.google.com/open?id=0BxPYMOn_Lvs6U3g2Rm53TTNZWmc<br />
<br />
Sisse saab logida jalutsis vajutades login<br />
<br />
admini log: 1@eesti.ee<br />
<br />
admini pw: a<br />
<br />
<br />
PS! Checkboxe valides vali esimest checkboxi nii et teed selle aktiivseks ja siis võtad linnukese jälle ära, pärast seda kõik checkboxid töötavad ilusti! =)<br />
<br />
===Meeskond: Pirate Netflix===<br />
Liikmed:<br />
* Arti Zirk<br />
* Mihkel Vajak<br />
* Janno Oolo<br />
* Joosep Voolmaa<br />
<br />
Meeskonna wikileht: [[Pirate_Netflix]]<br />
<br />
'''TFS link''' https://flowland.visualstudio.com/Pirate%20Netflix%20Demo<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskond Db kohta: https://wiki.itcollege.ee/index.php/Talk:Meeskond:_D%E2%99%AD<br />
<br />
'''Prototüüp'''<br />
Link prototüübile [https://drive.google.com/file/d/0B8c6TAUrgOx_MFQzOEFFZ1BQNzg/view?usp=sharing siin]<br />
<br />
'''Lõpptoode'''<br />
Link Lõpptootele asun [https://dl.dropboxusercontent.com/u/61894608/Pirate%20Netflix%20Final%20Product.zip siin]<br />
<br />
===Meeskond: D♭===<br />
Liikmed:<br />
* Semjon Greef<br />
* Martin Arusalu<br />
* Martin Nõukas<br />
* Roomet Saadi<br />
Meeskonna koduleht: [[Meeskond: D♭]]<br />
<br />
'''Retsensioonid'''<br />
Analüüsi retsensioon [https://wiki.itcollege.ee/index.php/Talk:Gurmaanid meeskond Gurmaanid] kohta.<br />
<br />
'''Prototüüp'''<br />
Link prototüübile asub [http://enos.itcollege.ee/~marusalu/csharp/MemoSolution.zip siin]<br />
<br />
'''Lõpptoode'''<br />
Link lõpptootele asub [http://enos.itcollege.ee/~marusalu/csharp/lopptoode/MemoSolution.zip siin]<br />
<br />
===Meeskond: ParkWell===<br />
Liikmed:<br />
* Taavi Vesinurm<br />
* Raido Vell<br />
* Madis Roosioks<br />
Meeskonna koduleht: [[ParkWell]]<br />
<br />
Projekti TFS: [https://park-well.visualstudio.com/ParkWell SIIN]<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsi retsensioon [https://wiki.itcollege.ee/index.php/Talk:Elibrium meeskond Elibrium] kohta.<br />
<br />
Lõpptoote retsensioon [https://wiki.itcollege.ee/index.php/Talk:Elibrium meeskond Elibrium] kohta.<br />
<br />
'''Prototüüp'''<br />
<br />
Link prototüübile asub [http://enos.itcollege.ee/~mroosiok/CSharpProtot%c3%bc%c3%bcpParkWell/ siin]<br />
<br />
'''Lõpptoode''' [http://enos.itcollege.ee/~mroosiok/CSharpLõpptoodeParkWell/ siin]<br />
<br />
===Meeskond: Bomory===<br />
Liikmed:<br />
* Hando Laasmägi<br />
* Tarvo Tammejuur<br />
* Cathy Toomast<br />
Meeskonna koduleht: [[Bomory]]<br />
<br />
'''TFS'''<br />
https://eikbomory.visualstudio.com/Bomory<br />
<br />
'''Analüüs'''<br />
Õppejõule saadetud 01.11.2016.<br />
https://wiki.itcollege.ee/index.php/Bomory#Anal.C3.BC.C3.BCs<br />
<br />
'''Retsensioonid'''<br />
Bomoryle teeb Vitamin C tiim<br />
<br />
Meeskond Bomory retsenseeris [[Brainery]] analüüsi.<br />
Retsensioon asub [https://wiki.itcollege.ee/index.php/Talk:Brainery siin]<br />
<br />
Lisaks retsenseeriti projekti [[Kassarakendus]] lõpptoodet.<br />
Retsensioon asub [https://wiki.itcollege.ee/index.php/Talk:Kassarakendus siin]<br />
<br />
'''Prototüüp'''<br />
Prototüüp asub siin: [https://drive.google.com/open?id=0B2jSU1zbUNk8ODV4dDV2ZDcwX0E siin]<br />
<br />
Andmebaasi nimi peab olema BomoryDB. Andmebaasi loomisel võib kasutada lingi all olevat creates.sql <br />
<br />
faili või mudeli failis teha parem klõps ja Generate Database from model ja võtta sealt sql kood. <br />
<br />
Et oleks mugavam kaitsta, lisatakse vaikimisi kasutaja Peeter(parool peeter) alla näidisfilme ja raamatuid, <br />
<br />
kuid võib teha ka enda kasutaja. Igal rakenduse käivitamisel eelnevad andmed eemaldatakse ja lisatakse<br />
<br />
default andmed.<br />
<br />
'''Lõpptoode'''<br />
Lõpptoode asub [https://drive.google.com/drive/folders/0B2jSU1zbUNk8bklmMS01UzRjX2c?usp=sharing SIIN]<br />
(Saadetud ka õppejõu meilile õigeaegselt)<br />
<br />
Kaitsmise versioon(parandatud üks viimasel hetkel tekkinud bug)[http://enos.itcollege.ee/~hlaasmag/CSharp/Bomory.zip SIIN]<br />
<br />
===Meeskond: Kassarakendus===<br />
Liikmed:<br />
* Mikk Sarapuu<br />
* Meelis Sääsk<br />
* Piret Pomerants<br />
Meeskonna koduleht: [[Kassarakendus]]<br />
<br />
'''TFS''' https://kassarakendus2016.visualstudio.com/Kassarakendus2016<br />
<br />
'''Retsensioonid'''<br />
*Analüüsi retsensioon meeskonnale '''B12''' asub [https://wiki.itcollege.ee/index.php/Talk:B12 siin]<br />
*Lõpptoote retsensioon meeskonnale '''Bomory''' asub [https://wiki.itcollege.ee/index.php/Talk:Bomory siin]<br />
<br />
'''Prototüüp'''<br />
*Link prototüübile asub [https://drive.google.com/open?id=0B7mHgwBiWPuNZ016RlhMck8zbW8 siin]<br />
<br />
'''Lõpptoode'''<br />
*Link lõpptootele asub [https://drive.google.com/open?id=0B7mHgwBiWPuNWlZsWDdzSDNqZWs siin]<br />
<br />
===Meeskond: Pie Piper===<br />
Liikmed:<br />
* Villem Markus Loigom<br />
* Olari Pipenberg<br />
* Uku-Mart Uprus<br />
* Ardo Erik<br />
Meeskonna koduleht: [[Pie_Piper]]<br />
<br />
'''Prototüüp'''<br />
*Link meie C_diesi prototüübile asub [http://enos.itcollege.ee/~opipenbe/C_dies/ siin]<br />
<br />
TFS: https://piepiper.visualstudio.com/MyFirstProject/Pie%20Piper/_versionControl<br />
<br />
'''Retsensioonid'''<br />
* Analüüsi ja lõpptoote retsensioon meeskonnale [[Hidden_Mustard]] asub [https://wiki.itcollege.ee/index.php/Talk:Hidden_Mustard#Anal.C3.BC.C3.BCsi_retsensioon siin]<br />
<br />
'''Lõpptoode'''<br />
*Link meie C_diesi lõpptootele asub [http://enos.itcollege.ee/~opipenbe/C_dies/final/ siin]<br />
<br />
===Meeskond: Hidden Mustard===<br />
Liikmed:<br />
* Andreas Kirotar<br />
* Tõnn Vaher<br />
* Anneli Asser<br />
Meeskonna koduleht: [[Hidden_Mustard]]<br />
<br />
Meeskonna TFS https://hiddenmustard.visualstudio.com/Store/Store%20Team/_versionControl/changesets<br />
<br />
'''Retsensioonid'''<br />
*Protottüübi Retsensioon meeskonnale [[Pie_Piper]] asub [https://wiki.itcollege.ee/index.php/Talk:Pie_Piper siin]<br />
<br />
*Lõpptoote retsensioon meeskonnanle [[B12]] asub [https://wiki.itcollege.ee/index.php/Talk:B12 siin]<br />
<br />
'''Prototüüp'''<br />
http://enos.itcollege.ee/~akirotar/wpfstore_proto.zip<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~akirotar/WebStore_parandus.zip<br />
<br />
===Meeskond: B12===<br />
Liikmed:<br />
* Kerdo Kullamäe<br />
* Marvin Mardiat<br />
* Martin Paakspuu<br />
Meeskonna koduleht: [[B12]]<br />
<br />
Projekti TFS: https://b12tiim.visualstudio.com/B12/<br />
<br />
'''Retsensioonid'''<br />
*Retsensioon meeskonnale [[Sõnajalg]] asub [https://wiki.itcollege.ee/index.php/Talk:S%C3%B5najalg siin]<br />
<br />
'''Prototüüp'''<br />
Link on [http://enos.itcollege.ee/~mpaakspu/cSharpProjekt/ siin]<br />
<br />
'''Lõpptoode'''<br />
Link on [http://enos.itcollege.ee/~mpaakspu/cSharpProjectValmis/ siin]<br />
<br />
===Meeskond: Elibrium ===<br />
Liikmed:<br />
* Märt Häkkinen<br />
* Karl Frank<br />
Meeskonna koduleht: [[Elibrium]]<br />
<br />
Prototüüp : http://enos.itcollege.ee/~mhakkine/CSharp/Elibrium.zip <br><br />
Prototüübi andmebaasi loomise juhend : http://enos.itcollege.ee/~mhakkine/CSharp/Juhend.txt<br />
<br />
Projekti TFS: https://m-hakkinen.visualstudio.com/Elibrium<br />
<br />
'''Retsensioonid'''<br />
*Analüüsi retsensioon meeskonnale '''Gurmaanid''' asub [https://wiki.itcollege.ee/index.php/Talk:Meeskond:_Gurmaanid siin]<br><br />
*Lõpptoote retsensioon meeskonnale '''D♭''' asub [https://wiki.itcollege.ee/index.php/Talk:Meeskond:_D%E2%99%AD'le siin]<br><br />
<br />
'''Lõpptoode''':<br />
http://enos.itcollege.ee/~mhakkine/CSharp/Elibrium.rar <br><br />
<br><br />
Link lõpptoote kasutusjuhendile asub [http://enos.itcollege.ee/~kfrank/Kasutusjuhend%20meeskond%20Elibrium%20l%C3%B5pptootele%20(1).pdf siin]<br />
<br />
===Meeskond: CozinHero ===<br />
Liikmed:<br />
* Taavi Metsvahi<br />
* Kai Kallastu<br />
Meeskonna koduleht: [[CozinHero]]<br />
<br />
Projekti TFS: https://metsvahi.visualstudio.com/CozinHero<br />
<br />
'''Retsensioonid'''<br />
<br />
Retsensioon meeskonnale [[CozinHero]] asub [https://wiki.itcollege.ee/index.php/Talk:CozinHero siin]<br />
<br />
'''Prototüüp ja lõpptoode''' [https://drive.google.com/drive/folders/0BzgoTRmLgODvUHVwRU9FeDRybDQ?usp=sharing siin] <br />
Work in progress<br />
<br />
===Meeskond: Bank ===<br />
Liikmed:<br />
* Aleksei Kopõlov<br />
* Teet Adamson<br />
* Sander Perens<br />
* Tarvo Sbitnev<br />
Meeskonna koduleht: [https://wiki.itcollege.ee/index.php/Bank Bank]<br />
<br />
Projekti TFS: [https://perens.visualstudio.com/Projekt%20Bank/tiimi%20nimi Meeskond Bank]<br />
<br />
'''Retsensioonid'''<br />
Retsensiooni teinud meeskond Librarians: [https://wiki.itcollege.ee/index.php/Talk:Bank Retsensioon]<br />
<br />
'''Prototüüp'''<br />
Projekti esialgne prototüüp: [http://enos.itcollege.ee/~tadamson/Bank_projekt/Bank.rar Prototüüp]<br />
<br />
'''Lõpptoode'''<br />
Link Lõpptootele: [https://drive.google.com/open?id=0BzETW9aXbA8aaW0talZPbHljRWM SIIN]<br />
<br />
===Meeskond: ATDV===<br />
Liikmed:<br />
* Aldin Talve - arendaja<br />
* Delia Viirmaa - projektijuht<br />
* Mart-Erki Nõumees - arendaja<br />
<br />
Meeskonna koduleht: [[ATDV]]<br />
<br />
ADTV TFS: [https://dviirmaa.visualstudio.com/ATDV-raamatukogu/_dashboards/ ADTV SIIN]<br />
<br />
<br />
'''Retsensioonid'''<br />
<br />
Retsensioon meeskonna "Korter Kõrgel Künkal" toote analüüsile asub [https://wiki.itcollege.ee/index.php/Talk:Korterid_K%C3%B5rgel_K%C3%BCnkal siin]<br />
<br />
Retsensioon meeskonna "Librarians" lõppetootele asub<br />
[https://wiki.itcollege.ee/index.php/Talk:Librarians#L.C3.B5pptoote_retsensioon siin]<br />
<br />
'''Lõpptoode'''<br />
Lõpptoode : [http://enos.itcollege.ee/~mnoumees/ ATDV-raamatukogu.7z]<br />
<br />
===Meeskond: Sõnajalg===<br />
'''Liikmed''':<br />
* Argo Hansen<br />
* Ragnar Rästas<br />
'''Meeskonna koduleht:''' [[Sõnajalg]]<br />
<br />
'''Projekti TFS:''' [https://sonajalg-itk.visualstudio.com/ Sõnajalg-ITK]<br />
<br />
'''Retsensioonid:''''<br><br />
[https://wiki.itcollege.ee/index.php/S%C3%B5najalg#Retsensioon_meeskonna_B12_projektile Meeskonna "B12" retsensioon]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond:Gurmaanid===<br />
Liikmed:<br />
* Koit Kõrvel<br />
* Marko Kask<br />
* Brita Pentšuk<br />
* Ott Sõerumäe<br />
<br />
Meeskonna koduleht: [[Gurmaanid]]<br />
<br />
'''Retsensioonid''' <br><br />
Analüüsi retsensioon ATDV kohta [https://wiki.itcollege.ee/index.php/Talk:ATDV ATDV]<br />
<br />
'''Praegune Prototüüp!'''<br><br />
<br />
On saadaval siin lehe peal!<br />
<br><br />
http://enos.itcollege.ee/~kkorvel/CSharpProtot%C3%BC%C3%BCp2016Gurmaanid/<br />
<br />
'''Gurmaanide TFS versioonihaldus!'''<br><br />
https://gurmaanid.visualstudio.com/<br />
<br>'''Lõpptoode'''<br><br />
http://enos.itcollege.ee/~kkorvel/CSharpProject.rar<br />
<br />
===Meeskond: Korterid Kõrgel Künkal===<br />
Liikmed:<br />
* Edward Mardo<br />
Meeskonna koduleht: [[Korterid_Kõrgel_Künkal]]<br />
<br />
'''Retsensioonid'''<br />
Retsensiooni analüüsile teeb meeskond "ATDV"<br />
<br />
TODO<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Librarians===<br />
Liikmed:<br />
* Kerttu Liis Lootus<br />
* Lisandra Noor<br />
* Lisette Noor<br />
Meeskonna koduleht: [[Librarians]]<br />
<br />
Projekti TFS: https://klootus.visualstudio.com/Librarians<br />
<br />
Prototüüp: http://enos.itcollege.ee/~lnoor/CSharp/<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonna Bank poolt: https://wiki.itcollege.ee/index.php/Talk:Librarians<br />
<br />
Retsentsioon meeskonnale Bank [https://wiki.itcollege.ee/index.php/Talk:Bank Retsensioon]<br />
<br />
'''Lõpptoode'''<br />
<br />
Dokumentatsioon asub zip faili sees.<br />
<br />
http://enos.itcollege.ee/~linoor/CSHARP/<br />
<br />
===Meeskond: Brainery===<br />
Liikmed:<br />
* Madis Lugus<br />
* Elina Kuldkepp<br />
* Berit Põldoja<br />
* Taavi Teearu<br />
<br />
'''Koduleht:''' [[Brainery]]<br />
<br />
'''Retsensioonid:'''<br />
* [[Talk:Pirate_Netflix]]<br />
<br />
* [[Talk:Brainery]]<br />
<br />
'''TFS'''<br />
[https://tteearu.visualstudio.com/Brainery https://tteearu.visualstudio.com/Brainery]<br />
<br />
'''Prototüüp:'''<br />
[http://enos.itcollege.ee/~tteearu/c/BrainerySol.zip http://enos.itcollege.ee/~tteearu/c/BrainerySol.zip]<br />
<br />
'''Lõpptoode:'''<br />
[http://enos.itcollege.ee/~tteearu/c/Brainery.zip http://enos.itcollege.ee/~tteearu/c/Brainery.zip]<br />
<br />
===Meeskond: Rent A Book===<br />
Liikmed:<br />
* Aapo Kersalu<br />
* Kristjan Kotto<br />
* Paul John Niidas<br />
<br />
'''Meeskonna koduleht'''<br />
<br><br />
[[Rent A Book]]<br />
<br />
'''Retsensioonid'''<br />
<br><br />
[https://wiki.itcollege.ee/index.php/Rent_A_Book#Retsensioon Meeskonna "Forevernotes" retsensioon]<br />
<br />
'''Lõpptoode'''<br />
<br><br />
TODO<br />
<br />
'''TFS'''<br />
<br><br />
[https://rentabookproject.visualstudio.com/Rent%20A%20Book Rent A Book]<br />
<br />
===Meeskond: BMS===<br />
Liikmed:<br />
* Kert Kukk<br />
Meeskonna koduleht: [[BMS]]<br />
<br />
'''Retsensioonid'''<br />
TODO<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Dogify===<br />
Liikmed:<br />
* Roland Soosaar<br />
* Krista Norak<br />
* Mihkel Roots<br />
<br />
Meeskonna koduleht [[Dogify]]<br />
<br />
'''Projekti TFS:''' https://rososa.visualstudio.com/Dogify/<br />
<br />
'''Prototüüp'''<br />
Link prototüübile: http://enos.itcollege.ee/~rosoosaa/C%23_Project/<br />
<br />
'''Retsensioonid'''<br />
Link retsensioonile: https://wiki.itcollege.ee/index.php/Dogify#Meeskonna_.E2.80.9ESuperSalajane.E2.80.9D_anal.C3.BC.C3.BCsi_retsensioon<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~rosoosaa/C%23_Project/<br />
<br />
===Meeskond: ForeverNotes===<br />
Liikmed:<br />
* Margus Muru<br />
* Joosep Koort<br />
* Martin Nigul<br />
Meeskonna koduleht: [[ForeverNotes]]<br />
<br />
Projekti TFS: [https://forevernotes.visualstudio.com/ForeverNotes SIIN]<br />
<br />
'''Retsensioonid'''<br />
https://wiki.itcollege.ee/index.php/Talk:ParkWell<br />
<br />
'''Prototüüp'''<br />
http://enos.itcollege.ee/~mmuru/<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~mmuru/ForeverNotes.zip<br />
<br />
===Meeskond: NullPointerException===<br />
Liikmed:<br />
* Kertu Nurmberg<br />
* Tõnis Piirits<br />
Meeskonna koduleht: [[NullPointerException]]<br />
<br />
'''Projekti TFS:''' https://null-pointer-exception.visualstudio.com/CSGO%20Triggerbot<br />
<br />
'''Retsensioonid'''<br />
<br />
Meeskond Rent A Book analüüsi retsensioon: https://wiki.itcollege.ee/index.php/Talk:Rent_A_Book<br />
<br />
Meeskond ATDV lõpptoote mittelõplik retsensioon: https://wiki.itcollege.ee/index.php/Talk:ATDV#Anal.C3.BC.C3.BCsi_retsensioon<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~knurmber/CSharp/Projekt/]<br />
<br />
===Meeskond: SuperSalajane===<br />
Liikmed:<br />
*Sirle Maarja Allikas<br />
*Kaspar Kaal<br />
*Jaan Kastõgov<br />
*Rahel Kangur<br />
<br />
Meeskonna koduleht: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane<br />
<br />
Projekti TFS: https://supersalajane.visualstudio.com<br />
<br />
'''Analüüs'''<br />
<br />
Projekti analüüs: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane#Anal.C3.BC.C3.BCs_Supersalajane<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsi retsensioon: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane#Meeskonna_.E2.80.9EDogify.E2.80.9D_anal.C3.BC.C3.BCsi_retsensioon<br />
<br />
'''Prototüüp'''<br />
<br />
'''Lõpptoode'''<br />
<br />
==Kaugõpe==<br />
<br />
===Meeskond: Autoparandaja===<br />
Liikmed:<br />
* Mihkel Viilveer<br />
Meeskonna koduleht: [[Autoparandaja]]<br />
<br />
'''Retsensioonid'''<br />
Analüüsi retsensioon [[Talk:FoodCab]]<br />
<br />
'''Prototüüp'''<br />
[https://1drv.ms/u/s!Atnv4O9QOXAsiuRwaKmsahFaKdQrvg Saab siit alla laadida]<br />
<br />
Meilide saatmiseks vaja konfigureerida Web.config alt järgnevad võtmed: smtpEmail, smtpPassword, smtpServer.<br />
<br />
'''Lõpptoode'''<br />
[https://1drv.ms/u/s!Atnv4O9QOXAsiuZw7RFU0Oxjk5EYWQ Saab siit alla laadida]<br />
<br />
<br />
'''TFS'''<br />
https://tostukid.visualstudio.com/autoparandaja/_git/Autoparandaja.NET<br />
<br />
===Meeskond: Paabel===<br />
''Liikmed:''<br />
* Rutt Lindström<br />
* Esta Prangel<br />
* Krista Rüütel<br />
* Liina Abner<br />
<br />
'''Meeskonna koduleht:''' [[Paabel]]<br />
<br />
'''Projekti TFS:''' [https://kristaryytel.visualstudio.com/Paabel TFS-i link]<br />
<br />
'''Prototüüp (14. detsembri seisuga):''' [http://enos.itcollege.ee/~labner/paabel/paabel.zip Prototüüp koos algandmete laadimiseks vajalike xml-dega]<br />
<br />
'''Retsensioonid'''<br />
TODO Projekti "Isearve" retsensioon: [[Talk:Isearve]]<br />
<br />
'''Lõpptoode (26.01.2016)''' [http://enos.itcollege.ee/~rlindstr/CSharp/ Lõpptoode (Paabel.zip) ning dokumentatsioon]<br />
<br />
===Meeskond: Agraarbeib===<br />
<br />
Liikmed:<br />
* Kaia Runthal<br />
* Marianne Trubetskoi<br />
* Taavi Tilk<br />
* Mihkel Matson<br />
<br />
Meeskonna koduleht: [[Agraarbeib]]<br />
<br />
Projekti TFS: https://kaia.visualstudio.com/MeieTalu<br />
<br />
'''Analüüs (01.11)'''<br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Analyys Analüüs Wikis]<br />
<br />
'''Analüüsi retsensioon (08.11)'''<br />
Retsenseeritav [[Talk:Elekter]]<br />
<br />
'''Prototüüp: 18.12 seisuga''' <br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Prototüüp Prototüüp]<br />
<br />
'''Lõpptoode (26.01) Saab alla laadida siit:''' <br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Lõpptoode Lõpptoode]<br />
<br />
'''Kasutusjuhendit näeb siit: <span class="plainlinks">[//docs.google.com/document/d/1vsXsnMsr9yUWbCMQwXC5o0Q0wsNu7HHvPjPskDvV5YQ/edit?usp=sharing:Link Kasutusjuhend]</span> ''' <br />
<br />
'''Lõpptoote retsensioon (27.01) TODO'''<br />
Agraarbeib lõpptoote retsensioon:[[Talk:DevHelp]]<br />
<br />
===Meeskond: MoneyG 1.0===<br />
Liikmed:<br />
* Liina Saar<br />
* Mart Raus<br />
* Ando Kiidron<br />
* Andres Kepler<br />
<br />
Meeskonna koduleht: [[MoneyG 1.0]]<br />
<br />
Projekti TFS: [http://452b.visualstudio.com]<br />
<br />
'''Prototüüp:''' [https://www.dropbox.com/sh/e34g2tst68asvk3/AAAqvzzhxv816i57yH1kHBS1a?dl=0 link prototüübile]<br />
<br />
'''Lõpptoode:''' [https://www.dropbox.com/sh/yqd9v5kbl60dsyr/AAAskIt7nHwbBE9krHjQEeWaa?dl=0 link lõpptootele]<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsi retsensioon - [[Talk:Kingalaenutus]]<br />
<br />
Lõpptoote retsensioon - TODO<br />
<br />
'''Lõpptoode'''<br />
<br />
TODO<br />
<br />
===Meeskond: Laener===<br />
Liikmed:<br />
* Martin Kask - programmeerija<br />
* Marko Nõu - programmeerija<br />
* Anto Animägi - projektijuht<br />
<br />
Meeskonna koduleht: [[Laener]]<br />
<br />
Projekti TFS: [https://kaskmartin.visualstudio.com/Laener]<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonnale NullPointerException : [https://wiki.itcollege.ee/index.php/Talk:NullPointerException]<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~markask/csharp/Laener.zip<br />
<br />
===Meeskond: Vitamin C#===<br />
Liikmed:<br />
* Marko Belzetski<br />
* Rene Väli<br />
* Kaia Tomson<br />
<br />
Meeskonna koduleht: [[Vitamin C#]]<br />
<br />
Projekti TFS: [https://fevertree.visualstudio.com/Vitamiin%20Csharp https://fevertree.visualstudio.com/Vitamiin%20Csharp]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z]<br />
<br />
'''Retsensioonid'''<br />
TODO<br />
<br />
===Meeskond: Kingalaenutus===<br />
Liikmed:<br />
* Kristi Saare<br />
* Kersti Maurer<br />
* Liisi Taimre<br />
* Siim Pääro<br />
<br />
Meeskonna koduleht: [[Kingalaenutus]]<br />
<br />
'''projekti TFS: [https://kingalaenutus.visualstudio.com/Kingalaenutus Kingalaenutus]'''<br />
NB! Õppejõud lisatud itcollege aadressiga.<br />
<br />
'''Retsensioonid: '''<br />
Retsensioon projektile [https://wiki.itcollege.ee/index.php/Talk:Rahaplaneerija Rahaplaneerija]<br />
<br />
'''Prototüüp'''<br />
[http://enos.itcollege.ee/~ltaimre/KingalaenutusPrototyyp/ Link prototüübile]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~ltaimre/Kingalaenutus/ Link lõpptootele]<br />
<br />
===Meeskond: Isearve ===<br />
Liikmed:<br />
* Siim Kallari<br />
* Priit Tiganik<br />
<br />
Meeskonna koduleht: [[Isearve]]<br />
<br />
Projekti TFS: [https://isearve.visualstudio.com/IseArve https://isearve.visualstudio.com/IseArve]<br />
<br />
Projekti Prototüüp: [https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU]<br />
<br />
<br />
'''Meie kirjutatud retsensioon'''<br />
[[Talk:Ajamasin]]<br />
<br />
'''Meie tööle kirjutatud retsensioon'''<br />
[[Talk:Isearve]]<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE]<br />
<br />
===Meeskond: DevHelp===<br />
Liikmed:<br />
* Martin Jääger<br />
* Mikk Erlenheim<br />
* Kristo Leemets<br />
Meeskonna koduleht: [[DevHelp]]<br />
<br />
'''Retsensioonid'''<br />
Projekti Garden of Towers analüüsi retsensioon:[[Talk:Garden of Towers]]<br />
<br />
'''Prototüüp (18. detsembri seisuga):''' [http://enos.itcollege.ee/~kleemets/II%20semester/Programmeerimine%20C%23%20keeles/DevHelpProto/ Prototüübi link]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~kleemets/II%20semester/Programmeerimine%20C%23%20keeles/DevHelp/ Lõpptoode]<br />
<br />
Projekti TFS: [https://devhelp.visualstudio.com/]<br />
<br />
'''Lõpptoote retsensioon'''<br />
[[Talk: Agraarbeib]]<br />
<br />
===Meeskond: Elekter ===<br />
'''Liikmed:'''<br />
* Sigrid Aasma<br />
* Kristo Oidermaa<br />
* Tiit Post<br />
<br />
'''Meeskonna koduleht:''' [[Elekter]]<br />
<br />
'''Projekti TFS:''' [https://elekter.visualstudio.com/i243Elekter/ https://elekter.visualstudio.com/i243Elekter]<br />
<br />
'''Retsensioon:''' Projekt FoodBytes [[Talk:FoodBytes]]<br />
<br />
'''Prototüüp:''' [https://drive.google.com/open?id=0B13XA4AyIfQNc05vSi1UNTRsbkU link]<br />
<br />
'''Lõpptoode:''' [https://drive.google.com/drive/folders/0B6rC6xduz_u4RXN2ZDNVVTRLeUU link]<br />
<br />
'''Lõpptoote retsensioon Isearve poolt:''' [[Talk:Elekter#Retsensioon_meeskonna_Elekter_l.C3.B5pptootele]]<br />
<br />
===Meeskond: Battle2048===<br />
Liikmed:<br />
*Andrus Seiman<br />
*Kristjan Peterson<br />
<br />
Meeskonna koduleht: [[Battle2048]]<br />
<br />
Projekti TFS:<br />
https://battle2048.visualstudio.com/<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsile: [[Talk:Vitamin_C]]<br />
<br />
Lõpptootele: TODO<br />
<br />
'''Prototüüp''' [https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_prototype.zip link]<br />
<br />
'''Lõpptoode''' [https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_final.zip link]<br />
<br />
===Meeskond: EasyDesk===<br />
Liikmed:<br />
* Marju Pütsepp<br />
<br />
Meeskonna koduleht: [[EasyDesk]]<br />
<br />
Projekti TFS: https://marjup.visualstudio.com/EasyDesk<br />
<br />
'''Retsensioonid'''<br />
* Projekti "Agraarbeib" analüüsi retsensioon: [[Talk:Agraarbeib]]<br />
<br />
'''Prototüüp:''' [http://enos.itcollege.ee/~mputsepp/ link]<br />
<br />
'''Lõpptoode''' [https://drive.google.com/open?id=0B1FRLg5P7bZWRGJJd21CVnJMVTg link]<br />
<br />
===Meeskond: Ajamasin===<br />
Liikmed:<br />
* Liina Hellerma<br />
* Teele Sepman<br />
<br />
Meeskonna koduleht:[[Ajamasin]]<br />
<br />
Projekti TFS: https://teelesepman.visualstudio.com/Ajamasin/ (https://ajamasin.visualstudio.com/Ajamasin)<br />
<br />
'''Retsensioonid''':<br />
Analüüsi retsensioon: [https://wiki.itcollege.ee/index.php/Talk:OnTime OnTime]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Jarvis===<br />
Liikmed:<br />
<br />
* Grigori Palamartšuk - Scrum Master & Product owner<br />
* Andrei Grigorjev - arendaja<br />
* Artyom Likhachev - arendaja<br />
* Maksim Tšeljabov - arendaja<br />
<br />
Meeskonna koduleht: [https://wiki.itcollege.ee/index.php/JARVIS Jarvis]<br />
<br />
Projekti TFS: [https://grigorip.visualstudio.com/Jarvis Jarvis]<br />
<br />
'''Retsensioonid'''<br />
TBD<br />
<br />
'''Lõpptoode'''<br />
TBD<br />
<br />
===Meeskond: TikTokTek===<br />
Liikmed:<br />
* Eva Ibrus<br />
* Rain Saarmäe<br />
'''Meeskonna koduleht'''<br />
[[TikTokTek]]<br />
<br />
'''TFS'''<br />
https://tiktoktek.visualstudio.com<br />
<br />
'''Retsensioonid'''<br />
[[Talk:Battle2048]]<br />
<br />
'''Lõpptoode'''<br />
Dokumentatsioon ja kood sisalduvad arhiivis:<br />
[http://enos.itcollege.ee/~rsaarmae/Csharp/TikTokTek.zip LINK]<br />
(käivitamiseks tuleb Visual Studios '''TikTokTek.WPF''' projektil paremklõpsata hiirega ja '''[Set as StartUp project]''')<br />
<br />
===Meeskond: Rahaplaneerija===<br />
Liikmed:<br />
* Maila Keerus<br />
* Kersti Miller<br />
* Evelin Jõgi<br />
<br />
Meeskonna koduleht:<br />
[[Rahaplaneerija]]<br />
<br />
Projekti TFS: [https://rahaplaneerija.visualstudio.com/Rahaplaneerija Rahaplaneerija]<br />
<br />
'''Retsensioonid''':<br />
[[Talk:EasyDesk]]<br />
<br />
'''Prototüüp''':<br />
18.12. seisuga: [http://enos.itcollege.ee/~ejogi/Rahaplaneerija/ Rahaplaneerija prototüüp]<br />
<br />
'''Lõpptoode''':<br />
27.01. seisuga: [http://enos.itcollege.ee/~ejogi/Rahaplaneerija/ Rahaplaneerija lõpptoode]<br />
<br />
===Meeskond: Garden of Towers===<br />
Liikmed:<br />
* Nele Sergejeva<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/Garden_of_Towers<br />
<br />
Projekti TFS: https://gardenoftowers.visualstudio.com/<br />
<br />
'''Retsensioonid'''<br />
Laener meeskonna retsensioon: https://wiki.itcollege.ee/index.php/Talk:Laener<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: FoodCab===<br />
Liikmed:<br />
* Mario Mustasaar<br />
* Peeter Ploom<br />
* Rain Elken<br />
* Roland Türi<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/FoodCab<br />
<br />
Projekti TFS: https://foodcab.visualstudio.com/<br />
<br />
Protüüp 18.12 seisuga asub [https://www.dropbox.com/sh/jxh7gtwvbr3ba7p/AAC3gTpcfFi1dY3WVhdxIZC3a?dl=0 siin]<br />
<br />
'''Retsensioonid''' <br />
* Retsensioon meeskonna Paabel projekti analüüsile asub [https://wiki.itcollege.ee/index.php/Talk:Paabel siin]<br />
<br />
'''Lõpptoode'''<br />
* Kood ja muud failid dropboxis asub [https://www.dropbox.com/sh/qi4xyyidvtu8z49/AABNVDg4Au_mpCN8VzSWIBc_a?dl=0 siin]<br />
Täieneb veel 27.01 jooksul<br />
<br />
===Meeskond: MyLibrary===<br />
Liikmed:<br />
* Madis Uudam - projektijuht, arendaja<br />
* Olle Mikk - arendaja<br />
<br />
Meeskonna koduleht: https://mylibrary16.wordpress.com/<br />
<br />
Projekti TFS:<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
=== Meeskond: OnTime ===<br />
'''Liikmed''':<br />
*Tatjana Kruglova<br />
<br />
'''Meeskonna koduleht''':<br />
[https://wiki.itcollege.ee/index.php/OnTime OnTime Wiki]<br />
<br />
'''Projetki TFS''': <br />
[https://ontimekruglova.visualstudio.com/OnTime/ OnTime TFS]<br />
<br />
'''Retsensioonid''': <br />
[https://wiki.itcollege.ee/index.php/Talk:TikTokTek TikTokTek]<br />
<br />
'''Prototüüp'''<br />
[https://drive.google.com/drive/folders/0By340FvSRdiVSnVRNWFaUG9iSGM?usp=sharing OnTime Prototüüp]<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0By340FvSRdiVSnVRNWFaUG9iSGM OnTime]<br />
<br />
=== Meeskond: FoodBytes ===<br />
Liikmed:<br />
*Aet Udusaar<br />
*Taavi Põder<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/FoodBytes<br />
<br />
Projekti TFS: https://foodbytes.visualstudio.com/FoodBytes/<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonna [https://wiki.itcollege.ee/index.php/Talk:Autoparandaja Autoparandaja analüüsile] <br />
<br />
'''Lõpptoode:'''<br />
https://drive.google.com/drive/folders/0B4h9jaw4qfcIV010aUI1MmZrc2M<br />
<br />
===Meeskond: SeDuM===<br />
Liikmed:<br />
*Liina Laumets <br />
<br />
Meeskonna koduleht: [[Meeskond: SeDuM]]<br />
<br />
Projekti TFS:<br />
<br />
'''Retsensioonid'''<br />
<br />
'''Prototüüp'''<br />
<br />
'''Lõpptoode'''<br />
<br />
===Meeskond: Koeraplats===<br />
'''Liikmed:''' <br />
* Maie Jeltsova<br />
'''Meeskonna koduleht:'''<br />
https://wiki.itcollege.ee/index.php/Koeraplats<br />
<br />
'''Projekti TFS:''' <br />
https://koeraplats.visualstudio.com/<br />
<br />
'''Retsensioonid''' TODO<br />
<br />
'''Prototüüp''' TODO<br />
<br />
'''Lõpptoode''' TODO<br />
<br />
<br />
===Meeskond: Just Another Library===<br />
<br />
Liikmed:<br />
<br />
* Maksim Tseljabov<br />
<br />
Meeskonna koduleht: https://wiki.itcollege.ee/index.php/Just_Another_Library<br />
<br />
Projekti TFS: https://maksimc.visualstudio.com/Library<br />
<br />
Retsensioonid TBD<br />
<br />
Lõpptoode TBD</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117381Talk:Elekter2017-01-30T08:06:52Z<p>Ptiganik: </p>
<hr />
<div>= Analüüsi retsensioon =<br />
==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
==C#==<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
= Lõpptoote retsensioon =<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele ==<br />
<br />
broneering tiimi [[Isearve]] poolt</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117380Talk:Elekter2017-01-30T08:06:16Z<p>Ptiganik: </p>
<hr />
<div>==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
==C#==<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele ==<br />
<br />
broneering tiimi [[Isearve]] poolt</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117379Talk:Elekter2017-01-30T08:05:29Z<p>Ptiganik: </p>
<hr />
<div>==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
=C#=<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
== Retsensioon meeskonna [[Elekter]] lõpptootele ==<br />
<br />
broneering tiimi [[Isearve]] poolt</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Talk:Elekter&diff=117378Talk:Elekter2017-01-30T08:05:02Z<p>Ptiganik: </p>
<hr />
<div>==Retsensioon meeskonna [[Elekter]] analüüsile==<br />
Retsensiooni koostas: [https://wiki.itcollege.ee/index.php/Agraarbeib Agraarbeib]<br />
<br />
==Tiimi Elekter analüüsi retsensioon==<br />
<br />
Meeskonna Elekter rakenduse analüüs on põhjalik ja annab hea ülevaate eesmärkidest ja funktsionaalsusest. Analüüsist tuleb välja kõik põhiline info, mida realiseerimiseks vaja on. Üheselt arusaadav on ka, mis otstarbeks see rakendus luuakse ja mis võimalused on seal kasutajal.<br />
<br />
Rakendusega tahetakse hallata väga paljusid korteriühistuga seotud teemasid. Ohu kohaks võibki osutuda see, et kõiki plaanitud vajalikke funktsionaalsusi ei jõuta realiseerida. Analüüsis ei olnud välja toodud andmemudelit, et osaliselt hinnata projekti tegelikku mahtu. Kui andmemudel on liiga suur, siis võibki tekkida ajapuudus terviku teostamisel.<br />
<br />
==Mõned märkused:==<br />
<br />
Arvestama peaks sellega, et kui soovitakse rakendust kasutada väljaspool Tallinna, siis peaks olema ka väli LINN andmebaasis.<br />
<br />
Retsensioonist ei loe välja, kas kasutatakse ''database first'' või ''code first'' lähenemist.<br />
<br />
Kas rakenduse päringud käivad otse baasi tabelite pihta või on ka vahekihid?<br />
<br />
Arvete meilile saatmise funktsionaalsus võiks olla „Must have“ korteriomaniku seisukohast.<br />
<br />
=C#=<br />
<br />
[https://wiki.itcollege.ee/index.php/Category:Programmeerimine_CSharp_keeles C# aine koduleht]<br />
<br />
[https://wiki.itcollege.ee/index.php/Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016) C# kodutöö 2016]<br />
<br />
==Retsensioon meeskonna [[Elekter]] lõpptootele==<br />
<br />
broneering tiimi [[Isearve]] poolt</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Isearve&diff=117216Isearve2017-01-27T12:18:40Z<p>Ptiganik: /* 26.01.2017 */</p>
<hr />
<div>== Meeskond ja rollid ==<br />
<br />
* Priit Tiganik<br />
* Siim Kallari<br />
<br />
Projekti TFS: [https://isearve.visualstudio.com/IseArve https://isearve.visualstudio.com/IseArve]<br />
<br />
'''Analüüs''' 2016-10-15<br />
[https://wiki.itcollege.ee/index.php/Isearve_analyys https://wiki.itcollege.ee/index.php/Isearve_analyys]<br />
<br />
'''Meie kirjutatud retsensioon'''<br />
[https://wiki.itcollege.ee/index.php/Talk:Ajamasin https://wiki.itcollege.ee/index.php/Talk:Ajamasin]<br />
<br />
'''Väga asjalik retsensioon meie analüüsile'''<br />
[https://wiki.itcollege.ee/index.php/Talk:Isearve https://wiki.itcollege.ee/index.php/Talk:Isearve]<br />
<br />
Projekti Prototüüp: [https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU]<br />
<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE]<br />
<br />
== Lõpptoote kasutusjuhend ==<br />
<br />
* Programmi esmakordsel käivitamisel on kasutajal mõistlik Main vaates ära täita enda andmete blokk: nimi, ettevõtte rekvisiidid, pangaarve. Peale andmete salvestamist on need programmis alati olemas ning pele seda on võimalik hakata kasutama Isearve muud funktsionaalsus<br />
* Main vaates on kaks sakki: olemasolevate arvete ja partnerite vaatlemiseks. Programmi esmakordsel käivitamisel on need tühjad. Edasi saab liikuda kahel viisil, kas lisades arve või lisades partneri.<br />
* Kliki "lisa arve" ning täida avanevas aknas tühjad ja vajaminevad andmed ostja, arve ja müügi kohta. Uue müügrea lisamiseks vajuta "Lisa rida"<br />
* Kui arve on täidetud, on soovitatav see salvestada, vajuta "Salvesta". Arve lisamise aknas on veel kaks nuppu "Ekspordi PDFi" ning "Ekspordi XMLi". Nende abil on võimalik lahti olev arve salvestada kas PDF või XML formaati. Vaikimisi pakutakse salvestamise asukohaks kasutaja dokumente, kuid nii asukohta kui lõplikku faili nime saab kasutaja muuta.<br />
* Main vaate arvete sakis saab arveid selekteerida ja otse faili eksportida. Saab ka vajutada "Kopeeri", mis avab selekteeritud arve andmetega uue arve lisamise akna. Soovi korral saab selles teha kiireid muudatusi ning siis see täiesti uue arvena salvestada ja eksportida.<br />
* Main vaate partnerite sakis saab vaadelda salvestatud partnereid. Kui selles aknas selekteerida mingi partner ning vajutada "Lisa arve", avaneb uus arve lisamise aken, kus ostja väljad on eelnevalt selekteeritud partneri andmetega täidetud. Topeltklikk partneril avab partneri enda muutmise akna.<br />
<br />
== Idee ==<br />
XML e-arvete ja PDF arvete koostamise programm väike-ettevõtetele ja MTÜdele WPF tehnoloogial. Midagi sarnast nagu [http://www.arvetehas.ee/ http://www.arvetehas.ee/], kuid rakendus asub kasutaja arvutis. E-arvete kohta lisainfot [http://www.pangaliit.ee/et/arveldused/e-arve http://www.pangaliit.ee/et/arveldused/e-arve]<br />
<br />
Projekti TFS: https://isearve.visualstudio.com/IseArve<br />
<br />
== Rakenduse must-have sisu ==<br />
* Ülevaade eelmistest arvetest. <br />
* Võib sisestada uue partneri. <br />
* Alustab uue arve loomist nullist või võtab aluseks mõne eelmise arve.<br />
* Salvestab andmebaasi uue arve. <br />
* Genereerib valitud arvest PDFi või e-arve XMLi.<br />
* Ülevaade eelmistest arvetest koos filtritega: partner, kuupäevad jne.<br />
* Arvete tasumise ülevaade: saab käsitsi märkida tasutuks<br />
<br />
== Nice-to-have lisad ==<br />
* Kui ühes ettevõttes on palju erinevaid arvete loojaid, siis võimalik eksportida ja importida arvete templiite: ettevõtte rekvisiidid, kujundus. <br />
* Võimalik importida ja eksportida partnerite nimekiri.<br />
* Arve saadetakse e-mailiga otse kliendile, kui vastav linnuke on valitud.<br />
<br />
== Workload ==<br />
=== 26.01.2017 ===<br />
Viimased parandused ja väikesed täiendused said Priidu poolt tehtud. Pöidlad pihus<br />
<br />
=== 22.01.2017 ===<br />
Priit parandas koodi peale prototüübi tagasisidet: keel sai veidi ühtlasemaks ning vormilt ei loeta andmeid enam indeksite alusel vaid bindingut kasutades. Sai implementeeritud üks lihtne logimine tegevustele, mis salvestavad, kas siis DBsse või faili.<br />
<br />
=== 20.01.2017 ===<br />
Priit täiendas XML ja PDF genereerimist sellega, et kasutaja saab ise sobiva kausta ja failinime valida<br />
<br />
=== 18.01.2017 ===<br />
Siim parandas hulga bugisid ning täiendas funktsionaalsust sellega, et nüüd saab partnerite aknast partnerit valides ja seejärel "Lisa arve" nuppu vajutades sellele partnerile arve lisada<br />
<br />
=== 17.01.2017 ===<br />
Töönädala öötöö. Priit kulutas tunde, et mõista, kuidas Bindingu ja INotifyPropertyChanged abil saaks arve peal olevaid müügiridade summasid arvutada. Lõpuks läks summade arvutamine müügirea objekti setterisse ning sinnasamasse sai lisatud ka arvutuse aluseks olevate atribuutide muudatuste jälgijad. Lisaks prindib XML nüüd reaalseid arveid välja, enne oli tegu näidis-andmetega.<br />
Siim tegeles ühe vastiku bugiga, kus arve kuupäev andmebaasi ei jõudnud. Lisaks töötab kasutaja salvestamine. Nüüd saab arvet ka kopeerida ning PDFi genereerida otse Main ehk arvete ülevaate vaatest. Siim lisas ka palju andmete sisestuse kontrolle ning parandas väiksemaid ja suuremaid muid bugisid.<br />
<br />
=== 16.01.2017 ===<br />
Kuni viimase nädalavahetseni enne projekti esitamist tegelesime veel teiste ainete kodutöödega ning ootasime prototüübile tagasisidet. Kui viimast saabunud ei olnud, asusime kiiresti tööle. Nädalavahetusel 14.-15. jaanuar saime Siimuga kokku ning kirjutasime-kirjutasime. Selgus, et oleks võinud ikkagi esialgset skoopi väiksemana ette kujutada. Sellegipoolest midagi sai sellest ka tehtud.<br />
<br />
Priit tegeles peamiselt XMLi ja PDFi välja trükkimisega. Kuna mõlema loomine käib erinevaid võtteid kasutades ja on andmetihedad, siis võttis andmete mappimine üpris kaua aega. XMLi serialiseerimise puhul oli lisaks tarvis luua ka eraldi klasside puu, mis vastaks e-arve XML-i struktuurile.<br />
<br />
Siim tegeles prototüübist välja jäänud andmete kirjutamise ja lugemisega vormilt. Selgus, et ListView puhul pole vaikimisi ette nähtud võimalust selle elemente TextBox-i laadselt muuta. Meil asus aga arve müügi rida ListViews ning seetõttu oli vaja leida meile kohandatud lahendus. Siim sai sellega loomulikult hakkama. Siim arendas veel arve müügiridade lugemise Invoice aknas, arvete kuvamise ja kasutaja lisamise MainWindowisse.<br />
<br />
Aeg-ajalt põrkasime arenduse käigus kokku ka analüüsi ja prototüüpimise käigus sisse jäetud põhimõtteliste vigadega. Küll oli mõni DB andmetüüp vale, küll ei olnud osa funktsionaalsust korralikult enda jaoks lahti seletanud või läbi mõelnud. Kõikide nende väikeste vigade lahendamine võttis oma aja.<br />
<br />
=== 18.12.2016 ===<br />
Esitasime prototüübi.<br />
Prototüübis on loodud meie töö kohta esitatud retsensiooni põhjal täiendatud andmebaas koos Domainiga, olemas on peamised vaated ning lihtsamad neist ka töötavad. Viimase all peame silmas seda, et aken "Lisa partner" salvestab uue partneri andmebaasi ning Main windowis sakis Partnerid ka enam-vähem kuvatakse salvestatud partnereid. <br />
Projekti koodis on prototüübi hetkel palju lõpuni kirjutamata või isegi üleliigseid funktsioone-kommentaare, kuid meie arvates võiks klasside arv ja sisu olla pea-aegu lõplik: vaja ainult funktsionaalsust juurde kirjutada. Üks erand on see, et BO-d tõmbame veel sedavõrd kokku, et ilmselt jääb neid alles kolm: CompanyBO meie arve partneri tarvis, InvoiceBO kõigele sellele, mida ühe arve pealt leida võib, ning lõpuks UserBO, et kätte saada arve peale mineva programmi kasutaja rekvisiidid.<br />
<br />
=== 13.11.2016 ===<br />
Retsenseerisime Ajamasinat, loomulikult jäi see töö praktiliselt viimasele minutile... Lugesime ka enda retsensiooni ning saime palju uusi häid mõtteid, mida analüüsi ja projekti raames paremaks teha ning millele peaks tähelepanu pöörama. See on kindlasti abiks projekti edukale valmimisele.<br />
<br />
=== 03.11.2016 ===<br />
Priit täiendas analüüsi andmebaasi osaga<br />
<br />
=== 15.10.2016 ===<br />
Koosolek vaadete teemal. Käisime läbi Priidu ja Siimu ideed, kuidas kodutöö view peaks koos esialgse funktsionaalsusega välja nägema. Joonistasime pilte ja jõudsime visioonis kokkuleppele. Siim tegi esimese Main View vormi ning Priit pani arutelu analüüsina kirja.<br />
<br />
=== 8.10.2016 ===<br />
Mõtleme juba analüüsi peale, leht [[Isearve_analyys]]<br />
<br />
=== 8.10.2016 ===<br />
Wiki, projekti idee, visioon rakendusest ja sisust<br />
<br />
=== 5.10.2016 ===<br />
Meeskonna loomine, Siim andis hea mõtte kodutöö sisuks</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Juhend:_Kodut%C3%B6%C3%B6_aines_%22Programmeerimine_CSharp_keeles%22_(2016)&diff=117215Juhend: Kodutöö aines "Programmeerimine CSharp keeles" (2016)2017-01-27T12:16:13Z<p>Ptiganik: /* Meeskond: Isearve */</p>
<hr />
<div>=Kodutöö aines "Programmeerimine C# keeles"=<br />
<br />
==Eesmärk==<br />
Saada praktiline arenduskogemus .NET keskkonnas ning arendada meeskonnatöö kogemust ja analüüsivõimet. Kasutada arendusprotsessis koodihoidlat.<br />
<br />
==Reeglid==<br />
Ühte projektimeeskonda kuulub 3-5 tudengit(Soovituslik meeskonna suurus on 3-4). Ühel teemal võib teostada projekti üks või mitu meeskonda.Töö käiku kajastatakse https://wiki.itcollege.ee keskkonnas või soovi korral võib seda teha ka ajaveebis(blogis).<br />
Ajaveebi pidamise eesmärke on kaks: nii on võimalik kirja panna kõik mõtted ja ideed (ning nendest jääb jälg ja dokumentatsioon) ning õppejõul on hiljem võimalik saada ülevaade iga projektimeeskonna liikme panusest. Ajaveebi loob ja ajaveebi haldab projektimeeskond vabalt valitud (avalikus) keskkonnas. <br />
<br />
'''Projekti loomine ja arendamine '''<br />
Projekt lisatakse versioonihaldusesse, kasutades selleks [Team Foundation Service'it http://tfs.visualstudio.com/] ning õppejõule antakse ligipääs. Õppejõu live id: maitposka ät hotmail.com . Projekt peab olema alates algfaasist lisatud TFSi ning kogu tööprotsess toimub versioonihaldust kasutades<br />
<br />
'''Tööde esitamine''' (prototüüb ja lõpptoode)<br />
Töö esitamisel pakitakse see kokku ning lisatakse wiki leheküljele link lähtekoodile. Kui töö lähtekoodi ei soovita mingil põhjusel avalikustata, tuleb õppejõuga selle jaoks sõlmida eraldi kokkulepe. Lähtekood on vajalik, et tööd oleks võimalik hinnata nii õppejõul kui kaastudengitel selle kohta retsensiooni kirjutada.<br />
<br />
'''Team Foundation Service kasutamine''' (tänasel päeval '' Visual Studio online'')<br />
[http://www.visualstudio.com/get-started/sign-up-for-visual-studio-online Step-by-Step juhend]<br />
<br />
NB! Versioonihalduse kohta jagab õppejõud materjale.<br />
<br />
==Tähtaegadest kinnipidamine==<br />
Projekt jaguneb alamosadeks, millele on määratud tähtajad. Tähtaegade ületamisel võimalike punkte ei kaotata. Kui töö aga on esitatud tähtajaks, siis on võimalik selle eest teenida boonuspunkte (enamasti 0-10% võimalikust maksimumist boonust). Enne tähtaega esitatud töö ei tähenda automaatselt maksimumpunkte, kui see ei ole sooritatud korralikult.<br />
<br />
NB! Juhul kui analüüsi tähtajast on möödunud nädal, määrab õppejõud meeskonnale ise vabalt valitud ülesande, mis on võetud näidis teemade alt. Peale seda ei ole võimalik teemat enam muuta.<br />
<br />
==Hindamine==<br />
Teostatuks loetakse projekt juhul, kui lähteülesanne on realiseeritud, lahendus on töötav, kuid esineb suuremaid vigu ning piirsituatsioonidega ei ole arvestatud.<br />
Maksimumtulemuse saavutamiseks peab projekt olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus. Tehnilisi ja vormistuslike puudujääke on võimalik korvata lisavõimaluste realiseerimisega.Üldjuhul tuleb loodud lahendust ka praktikumides või loengutes teistele tudengitele tutvustada (ca 10 min).<br />
Nagu eelpool mainitud, koosneb projekt erinevatest osadest. Punktide arvu määramisel arvestatakse ka tähtajast kinni pidamist, mille toimimisloogika on kirjeldatud eespool.<br />
<br />
===Meeskonna kokkupanek ja idee===<br />
'''27.10.2016''' (2p) (Kuna vahepeal oli loengute toimumise kord paigast ära ning TFSi loomisega on segadust olnud, siis nihutan seda tähtaega)<br />
<br />
Tekitatakse meeskonna wiki lehekülg. Meeskonnal peab olema nimi ning see koosneb kolmest kuni viiest liikmest. Määratakse projektijuht. Juhul kui hakatakse blogi pidama kuskil mujal keskkonnas ilmub selle kohta link. Lühidalt peaks kirjeldama idee olemust nii, et selle üldine suund oleks arusaadav. Samuti peab olema märgitud tehnoloogia, milles hakatakse rakendust looma. Meeskond on loonud TFSi konto ning on saatnud õppejõule kutse.<br />
<br />
===Analüüs===<br />
'''01.11.2016''' (4p)<br />
Analüütilise osa eesmärgiks on arendada tudengite analüüsioskust, mida on vaja ka päris tarkvaraarenduse protsessi juures.'''NB! Miinimum sõnade arv 700''' Selle osa käigus peab valmima loodava rakenduse analüüs, mis sisaldab muu hulgas ka:<br />
*Analüüs rakendusele. (Mida see endas sisaldab? Mis on selle eesmärk? Mida tavakasutaja sellega teha saaks? Milliste osade realiseerimine võib osutuda problemaatiliseks?) Kui on tööjaotus paigas, siis tuua ka see välja.<br />
*Tuua välja nimekiri funktsionaalsusest, mida plaanitakse kindlasti teostada(''Must have'')<br />
*Nimekiri funktsionaalsustest, mis võiks olla, aga mida ei pruugita ajapuuduse tõttu realiseerida.(''Nice to have'')<br />
<br />
'''Retsensioon(päevaõpe)''' 08.11.2016 (3p) <br/><br />
'''Retsensioon(kaugõpe)''' 13.11.2016 (3p)<br />
<br />
===Prototüüp + esitlemine===<br />
'''Päevaõpe:28.11.2016 / Kaugõpe: 18.12.2016 '''(10p)<br />
<br />
Valmib projekti esmane realisatsioon. Laias laastus on peafunktsionaalsused realiseeritud(Nimekiri funktsionaalsusest, mida plaanitakse teostada). Rakenduses on loodud erinevad vaated, mis võimaldavad ülevaate rakendusest saada.<br />
<br />
28. novembril esitatakse prototüüp, mida kaitstakse sellele järgneval nädalal.Esitamine tähendab seda, et meeskond lisab oma Wiki lehele prototüübi lingi, kust see on võimalik alla laadida. Vajadusel antakse kaasa paigaldusjuhend. NB! Juhul kui prototüüpi ei kaitsta ja ei esitata, siis ei ole võimalik selle osa eest punkte saada.<br />
Kaugõppe puhul ei ole vaja koha peal eraldi oma prototüüpi kaitsta<br />
<br />
===Prototüübi kaitsmisele registreerumine===<br />
'''EDIT:Uuendus 30.11: Võimalik on prototüüpi kaitsta ka neljapäeval järgnevatel aegadel'''<br />
<br />
Neljapäev:<br />
*08:00 - <br />
*08:10 -<br />
*08:20 - Dogify (Roland Soosaar, Krista Norak, Mihkel Roots)<br />
*08:30 - Kassarakendus (Mikk Sarapuu, Piret Pomerants, Meelis Sääsk)<br />
*08:40 - Bomory (Cathy Toomast, Hando Laasmägi, Tarvo Tammejuur)<br />
*08:50 - Bank (Teet Adamson, Aleksei Kopõlov, Tarvo Sbitnev)<br />
*09:00 - ParkWell (Taavi Vesinurm, Raido Vell, Madis Roosioks)<br />
*09:10 - <br />
*09:20 - Hidden Mustard (Andreas Kirotar, Anneli Asser, Tõnn Vaher)<br />
*09:30 - D♭ (Martin Arusalu, Martin Nõukas, Roomet Saadi, Semjon Greef)<br />
*09:40 - NullPointerException (Kertu Nurmberg, Tõnis Piirits)<br />
.. 20 min puhvrit ja siit edasi soovi korral, kui keegi soovib, saab ka veel kaitsta<br />
<br />
*10:00 - Pie Piper (Uku-Mart Uprus, Ardo Erik, Olari Pipenberg, Villem Markus Loigom)<br />
*10:10 - PirateNetflix (Janno Oolo, Joosep Voolmaa, Arti Zirk, Mihkel Vajak)<br />
*10:20 -<br />
*10:30 -<br />
*10:40 -<br />
*10:50 -<br />
*11:00 - <br />
*11:10 -<br />
*11:20 -<br />
<br />
<br />
Kaitsmine toimub 2. detsembril(reede) alates kell 09:00. Iga meeskonna jaoks on arvestatud 10 minutit. Palun lisada kellaaeg ja meeskonna nimetus. Kõik meeskonna liikmed ei pea kohal olema, kuid tore oleks, kui kõigil oleks seda aega teha. Kaitsmised toimuvad ruumis 316.<br />
<br />
'''EDIT:Uuendus 30.11. 2.detsembri kaitsmised hakkavad alates 11:10'''<br />
<br />
<br />
<br />
*11:10 - Elibrium (Märt Häkkinen, Karl Frank)<br />
*11:20 - Gurmaanid (Koit Kõrvel, Marko Kask, Ott Sõerumäe, Brita Pentšuk)<br />
*11:30 - Brainery (Madis Lugus, Berit Põldoja, Elina Kuldkepp, Taavi Teearu)<br />
*11:40 - ForeverNotes (Margus Muru, Martin Nigul, Joosep Koort)<br />
*11:50 - Korterid Kõrgel Künkal (Edward Mardo)<br />
*12:00 - ATDV<br />
*12:10 - B12 (Martin Paakspuu, Marvin Mardiat, Kerdo Kullamäe)<br />
*12:20 - <br />
... siia võib vajaduse korral veel aegu lisada.<br />
NB! Alustame aegade lisamisest alates kell 09:10 st :)<br />
<br />
===Lõpptoode===<br />
'''Päevaõpe:08.01.2017 / Kaugõpe: 18.01.2017'''(30p)<br />
Selleks faasiks peab projekt maksimumpuntkide saavutamiseks olema teostatud tehniliselt veatult ning varustatud dokumentatsiooniga, milles sisaldub arendusprotsessi kirjeldus (peab selguma ka iga rühmaliikme panus projekti teostamisel), kasutajajuhend ning lahenduse kirjeldus.<br />
<br />
'''Retsensioon''' Päevaõpe:15.01.2017 /Kaugõpe 25.01.2017 (4p)<br />
<br />
===Esitlus/Kaitsmine=== <br />
<br />
'''Kokkulepitud ajal enne eksamit''' ''(3p) ''<br />
Esitlusel kaitstakse projekti. Tutvustatakse tehnoloogiat, mida kasutati rakenduse realiseerimiseks. Lühidalt räägitakse tööjaotusest ning probleemidest, mis tekkisid projekti realiseerimisel. Näidatakse lähtekoodi ja demonstreeritakse oma rakendust teistele tudengitele, kes võivad selle kohta küsimusi küsida. Kestvus ~20min.<br />
<br />
====Kaitsmise ajad====<br />
<br />
<br />
Ideaalne esitlus, sisaldab endas ka powerpointi, kus on<br />
*väljatoodud meeskonna nimi ja liikmed<br />
*idee<br />
*realiseerimine<br />
*mis oli keerukas?<br />
*mida uut õpiti?<br />
*mõnede keerulisemate probleemide lahendamine<br />
*meeskonnaliikmete panus<br />
<br />
<br />
'''Päevaõpe'''<br />
25.01.2016<br />
<br />
*15:30 - Bank<br />
*15:45 - Bomory<br />
*16:00 - B12<br />
*16:15 - Elibrium<br />
*16:30 - Librarians<br />
*16.45 - ForeverNotes<br />
*17.00 - ATDV<br />
*17:15 - Gurmaanid<br />
*17.30 - Hidden Mustard<br />
*17:45 - Pie Piper<br />
*18:00 - Brainery<br />
*18:15 - Kassarakendus<br />
*18.30 - Pirate Netflix<br />
*18.45 - CozinHero<br />
*19.00 - D♭<br />
*19.15 - Library<br />
..jne.. Lisada ise juurde 15 min intervallidega<br />
<br />
<br />
'''Kaugõpe'''<br />
27.01.2016<br />
<br />
*12:00 - Autoparandaja<br />
*12:15 - Paabel<br />
*12:30 - Battle2048<br />
*12:45 - Rahaplaneerija<br />
*13:00 - Elekter<br />
*13:15 - Isearve<br />
*13:30 - Jarvis<br />
*13:45 - Vitamin C#<br />
*14:00 - Kingalaenutus<br />
*14:15 - OnTime<br />
*14:30 - FoodCab<br />
*14:45 - MoneyG<br />
*15:00 - Laener<br />
*15:15 - MeieTalu<br />
*15:30 - Dogify<br />
*15:45 - Just Another Library<br />
..jne.. Lisada ise juurde 15 min intervallidega<br />
<br />
=Teemad 2016 sügis=<br />
Kodutööna tuleb luua:<br />
<br />
==Nõuded rakendusele==<br />
Loodav rakendus peab:<br />
* Peab kasutama andmebaasi (erikokkuleppel ka XML formaadis andmeallikat)<br />
**Andmebaasis peab olema vähemalt 6 andmebaasi tabelit<br />
* Peab võimaldama tegevuste kohta registri pidamist (logi)<br />
**Rakenduses tehtavad tegevused salvestatakse<br />
* Kasutama kasutajaliidesena ühte järgmistest: Windows Presentation Foundation, Windows Phone , Windows Store App või ASP.Net<br />
* Kood on kommenteeritud ning rakendus on varustatud dokumentatsiooniga<br />
* Maksimumpunktide jaoks kasutatakse vastavalt valitud tehnoloogiale soovitatud arendusmustreid<br />
* Kood on kirjutatud C# programmeerimiskeeles<br />
**Kuna aine nimi on "Programmeerimine C# keeles" ei tohi esitada rakendust, mis on loodud Javas, PHPs vms keeles<br />
* Rakendus on jaotatud kihtidesse<br />
'''Loodav rakendus peab olema loodud objektorienteeritud lähenemist kasutades!''' Klassid, klassid, klassid<br />
*Kood on kommenteeritud<br />
<br />
Lisapunkte annab:<br />
* Silmailu<br />
* Kood on kirjutatud häid praktikaid järgides ja on veatu(testimine, testimine, testimine)<br />
* Orginaalsed ideed ja hea äriidee<br />
<br />
==Kodune raamatukogu==<br />
Kodudes on tihti erinevaid raamatuid (filme, muud nänni) ja sõbrad tahavad neid vahel laenutada.<br />
Loo rakendus, mis<br />
* Võimaldaks sisestada kodused raamatud<br />
* Võimaldaks luua laenutajate profiile<br />
* Raamatuid välja laenutada (tähtajaliselt)<br />
* Laseks koostada erinevaid aruandeid (kodusolevad raamatud, väljalaenutatud raamatud, tähtaja ületanud laenutused jne)<br />
<br />
<br />
Lisavõimalused<br />
* Kui laenutaja profiilis on e-mail, siis saada automaatselt e-kiri „kallis sõber see ja see, Sinu käes on minu raamat, kas tood tagasi ka?”<br />
* Kuva hoiatused, kui laenutaja laenutuste ajalugu on vilets või kui mõni raamat on tagastamata.<br />
* Lase lisada raamatutele pilt<br />
* Loo lihtne veebiliides (et sõbrad saaksid veebist vaadata, mis raamatud kasutajal kodus veel alles on)<br />
Või<br />
<br />
==CRM==<br />
Oma klientidest peab olema ülevaade.<br />
Loo rakendus, mis võimaldab:<br />
* Kliente ning nende kontaktisikuid sisestada, muuta ning kustutada<br />
* Võimalda sisestada kliendikontakte<br />
* Koostada hinnapakkumisi klientidele, kusjuures hinnapakkumine lisatakse süsteemi ka kui kliendikontakt ning saadetakse samast süsteemist kliendile.<br />
* Kliendi andmete vaatamisel kuvatakse ka kliendikontaktid<br />
<br />
<br />
Lisavõimalused<br />
* Loo võimalus, kus kontaktisiku sünnipäeva saabumisel saadetakse automaatselt inimesele meil õnnesoovidega<br />
* Õnnitlusmeilide template’sid võiks olla mitu<br />
* Loo võimalus kliendi huvide (huvialade) kajastamiseks süsteemis<br />
<br />
==Mäng(Unit)==<br />
Loodav mäng peab sisaldama:<br />
* Erinevaid tasemeid<br />
* Punktiarvestust<br />
* XBox puldi tuge<br />
* Klaviatuurilt juhtimise tuge<br />
<br />
'''Loodav mäng peab olema loodud objektorienteeritud lähenemist kasutades!''' Klassid, klassid, klassid<br />
<br />
Lisapunkte annab:<br />
* Silmailu<br />
* Kood on kirjutatud häid praktikaid järgides ja on veatu(testimine, testimine, testimine)<br />
* Orginaalsed ideed ja hea ''story''<br />
<br />
=Meeskonnad 2016=<br />
==Päevaõpe==<br />
<br />
===Meeskond: Kuri Kohvikupidaja===<br />
Liikmed:<br />
* Egert Aia<br />
Meeskonna koduleht: [[Kuri_Kohvikupidaja]]<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonnale [[CozinHero]] asub [https://wiki.itcollege.ee/index.php/Talk:CozinHero siin]<br />
Retsensioon meeskonnale [[Pie_Piper]] asub [https://wiki.itcollege.ee/index.php/Talk:Pie_Piper siin]<br />
<br />
<br />
'''Lõpptoode'''<br />
Kättesaadav siit: https://drive.google.com/open?id=0BxPYMOn_Lvs6U3g2Rm53TTNZWmc<br />
<br />
Sisse saab logida jalutsis vajutades login<br />
<br />
admini log: 1@eesti.ee<br />
<br />
admini pw: a<br />
<br />
<br />
PS! Checkboxe valides vali esimest checkboxi nii et teed selle aktiivseks ja siis võtad linnukese jälle ära, pärast seda kõik checkboxid töötavad ilusti! =)<br />
<br />
===Meeskond: Pirate Netflix===<br />
Liikmed:<br />
* Arti Zirk<br />
* Mihkel Vajak<br />
* Janno Oolo<br />
* Joosep Voolmaa<br />
<br />
Meeskonna wikileht: [[Pirate_Netflix]]<br />
<br />
'''TFS link''' https://flowland.visualstudio.com/Pirate%20Netflix%20Demo<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskond Db kohta: https://wiki.itcollege.ee/index.php/Talk:Meeskond:_D%E2%99%AD<br />
<br />
'''Prototüüp'''<br />
Link prototüübile [https://drive.google.com/file/d/0B8c6TAUrgOx_MFQzOEFFZ1BQNzg/view?usp=sharing siin]<br />
<br />
'''Lõpptoode'''<br />
Link Lõpptootele asun [https://dl.dropboxusercontent.com/u/61894608/Pirate%20Netflix%20Final%20Product.zip siin]<br />
<br />
===Meeskond: D♭===<br />
Liikmed:<br />
* Semjon Greef<br />
* Martin Arusalu<br />
* Martin Nõukas<br />
* Roomet Saadi<br />
Meeskonna koduleht: [[Meeskond: D♭]]<br />
<br />
'''Retsensioonid'''<br />
Analüüsi retsensioon [https://wiki.itcollege.ee/index.php/Talk:Gurmaanid meeskond Gurmaanid] kohta.<br />
<br />
'''Prototüüp'''<br />
Link prototüübile asub [http://enos.itcollege.ee/~marusalu/csharp/MemoSolution.zip siin]<br />
<br />
'''Lõpptoode'''<br />
Link lõpptootele asub [http://enos.itcollege.ee/~marusalu/csharp/lopptoode/MemoSolution.zip siin]<br />
<br />
===Meeskond: ParkWell===<br />
Liikmed:<br />
* Taavi Vesinurm<br />
* Raido Vell<br />
* Madis Roosioks<br />
Meeskonna koduleht: [[ParkWell]]<br />
<br />
Projekti TFS: [https://park-well.visualstudio.com/ParkWell SIIN]<br />
<br />
'''Retsensioonid'''<br />
Analüüsi retsensioon [https://wiki.itcollege.ee/index.php/Talk:Elibrium meeskond Elibrium] kohta.<br />
<br />
'''Prototüüp'''<br />
Link prototüübile asub [http://enos.itcollege.ee/~mroosiok/CSharpProtot%c3%bc%c3%bcpParkWell/ siin]<br />
<br />
'''Lõpptoode''' [http://enos.itcollege.ee/~mroosiok/CSharpLõpptoodeParkWell/ siin]<br />
<br />
===Meeskond: Bomory===<br />
Liikmed:<br />
* Hando Laasmägi<br />
* Tarvo Tammejuur<br />
* Cathy Toomast<br />
Meeskonna koduleht: [[Bomory]]<br />
<br />
'''TFS'''<br />
https://eikbomory.visualstudio.com/Bomory<br />
<br />
'''Analüüs'''<br />
Õppejõule saadetud 01.11.2016.<br />
https://wiki.itcollege.ee/index.php/Bomory#Anal.C3.BC.C3.BCs<br />
<br />
'''Retsensioonid'''<br />
Bomoryle teeb Vitamin C tiim<br />
<br />
Meeskond Bomory retsenseeris [[Brainery]] analüüsi.<br />
Retsensioon asub [https://wiki.itcollege.ee/index.php/Talk:Brainery siin]<br />
<br />
'''Prototüüp'''<br />
Prototüüp asub siin: [https://drive.google.com/open?id=0B2jSU1zbUNk8ODV4dDV2ZDcwX0E siin]<br />
<br />
Andmebaasi nimi peab olema BomoryDB. Andmebaasi loomisel võib kasutada lingi all olevat creates.sql <br />
<br />
faili või mudeli failis teha parem klõps ja Generate Database from model ja võtta sealt sql kood. <br />
<br />
Et oleks mugavam kaitsta, lisatakse vaikimisi kasutaja Peeter(parool peeter) alla näidisfilme ja raamatuid, <br />
<br />
kuid võib teha ka enda kasutaja. Igal rakenduse käivitamisel eelnevad andmed eemaldatakse ja lisatakse<br />
<br />
default andmed.<br />
<br />
'''Lõpptoode'''<br />
Lõpptoode asub [https://drive.google.com/drive/folders/0B2jSU1zbUNk8bklmMS01UzRjX2c?usp=sharing SIIN]<br />
(Saadetud ka õppejõu meilile õigeaegselt)<br />
<br />
Kaitsmise versioon(parandatud üks viimasel hetkel tekkinud bug)[http://enos.itcollege.ee/~hlaasmag/CSharp/Bomory.zip SIIN]<br />
<br />
===Meeskond: Kassarakendus===<br />
Liikmed:<br />
* Mikk Sarapuu<br />
* Meelis Sääsk<br />
* Piret Pomerants<br />
Meeskonna koduleht: [[Kassarakendus]]<br />
<br />
'''TFS''' https://kassarakendus2016.visualstudio.com/Kassarakendus2016<br />
<br />
'''Retsensioonid'''<br />
*Analüüsi retsensioon meeskonnale '''B12''' asub [https://wiki.itcollege.ee/index.php/Talk:B12 siin]<br />
*Lõpptoote retsensioon meeskonnale '''Bomory''' asub [https://wiki.itcollege.ee/index.php/Talk:Bomory siin]<br />
<br />
*Lõpptoote retsensiooni meeskonnale '''Kassarakendus''' teeb meeskond '''Bomory''' IN PROGRESS<br />
<br />
'''Prototüüp'''<br />
*Link prototüübile asub [https://drive.google.com/open?id=0B7mHgwBiWPuNZ016RlhMck8zbW8 siin]<br />
<br />
'''Lõpptoode'''<br />
*Link lõpptootele asub [https://drive.google.com/open?id=0B7mHgwBiWPuNWlZsWDdzSDNqZWs siin]<br />
<br />
===Meeskond: Pie Piper===<br />
Liikmed:<br />
* Villem Markus Loigom<br />
* Olari Pipenberg<br />
* Uku-Mart Uprus<br />
* Ardo Erik<br />
Meeskonna koduleht: [[Pie_Piper]]<br />
<br />
'''Prototüüp'''<br />
*Link meie C_diesi prototüübile asub [http://enos.itcollege.ee/~opipenbe/C_dies/ siin]<br />
<br />
TFS: https://piepiper.visualstudio.com/MyFirstProject/Pie%20Piper/_versionControl<br />
<br />
'''Retsensioonid'''<br />
*Retsensioon meeskonnale [[Hidden_Mustard]] asub [https://wiki.itcollege.ee/index.php/Talk:Hidden_Mustard#Anal.C3.BC.C3.BCsi_retsensioon siin]<br />
<br />
'''Lõpptoode'''<br />
*Link meie C_diesi lõpptootele asub [http://enos.itcollege.ee/~opipenbe/C_dies/final/ siin]<br />
<br />
===Meeskond: Hidden Mustard===<br />
Liikmed:<br />
* Andreas Kirotar<br />
* Tõnn Vaher<br />
* Anneli Asser<br />
Meeskonna koduleht: [[Hidden_Mustard]]<br />
<br />
Meeskonna TFS https://hiddenmustard.visualstudio.com/Store/Store%20Team/_versionControl/changesets<br />
<br />
'''Retsensioonid'''<br />
*Retsensioon meeskonnale [[Pie_Piper]] asub [https://wiki.itcollege.ee/index.php/Talk:Pie_Piper siin]<br />
<br />
'''Prototüüp'''<br />
http://enos.itcollege.ee/~akirotar/wpfstore_proto.zip<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~akirotar/WebStore_parandus.zip<br />
<br />
===Meeskond: B12===<br />
Liikmed:<br />
* Kerdo Kullamäe<br />
* Marvin Mardiat<br />
* Martin Paakspuu<br />
Meeskonna koduleht: [[B12]]<br />
<br />
Projekti TFS: https://b12tiim.visualstudio.com/B12/<br />
<br />
'''Retsensioonid'''<br />
*Retsensioon meeskonnale [[Sõnajalg]] asub [https://wiki.itcollege.ee/index.php/Talk:S%C3%B5najalg siin]<br />
<br />
'''Prototüüp'''<br />
Link on [http://enos.itcollege.ee/~mpaakspu/cSharpProjekt/ siin]<br />
<br />
'''Lõpptoode'''<br />
Link on [http://enos.itcollege.ee/~mpaakspu/cSharpProjectValmis/ siin]<br />
<br />
===Meeskond: Elibrium ===<br />
Liikmed:<br />
* Märt Häkkinen<br />
* Karl Frank<br />
Meeskonna koduleht: [[Elibrium]]<br />
<br />
Prototüüp : http://enos.itcollege.ee/~mhakkine/CSharp/Elibrium.zip <br><br />
Prototüübi andmebaasi loomise juhend : http://enos.itcollege.ee/~mhakkine/CSharp/Juhend.txt<br />
<br />
Projekti TFS: https://m-hakkinen.visualstudio.com/Elibrium<br />
<br />
'''Retsensioonid'''<br />
*Analüüsi retsensioon meeskonnale '''Gurmaanid''' asub [https://wiki.itcollege.ee/index.php/Talk:Meeskond:_Gurmaanid siin]<br><br />
*Lõpptoote retsensioon meeskonnale '''D♭''' asub [https://wiki.itcollege.ee/index.php/Talk:Meeskond:_D%E2%99%AD'le siin]<br><br />
<br />
'''Lõpptoode''':<br />
http://enos.itcollege.ee/~mhakkine/CSharp/Elibrium.rar <br><br />
<br><br />
Link lõpptoote kasutusjuhendile asub [http://enos.itcollege.ee/~kfrank/Kasutusjuhend%20meeskond%20Elibrium%20l%C3%B5pptootele%20(1).pdf siin]<br />
<br />
===Meeskond: CozinHero ===<br />
Liikmed:<br />
* Taavi Metsvahi<br />
* Kai Kallastu<br />
Meeskonna koduleht: [[CozinHero]]<br />
<br />
Projekti TFS: https://metsvahi.visualstudio.com/CozinHero<br />
<br />
'''Retsensioonid'''<br />
<br />
Retsensioon meeskonnale [[Kuri Kohvikupidaja]] asub [https://wiki.itcollege.ee/index.php/Talk:Kuri_Kohvikupidaja siin]<br />
<br />
'''Prototüüp ja lõpptoode''' [https://drive.google.com/drive/folders/0BzgoTRmLgODvUHVwRU9FeDRybDQ?usp=sharing siin] <br />
Work in progress<br />
<br />
===Meeskond: Bank ===<br />
Liikmed:<br />
* Aleksei Kopõlov<br />
* Teet Adamson<br />
* Sander Perens<br />
* Tarvo Sbitnev<br />
Meeskonna koduleht: [https://wiki.itcollege.ee/index.php/Bank Bank]<br />
<br />
Projekti TFS: [https://perens.visualstudio.com/Projekt%20Bank/tiimi%20nimi Meeskond Bank]<br />
<br />
'''Retsensioonid'''<br />
Retsensiooni teinud meeskond Librarians: [https://wiki.itcollege.ee/index.php/Talk:Bank Retsensioon]<br />
<br />
'''Prototüüp'''<br />
Projekti esialgne prototüüp: [http://enos.itcollege.ee/~tadamson/Bank_projekt/Bank.rar Prototüüp]<br />
<br />
'''Lõpptoode'''<br />
Link Lõpptootele: [http://enos.itcollege.ee/~akopolov/Bank/Bank.rar SIIN]<br />
<br />
===Meeskond: ATDV===<br />
Liikmed:<br />
* Aldin Talve - arendaja<br />
* Delia Viirmaa - projektijuht<br />
* Mart-Erki Nõumees - arendaja<br />
<br />
Meeskonna koduleht: [[ATDV]]<br />
<br />
ADTV TFS: [https://dviirmaa.visualstudio.com/ATDV-raamatukogu/_dashboards/ ADTV SIIN]<br />
<br />
<br />
'''Retsensioonid'''<br />
<br />
Retsensioon meeskonna "Korter Kõrgel Künkal" toote analüüsile asub [https://wiki.itcollege.ee/index.php/Talk:Korterid_K%C3%B5rgel_K%C3%BCnkal siin]<br />
<br />
Retsensioon meeskonna "Librarians" lõppetootele asub<br />
[https://wiki.itcollege.ee/index.php/Talk:Librarians#L.C3.B5pptoote_retsensioon siin]<br />
<br />
'''Lõpptoode'''<br />
Lõpptoode : [http://enos.itcollege.ee/~mnoumees/ ATDV-raamatukogu.7z]<br />
<br />
===Meeskond: Sõnajalg===<br />
'''Liikmed''':<br />
* Argo Hansen<br />
* Ragnar Rästas<br />
'''Meeskonna koduleht:''' [[Sõnajalg]]<br />
<br />
'''Projekti TFS:''' [https://sonajalg-itk.visualstudio.com/ Sõnajalg-ITK]<br />
<br />
'''Retsensioonid:''''<br><br />
[https://wiki.itcollege.ee/index.php/S%C3%B5najalg#Retsensioon_meeskonna_B12_projektile Meeskonna "B12" retsensioon]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond:Gurmaanid===<br />
Liikmed:<br />
* Koit Kõrvel<br />
* Marko Kask<br />
* Brita Pentšuk<br />
* Ott Sõerumäe<br />
<br />
Meeskonna koduleht: [[Gurmaanid]]<br />
<br />
'''Retsensioonid''' <br><br />
Analüüsi retsensioon ATDV kohta [https://wiki.itcollege.ee/index.php/Talk:ATDV ATDV]<br />
<br />
'''Praegune Prototüüp!'''<br><br />
<br />
On saadaval siin lehe peal!<br />
<br><br />
http://enos.itcollege.ee/~kkorvel/CSharpProtot%C3%BC%C3%BCp2016Gurmaanid/<br />
<br />
'''Gurmaanide TFS versioonihaldus!'''<br><br />
https://gurmaanid.visualstudio.com/<br />
<br>'''Lõpptoode'''<br><br />
http://enos.itcollege.ee/~kkorvel/CSharpProject.rar<br />
<br />
===Meeskond: Korterid Kõrgel Künkal===<br />
Liikmed:<br />
* Edward Mardo<br />
Meeskonna koduleht: [[Korterid_Kõrgel_Künkal]]<br />
<br />
'''Retsensioonid'''<br />
Retsensiooni analüüsile teeb meeskond "ATDV"<br />
<br />
TODO<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Librarians===<br />
Liikmed:<br />
* Kerttu Liis Lootus<br />
* Lisandra Noor<br />
* Lisette Noor<br />
Meeskonna koduleht: [[Librarians]]<br />
<br />
Projekti TFS: https://klootus.visualstudio.com/Librarians<br />
<br />
Prototüüp: http://enos.itcollege.ee/~lnoor/CSharp/<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonna Bank poolt: https://wiki.itcollege.ee/index.php/Talk:Librarians<br />
<br />
Retsentsioon meeskonnale Bank [https://wiki.itcollege.ee/index.php/Talk:Bank Retsensioon]<br />
<br />
'''Lõpptoode'''<br />
<br />
Dokumentatsioon asub zip faili sees.<br />
<br />
http://enos.itcollege.ee/~linoor/CSHARP/<br />
<br />
===Meeskond: Brainery===<br />
Liikmed:<br />
* Madis Lugus<br />
* Elina Kuldkepp<br />
* Berit Põldoja<br />
* Taavi Teearu<br />
<br />
'''Koduleht:''' [[Brainery]]<br />
<br />
'''Retsensioonid:'''<br />
* [[Talk:Pirate_Netflix]]<br />
<br />
* [[Talk:Brainery]]<br />
<br />
'''TFS'''<br />
[https://tteearu.visualstudio.com/Brainery https://tteearu.visualstudio.com/Brainery]<br />
<br />
'''Prototüüp:'''<br />
[http://enos.itcollege.ee/~tteearu/c/BrainerySol.zip http://enos.itcollege.ee/~tteearu/c/BrainerySol.zip]<br />
<br />
'''Lõpptoode:'''<br />
[http://enos.itcollege.ee/~tteearu/c/Brainery.zip http://enos.itcollege.ee/~tteearu/c/Brainery.zip]<br />
<br />
===Meeskond: Rent A Book===<br />
Liikmed:<br />
* Aapo Kersalu<br />
* Kristjan Kotto<br />
* Paul John Niidas<br />
<br />
'''Meeskonna koduleht'''<br />
<br><br />
[[Rent A Book]]<br />
<br />
'''Retsensioonid'''<br />
<br><br />
[https://wiki.itcollege.ee/index.php/Rent_A_Book#Retsensioon Meeskonna "Forevernotes" retsensioon]<br />
<br />
'''Lõpptoode'''<br />
<br><br />
TODO<br />
<br />
'''TFS'''<br />
<br><br />
[https://rentabookproject.visualstudio.com/Rent%20A%20Book Rent A Book]<br />
<br />
===Meeskond: BMS===<br />
Liikmed:<br />
* Kert Kukk<br />
Meeskonna koduleht: [[BMS]]<br />
<br />
'''Retsensioonid'''<br />
TODO<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Dogify===<br />
Liikmed:<br />
* Roland Soosaar<br />
* Krista Norak<br />
* Mihkel Roots<br />
<br />
Meeskonna koduleht [[Dogify]]<br />
<br />
'''Projekti TFS:''' https://rososa.visualstudio.com/Dogify/<br />
<br />
'''Prototüüp'''<br />
Link prototüübile: http://enos.itcollege.ee/~rosoosaa/C%23_Project/<br />
<br />
'''Retsensioonid'''<br />
Link retsensioonile: https://wiki.itcollege.ee/index.php/Dogify#Meeskonna_.E2.80.9ESuperSalajane.E2.80.9D_anal.C3.BC.C3.BCsi_retsensioon<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: ForeverNotes===<br />
Liikmed:<br />
* Margus Muru<br />
* Joosep Koort<br />
* Martin Nigul<br />
Meeskonna koduleht: [[ForeverNotes]]<br />
<br />
Projekti TFS: [https://forevernotes.visualstudio.com/ForeverNotes SIIN]<br />
<br />
'''Retsensioonid'''<br />
https://wiki.itcollege.ee/index.php/Talk:ParkWell<br />
<br />
'''Prototüüp'''<br />
http://enos.itcollege.ee/~mmuru/<br />
<br />
'''Lõpptoode'''<br />
http://enos.itcollege.ee/~mmuru/ForeverNotes.zip<br />
<br />
===Meeskond: NullPointerException===<br />
Liikmed:<br />
* Kertu Nurmberg<br />
* Tõnis Piirits<br />
Meeskonna koduleht: [[NullPointerException]]<br />
<br />
'''Projekti TFS:''' https://null-pointer-exception.visualstudio.com/CSGO%20Triggerbot<br />
<br />
'''Retsensioonid'''<br />
<br />
Meeskond Rent A Book analüüsi retsensioon: https://wiki.itcollege.ee/index.php/Talk:Rent_A_Book<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~knurmber/CSharp/Projekt/]<br />
<br />
===Meeskond: SuperSalajane===<br />
Liikmed:<br />
*Sirle Maarja Allikas<br />
*Kaspar Kaal<br />
*Jaan Kastõgov<br />
*Rahel Kangur<br />
<br />
Meeskonna koduleht: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane<br />
<br />
Projekti TFS: https://supersalajane.visualstudio.com<br />
<br />
'''Analüüs'''<br />
<br />
Projekti analüüs: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane#Anal.C3.BC.C3.BCs_Supersalajane<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsi retsensioon: https://wiki.itcollege.ee/index.php/Meeskond:SuperSalajane#Meeskonna_.E2.80.9EDogify.E2.80.9D_anal.C3.BC.C3.BCsi_retsensioon<br />
<br />
'''Prototüüp'''<br />
<br />
'''Lõpptoode'''<br />
<br />
==Kaugõpe==<br />
<br />
===Meeskond: Autoparandaja===<br />
Liikmed:<br />
* Mihkel Viilveer<br />
Meeskonna koduleht: [[Autoparandaja]]<br />
<br />
'''Retsensioonid'''<br />
Analüüsi retsensioon [[Talk:FoodCab]]<br />
<br />
'''Prototüüp'''<br />
[https://1drv.ms/u/s!Atnv4O9QOXAsiuRwaKmsahFaKdQrvg Saab siit alla laadida]<br />
<br />
Meilide saatmiseks vaja konfigureerida Web.config alt järgnevad võtmed: smtpEmail, smtpPassword, smtpServer.<br />
<br />
'''Lõpptoode'''<br />
[https://1drv.ms/u/s!Atnv4O9QOXAsiuZw7RFU0Oxjk5EYWQ Saab siit alla laadida]<br />
<br />
<br />
'''TFS'''<br />
https://tostukid.visualstudio.com/autoparandaja/_git/Autoparandaja.NET<br />
<br />
===Meeskond: Paabel===<br />
''Liikmed:''<br />
* Rutt Lindström<br />
* Esta Prangel<br />
* Krista Rüütel<br />
* Liina Abner<br />
<br />
'''Meeskonna koduleht:''' [[Paabel]]<br />
<br />
'''Projekti TFS:''' [https://kristaryytel.visualstudio.com/Paabel TFS-i link]<br />
<br />
'''Prototüüp (14. detsembri seisuga):''' [http://enos.itcollege.ee/~labner/paabel/paabel.zip Prototüüp koos algandmete laadimiseks vajalike xml-dega]<br />
<br />
'''Retsensioonid'''<br />
TODO Projekti "Isearve" retsensioon: [[Talk:Isearve]]<br />
<br />
'''Lõpptoode (26.01.2016)''' [http://enos.itcollege.ee/~rlindstr/CSharp/ Lõpptoode (Paabel.zip) ning dokumentatsioon]<br />
<br />
===Meeskond: Agraarbeib===<br />
<br />
Liikmed:<br />
* Kaia Runthal<br />
* Marianne Trubetskoi<br />
* Taavi Tilk<br />
* Mihkel Matson<br />
<br />
Meeskonna koduleht: [[Agraarbeib]]<br />
<br />
Projekti TFS: https://kaia.visualstudio.com/MeieTalu<br />
<br />
'''Analüüs (01.11)'''<br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Analyys Analüüs Wikis]<br />
<br />
'''Analüüsi retsensioon (08.11)'''<br />
Retsenseeritav [[Talk:Elekter]]<br />
<br />
'''Prototüüp: 18.12 seisuga''' <br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Prototüüp Prototüüp]<br />
<br />
'''Lõpptoode (26.01) Saab alla laadida siit:''' <br />
[https://wiki.itcollege.ee/index.php/Agraarbeib/Lõpptoode Lõpptoode]<br />
<br />
'''Kasutusjuhendit näeb siit: <span class="plainlinks">[//docs.google.com/document/d/1vsXsnMsr9yUWbCMQwXC5o0Q0wsNu7HHvPjPskDvV5YQ/edit?usp=sharing:Link Kasutusjuhend]</span> ''' <br />
<br />
'''Lõpptoote retsensioon (27.01) TODO'''<br />
Agraarbeib lõpptoote retsensioon:[[Talk:DevHelp]]<br />
<br />
===Meeskond: MoneyG 1.0===<br />
Liikmed:<br />
* Liina Saar<br />
* Mart Raus<br />
* Ando Kiidron<br />
* Andres Kepler<br />
<br />
Meeskonna koduleht: [[MoneyG 1.0]]<br />
<br />
Projekti TFS: [http://452b.visualstudio.com]<br />
<br />
'''Prototüüp:''' [https://www.dropbox.com/sh/e34g2tst68asvk3/AAAqvzzhxv816i57yH1kHBS1a?dl=0 link prototüübile]<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsi retsensioon - [[Talk:Kingalaenutus]]<br />
<br />
Lõpptoote retsensioon - TODO<br />
<br />
'''Lõpptoode'''<br />
<br />
TODO<br />
<br />
===Meeskond: Laener===<br />
Liikmed:<br />
* Martin Kask - programmeerija<br />
* Marko Nõu - programmeerija<br />
* Anto Animägi - projektijuht<br />
<br />
Meeskonna koduleht: [[Laener]]<br />
<br />
Projekti TFS: [https://kaskmartin.visualstudio.com/Laener]<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonnale NullPointerException : [https://wiki.itcollege.ee/index.php/Talk:NullPointerException]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Vitamin C#===<br />
Liikmed:<br />
* Marko Belzetski<br />
* Rene Väli<br />
* Kaia Tomson<br />
<br />
Meeskonna koduleht: [[Vitamin C#]]<br />
<br />
Projekti TFS: [https://fevertree.visualstudio.com/Vitamiin%20Csharp https://fevertree.visualstudio.com/Vitamiin%20Csharp]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z]<br />
<br />
'''Retsensioonid'''<br />
TODO<br />
<br />
===Meeskond: Kingalaenutus===<br />
Liikmed:<br />
* Kristi Saare<br />
* Kersti Maurer<br />
* Liisi Taimre<br />
* Siim Pääro<br />
<br />
Meeskonna koduleht: [[Kingalaenutus]]<br />
<br />
'''projekti TFS: [https://kingalaenutus.visualstudio.com/Kingalaenutus Kingalaenutus]'''<br />
NB! Õppejõud lisatud itcollege aadressiga.<br />
<br />
'''Retsensioonid: '''<br />
Retsensioon projektile [https://wiki.itcollege.ee/index.php/Talk:Rahaplaneerija Rahaplaneerija]<br />
<br />
'''Prototüüp'''<br />
[http://enos.itcollege.ee/~ltaimre/KingalaenutusPrototyyp/ Link prototüübile]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~ltaimre/Kingalaenutus/ Link lõpptootele]<br />
<br />
===Meeskond: Isearve ===<br />
Liikmed:<br />
* Siim Kallari<br />
* Priit Tiganik<br />
<br />
Meeskonna koduleht: [[Isearve]]<br />
<br />
Projekti TFS: [https://isearve.visualstudio.com/IseArve https://isearve.visualstudio.com/IseArve]<br />
<br />
Projekti Prototüüp: [https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU]<br />
<br />
<br />
'''Meie kirjutatud retsensioon'''<br />
[[Talk:Ajamasin]]<br />
<br />
'''Meie tööle kirjutatud retsensioon'''<br />
[[Talk:Isearve]]<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE]<br />
<br />
===Meeskond: DevHelp===<br />
Liikmed:<br />
* Martin Jääger<br />
* Mikk Erlenheim<br />
* Kristo Leemets<br />
Meeskonna koduleht: [[DevHelp]]<br />
<br />
'''Retsensioonid'''<br />
Projekti Garden of Towers analüüsi retsensioon:[[Talk:Garden of Towers]]<br />
<br />
'''Prototüüp (18. detsembri seisuga):''' [http://enos.itcollege.ee/~kleemets/II%20semester/Programmeerimine%20C%23%20keeles/DevHelpProto/ Prototüübi link]<br />
<br />
'''Lõpptoode'''<br />
[http://enos.itcollege.ee/~kleemets/II%20semester/Programmeerimine%20C%23%20keeles/DevHelp/ Lõpptoode]<br />
<br />
Projekti TFS: [https://devhelp.visualstudio.com/]<br />
<br />
===Meeskond: Elekter ===<br />
'''Liikmed:'''<br />
* Sigrid Aasma<br />
* Kristo Oidermaa<br />
* Tiit Post<br />
<br />
'''Meeskonna koduleht:''' [[Elekter]]<br />
<br />
'''Projekti TFS:''' [https://elekter.visualstudio.com/i243Elekter/ https://elekter.visualstudio.com/i243Elekter]<br />
<br />
'''Retsensioon:''' Projekt FoodBytes [[Talk:FoodBytes]]<br />
<br />
'''Prototüüp:''' [https://drive.google.com/open?id=0B13XA4AyIfQNc05vSi1UNTRsbkU link]<br />
<br />
'''Lõpptoode:''' [https://drive.google.com/drive/folders/0B6rC6xduz_u4RXN2ZDNVVTRLeUU link]<br />
<br />
===Meeskond: Battle2048===<br />
Liikmed:<br />
*Andrus Seiman<br />
*Kristjan Peterson<br />
<br />
Meeskonna koduleht: [[Battle2048]]<br />
<br />
Projekti TFS:<br />
https://battle2048.visualstudio.com/<br />
<br />
'''Retsensioonid'''<br />
<br />
Analüüsile: [[Talk:Vitamin_C]]<br />
<br />
Lõpptootele: TODO<br />
<br />
'''Prototüüp''' [https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_prototype.zip link]<br />
<br />
'''Lõpptoode''' [https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_final.zip link]<br />
<br />
===Meeskond: EasyDesk===<br />
Liikmed:<br />
* Marju Pütsepp<br />
<br />
Meeskonna koduleht: [[EasyDesk]]<br />
<br />
Projekti TFS: https://marjup.visualstudio.com/EasyDesk<br />
<br />
'''Retsensioonid'''<br />
* Projekti "Agraarbeib" analüüsi retsensioon: [[Talk:Agraarbeib]]<br />
<br />
'''Prototüüp:''' http://enos.itcollege.ee/~mputsepp/<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Ajamasin===<br />
Liikmed:<br />
* Liina Hellerma<br />
* Teele Sepman<br />
<br />
Meeskonna koduleht:[[Ajamasin]]<br />
<br />
Projekti TFS: https://teelesepman.visualstudio.com/Ajamasin/ (https://ajamasin.visualstudio.com/Ajamasin)<br />
<br />
'''Retsensioonid''':<br />
Analüüsi retsensioon: [https://wiki.itcollege.ee/index.php/Talk:OnTime OnTime]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Jarvis===<br />
Liikmed:<br />
<br />
* Grigori Palamartšuk - Scrum Master & Product owner<br />
* Andrei Grigorjev - arendaja<br />
* Artyom Likhachev - arendaja<br />
* Maksim Tšeljabov - arendaja<br />
<br />
Meeskonna koduleht: [https://wiki.itcollege.ee/index.php/JARVIS Jarvis]<br />
<br />
Projekti TFS: [https://grigorip.visualstudio.com/Jarvis Jarvis]<br />
<br />
'''Retsensioonid'''<br />
TBD<br />
<br />
'''Lõpptoode'''<br />
TBD<br />
<br />
===Meeskond: TikTokTek===<br />
Liikmed:<br />
* Eva Ibrus<br />
* Rain Saarmäe<br />
'''Meeskonna koduleht'''<br />
[[TikTokTek]]<br />
<br />
'''TFS'''<br />
https://tiktoktek.visualstudio.com<br />
<br />
'''Retsensioonid'''<br />
[[Talk:Battle2048]]<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: Rahaplaneerija===<br />
Liikmed:<br />
* Maila Keerus<br />
* Kersti Miller<br />
* Evelin Jõgi<br />
<br />
Meeskonna koduleht:<br />
[[Rahaplaneerija]]<br />
<br />
Projekti TFS: [https://rahaplaneerija.visualstudio.com/Rahaplaneerija Rahaplaneerija]<br />
<br />
'''Retsensioonid''':<br />
[[Talk:EasyDesk]]<br />
<br />
'''Prototüüp''':<br />
18.12. seisuga: [http://enos.itcollege.ee/~ejogi/Rahaplaneerija/ Rahaplaneerija prototüüp]<br />
<br />
'''Lõpptoode''':<br />
27.01. seisuga: [http://enos.itcollege.ee/~ejogi/Rahaplaneerija/ Rahaplaneerija lõpptoode]<br />
<br />
===Meeskond: Garden of Towers===<br />
Liikmed:<br />
* Nele Sergejeva<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/Garden_of_Towers<br />
<br />
Projekti TFS: https://gardenoftowers.visualstudio.com/<br />
<br />
'''Retsensioonid'''<br />
Laener meeskonna retsensioon: https://wiki.itcollege.ee/index.php/Talk:Laener<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: FoodCab===<br />
Liikmed:<br />
* Mario Mustasaar<br />
* Peeter Ploom<br />
* Rain Elken<br />
* Roland Türi<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/FoodCab<br />
<br />
Projekti TFS: https://foodcab.visualstudio.com/<br />
<br />
Protüüp 18.12 seisuga asub [https://www.dropbox.com/sh/jxh7gtwvbr3ba7p/AAC3gTpcfFi1dY3WVhdxIZC3a?dl=0 siin]<br />
<br />
'''Retsensioonid''' <br />
* Retsensioon meeskonna Paabel projekti analüüsile asub [https://wiki.itcollege.ee/index.php/Talk:Paabel siin]<br />
<br />
'''Lõpptoode'''<br />
* Kood ja muud failid dropboxis asub [https://www.dropbox.com/sh/qi4xyyidvtu8z49/AABNVDg4Au_mpCN8VzSWIBc_a?dl=0 siin]<br />
Täieneb veel 27.01 jooksul<br />
<br />
===Meeskond: MyLibrary===<br />
Liikmed:<br />
* Madis Uudam - projektijuht, arendaja<br />
* Olle Mikk - arendaja<br />
<br />
Meeskonna koduleht: https://mylibrary16.wordpress.com/<br />
<br />
Projekti TFS:<br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
=== Meeskond: OnTime ===<br />
'''Liikmed''':<br />
*Tatjana Kruglova<br />
<br />
'''Meeskonna koduleht''':<br />
[https://wiki.itcollege.ee/index.php/OnTime OnTime Wiki]<br />
<br />
'''Projetki TFS''': <br />
[https://ontimekruglova.visualstudio.com/OnTime/ OnTime TFS]<br />
<br />
'''Retsensioonid''': <br />
[https://wiki.itcollege.ee/index.php/Talk:TikTokTek TikTokTek]<br />
<br />
'''Prototüüp'''<br />
[https://drive.google.com/drive/folders/0By340FvSRdiVSnVRNWFaUG9iSGM?usp=sharing OnTime Prototüüp]<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0By340FvSRdiVSnVRNWFaUG9iSGM OnTime]<br />
<br />
=== Meeskond: FoodBytes ===<br />
Liikmed:<br />
*Aet Udusaar<br />
*Taavi Põder<br />
<br />
Meeskonna koduleht:<br />
https://wiki.itcollege.ee/index.php/FoodBytes<br />
<br />
Projekti TFS: https://foodbytes.visualstudio.com/FoodBytes/<br />
<br />
'''Retsensioonid'''<br />
Retsensioon meeskonna [https://wiki.itcollege.ee/index.php/Talk:Autoparandaja Autoparandaja analüüsile] <br />
<br />
'''Lõpptoode'''<br />
TODO<br />
<br />
===Meeskond: SeDuM===<br />
Liikmed:<br />
*Liina Laumets <br />
<br />
Meeskonna koduleht: [[Meeskond: SeDuM]]<br />
<br />
Projekti TFS:<br />
<br />
'''Retsensioonid'''<br />
<br />
'''Prototüüp'''<br />
<br />
'''Lõpptoode'''<br />
<br />
===Meeskond: Koeraplats===<br />
'''Liikmed:''' <br />
* Maie Jeltsova<br />
'''Meeskonna koduleht:'''<br />
https://wiki.itcollege.ee/index.php/Koeraplats<br />
<br />
'''Projekti TFS:''' <br />
https://koeraplats.visualstudio.com/<br />
<br />
'''Retsensioonid''' TODO<br />
<br />
'''Prototüüp''' TODO<br />
<br />
'''Lõpptoode''' TODO<br />
<br />
<br />
===Meeskond: Just Another Library===<br />
<br />
Liikmed:<br />
<br />
* Maksim Tseljabov<br />
<br />
Meeskonna koduleht: https://wiki.itcollege.ee/index.php/Just_Another_Library<br />
<br />
Projekti TFS: https://maksimc.visualstudio.com/Library<br />
<br />
Retsensioonid TBD<br />
<br />
Lõpptoode TBD</div>Ptiganikhttps://wiki.itcollege.ee/index.php?title=Isearve&diff=117214Isearve2017-01-27T12:04:18Z<p>Ptiganik: /* Meeskond ja rollid */</p>
<hr />
<div>== Meeskond ja rollid ==<br />
<br />
* Priit Tiganik<br />
* Siim Kallari<br />
<br />
Projekti TFS: [https://isearve.visualstudio.com/IseArve https://isearve.visualstudio.com/IseArve]<br />
<br />
'''Analüüs''' 2016-10-15<br />
[https://wiki.itcollege.ee/index.php/Isearve_analyys https://wiki.itcollege.ee/index.php/Isearve_analyys]<br />
<br />
'''Meie kirjutatud retsensioon'''<br />
[https://wiki.itcollege.ee/index.php/Talk:Ajamasin https://wiki.itcollege.ee/index.php/Talk:Ajamasin]<br />
<br />
'''Väga asjalik retsensioon meie analüüsile'''<br />
[https://wiki.itcollege.ee/index.php/Talk:Isearve https://wiki.itcollege.ee/index.php/Talk:Isearve]<br />
<br />
Projekti Prototüüp: [https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU https://drive.google.com/open?id=0B6C5fjWH2LC1OEQxQVdpYUlBUkU]<br />
<br />
<br />
'''Lõpptoode'''<br />
[https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE https://drive.google.com/open?id=0B6C5fjWH2LC1d3Ztc3hlWFN1cEE]<br />
<br />
== Lõpptoote kasutusjuhend ==<br />
<br />
* Programmi esmakordsel käivitamisel on kasutajal mõistlik Main vaates ära täita enda andmete blokk: nimi, ettevõtte rekvisiidid, pangaarve. Peale andmete salvestamist on need programmis alati olemas ning pele seda on võimalik hakata kasutama Isearve muud funktsionaalsus<br />
* Main vaates on kaks sakki: olemasolevate arvete ja partnerite vaatlemiseks. Programmi esmakordsel käivitamisel on need tühjad. Edasi saab liikuda kahel viisil, kas lisades arve või lisades partneri.<br />
* Kliki "lisa arve" ning täida avanevas aknas tühjad ja vajaminevad andmed ostja, arve ja müügi kohta. Uue müügrea lisamiseks vajuta "Lisa rida"<br />
* Kui arve on täidetud, on soovitatav see salvestada, vajuta "Salvesta". Arve lisamise aknas on veel kaks nuppu "Ekspordi PDFi" ning "Ekspordi XMLi". Nende abil on võimalik lahti olev arve salvestada kas PDF või XML formaati. Vaikimisi pakutakse salvestamise asukohaks kasutaja dokumente, kuid nii asukohta kui lõplikku faili nime saab kasutaja muuta.<br />
* Main vaate arvete sakis saab arveid selekteerida ja otse faili eksportida. Saab ka vajutada "Kopeeri", mis avab selekteeritud arve andmetega uue arve lisamise akna. Soovi korral saab selles teha kiireid muudatusi ning siis see täiesti uue arvena salvestada ja eksportida.<br />
* Main vaate partnerite sakis saab vaadelda salvestatud partnereid. Kui selles aknas selekteerida mingi partner ning vajutada "Lisa arve", avaneb uus arve lisamise aken, kus ostja väljad on eelnevalt selekteeritud partneri andmetega täidetud. Topeltklikk partneril avab partneri enda muutmise akna.<br />
<br />
== Idee ==<br />
XML e-arvete ja PDF arvete koostamise programm väike-ettevõtetele ja MTÜdele WPF tehnoloogial. Midagi sarnast nagu [http://www.arvetehas.ee/ http://www.arvetehas.ee/], kuid rakendus asub kasutaja arvutis. E-arvete kohta lisainfot [http://www.pangaliit.ee/et/arveldused/e-arve http://www.pangaliit.ee/et/arveldused/e-arve]<br />
<br />
Projekti TFS: https://isearve.visualstudio.com/IseArve<br />
<br />
== Rakenduse must-have sisu ==<br />
* Ülevaade eelmistest arvetest. <br />
* Võib sisestada uue partneri. <br />
* Alustab uue arve loomist nullist või võtab aluseks mõne eelmise arve.<br />
* Salvestab andmebaasi uue arve. <br />
* Genereerib valitud arvest PDFi või e-arve XMLi.<br />
* Ülevaade eelmistest arvetest koos filtritega: partner, kuupäevad jne.<br />
* Arvete tasumise ülevaade: saab käsitsi märkida tasutuks<br />
<br />
== Nice-to-have lisad ==<br />
* Kui ühes ettevõttes on palju erinevaid arvete loojaid, siis võimalik eksportida ja importida arvete templiite: ettevõtte rekvisiidid, kujundus. <br />
* Võimalik importida ja eksportida partnerite nimekiri.<br />
* Arve saadetakse e-mailiga otse kliendile, kui vastav linnuke on valitud.<br />
<br />
== Workload ==<br />
=== 26.01.2017 ===<br />
Viimased parandused ja väikesed täiendused said Priidyu poolt tehtud. Pöidlad pihus<br />
<br />
=== 22.01.2017 ===<br />
Priit parandas koodi peale prototüübi tagasisidet: keel sai veidi ühtlasemaks ning vormilt ei loeta andmeid enam indeksite alusel vaid bindingut kasutades. Sai implementeeritud üks lihtne logimine tegevustele, mis salvestavad, kas siis DBsse või faili.<br />
<br />
=== 20.01.2017 ===<br />
Priit täiendas XML ja PDF genereerimist sellega, et kasutaja saab ise sobiva kausta ja failinime valida<br />
<br />
=== 18.01.2017 ===<br />
Siim parandas hulga bugisid ning täiendas funktsionaalsust sellega, et nüüd saab partnerite aknast partnerit valides ja seejärel "Lisa arve" nuppu vajutades sellele partnerile arve lisada<br />
<br />
=== 17.01.2017 ===<br />
Töönädala öötöö. Priit kulutas tunde, et mõista, kuidas Bindingu ja INotifyPropertyChanged abil saaks arve peal olevaid müügiridade summasid arvutada. Lõpuks läks summade arvutamine müügirea objekti setterisse ning sinnasamasse sai lisatud ka arvutuse aluseks olevate atribuutide muudatuste jälgijad. Lisaks prindib XML nüüd reaalseid arveid välja, enne oli tegu näidis-andmetega.<br />
Siim tegeles ühe vastiku bugiga, kus arve kuupäev andmebaasi ei jõudnud. Lisaks töötab kasutaja salvestamine. Nüüd saab arvet ka kopeerida ning PDFi genereerida otse Main ehk arvete ülevaate vaatest. Siim lisas ka palju andmete sisestuse kontrolle ning parandas väiksemaid ja suuremaid muid bugisid.<br />
<br />
=== 16.01.2017 ===<br />
Kuni viimase nädalavahetseni enne projekti esitamist tegelesime veel teiste ainete kodutöödega ning ootasime prototüübile tagasisidet. Kui viimast saabunud ei olnud, asusime kiiresti tööle. Nädalavahetusel 14.-15. jaanuar saime Siimuga kokku ning kirjutasime-kirjutasime. Selgus, et oleks võinud ikkagi esialgset skoopi väiksemana ette kujutada. Sellegipoolest midagi sai sellest ka tehtud.<br />
<br />
Priit tegeles peamiselt XMLi ja PDFi välja trükkimisega. Kuna mõlema loomine käib erinevaid võtteid kasutades ja on andmetihedad, siis võttis andmete mappimine üpris kaua aega. XMLi serialiseerimise puhul oli lisaks tarvis luua ka eraldi klasside puu, mis vastaks e-arve XML-i struktuurile.<br />
<br />
Siim tegeles prototüübist välja jäänud andmete kirjutamise ja lugemisega vormilt. Selgus, et ListView puhul pole vaikimisi ette nähtud võimalust selle elemente TextBox-i laadselt muuta. Meil asus aga arve müügi rida ListViews ning seetõttu oli vaja leida meile kohandatud lahendus. Siim sai sellega loomulikult hakkama. Siim arendas veel arve müügiridade lugemise Invoice aknas, arvete kuvamise ja kasutaja lisamise MainWindowisse.<br />
<br />
Aeg-ajalt põrkasime arenduse käigus kokku ka analüüsi ja prototüüpimise käigus sisse jäetud põhimõtteliste vigadega. Küll oli mõni DB andmetüüp vale, küll ei olnud osa funktsionaalsust korralikult enda jaoks lahti seletanud või läbi mõelnud. Kõikide nende väikeste vigade lahendamine võttis oma aja.<br />
<br />
=== 18.12.2016 ===<br />
Esitasime prototüübi.<br />
Prototüübis on loodud meie töö kohta esitatud retsensiooni põhjal täiendatud andmebaas koos Domainiga, olemas on peamised vaated ning lihtsamad neist ka töötavad. Viimase all peame silmas seda, et aken "Lisa partner" salvestab uue partneri andmebaasi ning Main windowis sakis Partnerid ka enam-vähem kuvatakse salvestatud partnereid. <br />
Projekti koodis on prototüübi hetkel palju lõpuni kirjutamata või isegi üleliigseid funktsioone-kommentaare, kuid meie arvates võiks klasside arv ja sisu olla pea-aegu lõplik: vaja ainult funktsionaalsust juurde kirjutada. Üks erand on see, et BO-d tõmbame veel sedavõrd kokku, et ilmselt jääb neid alles kolm: CompanyBO meie arve partneri tarvis, InvoiceBO kõigele sellele, mida ühe arve pealt leida võib, ning lõpuks UserBO, et kätte saada arve peale mineva programmi kasutaja rekvisiidid.<br />
<br />
=== 13.11.2016 ===<br />
Retsenseerisime Ajamasinat, loomulikult jäi see töö praktiliselt viimasele minutile... Lugesime ka enda retsensiooni ning saime palju uusi häid mõtteid, mida analüüsi ja projekti raames paremaks teha ning millele peaks tähelepanu pöörama. See on kindlasti abiks projekti edukale valmimisele.<br />
<br />
=== 03.11.2016 ===<br />
Priit täiendas analüüsi andmebaasi osaga<br />
<br />
=== 15.10.2016 ===<br />
Koosolek vaadete teemal. Käisime läbi Priidu ja Siimu ideed, kuidas kodutöö view peaks koos esialgse funktsionaalsusega välja nägema. Joonistasime pilte ja jõudsime visioonis kokkuleppele. Siim tegi esimese Main View vormi ning Priit pani arutelu analüüsina kirja.<br />
<br />
=== 8.10.2016 ===<br />
Mõtleme juba analüüsi peale, leht [[Isearve_analyys]]<br />
<br />
=== 8.10.2016 ===<br />
Wiki, projekti idee, visioon rakendusest ja sisust<br />
<br />
=== 5.10.2016 ===<br />
Meeskonna loomine, Siim andis hea mõtte kodutöö sisuks</div>Ptiganik