Pillarofautumn: Difference between revisions
(30 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
* Taavi Põder | * Taavi Põder | ||
* Raido Vell | * Raido Vell | ||
* Taavi Vesinurm | * Taavi Vesinurm - [RIP] | ||
Team Foundation Version Control: | Team Foundation Version Control: [[https://pillarofautumn.visualstudio.com/Pillarofautumn/Pillarofautumn%20Team/_git/Pillarofautumn?_a=contents]] | ||
==Analüüs== | ==Analüüs== | ||
Antud projekti korral on tegemist arsti visiitide registreerimise süsteemiga, mille erinevateks kasutajateks on siis arstid ja nende patsiendid. Süsteem võimaldab patsiendil valida arsti ning registreerida aeg, kui see pole varasemalt juba võetud. Registreerimine on võimalik anonüümselt ilma kontot omamata. Samas on võimalik luua konto, et näha endaga seotud varasemaid arstile pöördumisi, ning konkreetse visiidiga seotud arsti poolseid tähelepanekuid. | |||
===Kasutajad=== | ===Kasutajad=== | ||
* Arstid | |||
* Kliendid | |||
===Funktsionaalsus=== | ===Funktsionaalsus=== | ||
Line 21: | Line 26: | ||
* Kasutaja muutmine | * Kasutaja muutmine | ||
* Kasutaja kustutamine. | * Kasutaja kustutamine. | ||
* Protseduuri ... | |||
* Kliiniku ... | |||
* Visiidi tüübi ... | |||
Otsin: | Otsin: | ||
Line 41: | Line 49: | ||
* Andmebaasi pöördumised on piiratud. | * Andmebaasi pöördumised on piiratud. | ||
==== Nice to have: ==== | ==== Nice to have: ==== | ||
Line 62: | Line 69: | ||
(1) - Kasutaja visiitide otsingud nii arsti kui tavakasutaja nime järgi. | (1) - Kasutaja visiitide otsingud nii arsti kui tavakasutaja nime järgi. <br> | ||
(2) - Arstil on võimekus muuta tavakasutaja aegu. | (2) - Arstil on võimekus muuta tavakasutaja aegu. | ||
===Andmemudel=== | ===Andmemudel=== | ||
[[File:Erdnewsmaller.png]] | |||
==Retsensioonid== | ==Retsensioonid== | ||
Retsensioonid | Retsensioonid tegime Meeskonna VariousArtist kohta. Seda nii XML kui veebi- ja klientrakenduse kohta.<br> | ||
'''XML'''<br> | |||
VariousArtist meesokonna poolt loodud XML vastab ettenähtud tingimustele. Tagatud on minimaalse nõude kohane rohkem kui neli dimensiooni ning vähemalt kolmel neist leidub rohkem kui ID attribuut. | |||
Täpsemalt siis book, author ja category vastavalt viie, kahe ja kahe atribuudiga. Tagide vaheliste väärtuste kandmiseks on kasutatud CDATA, mis garanteerib, et seal asuvat väärtust ei loeta kui | |||
XML markup-i isegi kui ta selline välja näeb. Antud faili piires retsenseerija ei leidnud konkreetset väärtust, mida võiks segamini ajada XML-i markupiga. Seega jääb CDATA antud juhul silmaringi | |||
laiust näitavaks tähiseks. | |||
Dokument loob vajaliku XML-i. Erinevate väljade puhul on määratud kohustuslikus või valikuline (required/optional).Üldoontes näeb viisakas välja, on korralikult tabuleeritud | |||
ning karjuvaid vigu retsenseerija ei leidnud.<br> | |||
''XSD testimiseks kasutatud -'' http://xsd2xml.com/ | |||
Mõlemad XSLT on korrektsed ning vastavad ettenähtud retsenseerija arvates nõuetele. | |||
==XML== | |||
'''XML''' | |||
XML näidise lõime 1 visiidi näitel. Illustreerivatel eesmärkidel, ei hakanud duubeldama. | |||
<source lang="xml"> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Appointments> | |||
<Appointment id="1" app_date="05/01/2018" length="00:30"> | |||
<appointment_type id="1"> | |||
<name>Esmakordne visiit</name> | |||
<description>Suuõõne ülevaatus ja konsultatsioon.</description> | |||
</appointment_type> | |||
<person1 id="1" citizen_id="32554694115" > | |||
<firstname> James </firstname> | |||
<surname> Bond </surname> | |||
<middlename></middlename> | |||
<Contacts> | |||
<Contact id="1" type="phone" value =""></Contact> | |||
<Contact id="2" type="email" value ="J.Bond@SIS.uk"></Contact> | |||
<Contact id="3" type="address"> | |||
<address> | |||
<city>London</city> | |||
<street>Whitehall</street> | |||
<house> 25 </house> | |||
<apartment> 5 </apartment> | |||
</address> | |||
</Contact> | |||
</Contacts> | |||
</person1> | |||
<person2 id="2" citizen_id="36522141652" > | |||
<firstname> Frederick </firstname> | |||
<surname> Aldeman </surname> | |||
<middlename>Ender</middlename> | |||
<Contacts> | |||
<Contact id ="1" type="phone" value=""></Contact> | |||
<Contact id="2" type="email" value="F.E.Aldeman@gmail.com"></Contact> | |||
<Contact id="3" type="Address"> | |||
<address> | |||
<city> Wyoming </city> | |||
<street>Elm street</street> | |||
<house> 112 </house> | |||
<apartment> 5 </apartment> | |||
</address> | |||
</Contact> | |||
</Contacts> | |||
</person2> | |||
</Appointment> | |||
</Appointments> | |||
</source> | |||
'''XML Schema''' | |||
<source lang="xml"> | |||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
<xs:element name="Appointments"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Appointment"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="appointment_type"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="name"/> | |||
<xs:element type="xs:string" name="description"/> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="person1"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="firstname"/> | |||
<xs:element type="xs:string" name="surname"/> | |||
<xs:element type="xs:string" name="middlename"/> | |||
<xs:element name="Contacts"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Contact" maxOccurs="unbounded" minOccurs="0"> | |||
<xs:complexType mixed="true"> | |||
<xs:sequence> | |||
<xs:element name="address" minOccurs="0"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="city"/> | |||
<xs:element type="xs:string" name="street"/> | |||
<xs:element type="xs:float" name="house"/> | |||
<xs:element type="xs:float" name="apartment"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="optional"/> | |||
<xs:attribute type="xs:string" name="type" use="optional"/> | |||
<xs:attribute type="xs:string" name="value" use="optional"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="required"/> | |||
<xs:attribute type="xs:long" name="citizen_id"/> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="person2"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="firstname"/> | |||
<xs:element type="xs:string" name="surname"/> | |||
<xs:element type="xs:string" name="middlename"/> | |||
<xs:element name="Contacts"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Contact" maxOccurs="unbounded" minOccurs="0"> | |||
<xs:complexType mixed="true"> | |||
<xs:sequence> | |||
<xs:element name="address" minOccurs="0"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element type="xs:string" name="city"/> | |||
<xs:element type="xs:string" name="street"/> | |||
<xs:element type="xs:float" name="house"/> | |||
<xs:element type="xs:float" name="apartment"/> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="optional"/> | |||
<xs:attribute type="xs:string" name="type" use="optional"/> | |||
<xs:attribute type="xs:string" name="value" use="optional"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="required"/> | |||
<xs:attribute type="xs:long" name="citizen_id"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
<xs:attribute type="xs:int" name="id" use="required"/> | |||
<xs:attribute type="xs:string" name="app_date" use="required"/> | |||
<xs:attribute type="xs:string" name="length" use="required"/> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> | |||
</source> | |||
==Muudatused== | ==Muudatused== | ||
Wiki lehe struktuur 31.03.18 12:00 | Wiki lehe struktuur 31.03.18 12:00 <br> | ||
Analüüsi Must ja nice to have funktsionaalsus 31.03.18 16:00 <br> | |||
Funktsionaalsuse täiendus 17.04.18 21:00 <br> | |||
XML example 05.06.18 19:00 <br> | |||
XSD example 05.06.18 20:00 <br> |
Latest revision as of 20:17, 11 June 2018
Meeskonnaliikmed
- Taavi Põder
- Raido Vell
- Taavi Vesinurm - [RIP]
Team Foundation Version Control: [[1]]
Analüüs
Antud projekti korral on tegemist arsti visiitide registreerimise süsteemiga, mille erinevateks kasutajateks on siis arstid ja nende patsiendid. Süsteem võimaldab patsiendil valida arsti ning registreerida aeg, kui see pole varasemalt juba võetud. Registreerimine on võimalik anonüümselt ilma kontot omamata. Samas on võimalik luua konto, et näha endaga seotud varasemaid arstile pöördumisi, ning konkreetse visiidiga seotud arsti poolseid tähelepanekuid.
Kasutajad
- Arstid
- Kliendid
Funktsionaalsus
Must have:
CRUD:
- Visiidi loomine
- Visiidi vaatamine
- Visiidi muutmine
- Visiidi kustutamine
- Kasutaja loomine
- Kasutaja vaatamine
- Kasutaja muutmine
- Kasutaja kustutamine.
- Protseduuri ...
- Kliiniku ...
- Visiidi tüübi ...
Otsin:
- Kasutaja nime järgi (1)
Statistika:
- Sisselogimiste koguarv
- Kasutaja visiitide koguarv
- Kasutaja aktiivsete visiitide koguarv
Registreermise nõuded:
- Visiidi aeg on 30 minutit.
- Topelt broneeringuid ei ole.
- Visiitide ajad jäävad 10:00-16:00, esmaspäevast reedeni.
- Visiidi aeg ei tohi olla minevikus.
- Arstide valik on drop down menüüs.
Turvalisus:
- Andmebaasi väljade omavad piiranguid.
- Andmebaasi pöördumised on piiratud.
Nice to have:
Teavitused:
- Tervitus sõnum esmase sisselogimise korral.
- Teavitus sõnum korduval sisselogimisel.
- Teavitused tulevasest visiidist.
- Teavitus kustutatud visiidist.
- teavitus uue visiidi loomisest.
- Valik saada teavitusi.
Statistika:
- Ära olnud visiitide arv.
Integratsioon:
- Google kalender sync.
CRUD:
- Kasutaja saab muuta Kasutaja visiidi aegu.(2)
(1) - Kasutaja visiitide otsingud nii arsti kui tavakasutaja nime järgi.
(2) - Arstil on võimekus muuta tavakasutaja aegu.
Andmemudel
Retsensioonid
Retsensioonid tegime Meeskonna VariousArtist kohta. Seda nii XML kui veebi- ja klientrakenduse kohta.
XML
VariousArtist meesokonna poolt loodud XML vastab ettenähtud tingimustele. Tagatud on minimaalse nõude kohane rohkem kui neli dimensiooni ning vähemalt kolmel neist leidub rohkem kui ID attribuut.
Täpsemalt siis book, author ja category vastavalt viie, kahe ja kahe atribuudiga. Tagide vaheliste väärtuste kandmiseks on kasutatud CDATA, mis garanteerib, et seal asuvat väärtust ei loeta kui
XML markup-i isegi kui ta selline välja näeb. Antud faili piires retsenseerija ei leidnud konkreetset väärtust, mida võiks segamini ajada XML-i markupiga. Seega jääb CDATA antud juhul silmaringi
laiust näitavaks tähiseks.
Dokument loob vajaliku XML-i. Erinevate väljade puhul on määratud kohustuslikus või valikuline (required/optional).Üldoontes näeb viisakas välja, on korralikult tabuleeritud
ning karjuvaid vigu retsenseerija ei leidnud.
XSD testimiseks kasutatud - http://xsd2xml.com/
Mõlemad XSLT on korrektsed ning vastavad ettenähtud retsenseerija arvates nõuetele.
XML
XML XML näidise lõime 1 visiidi näitel. Illustreerivatel eesmärkidel, ei hakanud duubeldama.
<?xml version="1.0" encoding="utf-8"?>
<Appointments>
<Appointment id="1" app_date="05/01/2018" length="00:30">
<appointment_type id="1">
<name>Esmakordne visiit</name>
<description>Suuõõne ülevaatus ja konsultatsioon.</description>
</appointment_type>
<person1 id="1" citizen_id="32554694115" >
<firstname> James </firstname>
<surname> Bond </surname>
<middlename></middlename>
<Contacts>
<Contact id="1" type="phone" value =""></Contact>
<Contact id="2" type="email" value ="J.Bond@SIS.uk"></Contact>
<Contact id="3" type="address">
<address>
<city>London</city>
<street>Whitehall</street>
<house> 25 </house>
<apartment> 5 </apartment>
</address>
</Contact>
</Contacts>
</person1>
<person2 id="2" citizen_id="36522141652" >
<firstname> Frederick </firstname>
<surname> Aldeman </surname>
<middlename>Ender</middlename>
<Contacts>
<Contact id ="1" type="phone" value=""></Contact>
<Contact id="2" type="email" value="F.E.Aldeman@gmail.com"></Contact>
<Contact id="3" type="Address">
<address>
<city> Wyoming </city>
<street>Elm street</street>
<house> 112 </house>
<apartment> 5 </apartment>
</address>
</Contact>
</Contacts>
</person2>
</Appointment>
</Appointments>
XML Schema
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Appointments">
<xs:complexType>
<xs:sequence>
<xs:element name="Appointment">
<xs:complexType>
<xs:sequence>
<xs:element name="appointment_type">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:string" name="description"/>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="person1">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="firstname"/>
<xs:element type="xs:string" name="surname"/>
<xs:element type="xs:string" name="middlename"/>
<xs:element name="Contacts">
<xs:complexType>
<xs:sequence>
<xs:element name="Contact" maxOccurs="unbounded" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="address" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="city"/>
<xs:element type="xs:string" name="street"/>
<xs:element type="xs:float" name="house"/>
<xs:element type="xs:float" name="apartment"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="required"/>
<xs:attribute type="xs:long" name="citizen_id"/>
</xs:complexType>
</xs:element>
<xs:element name="person2">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="firstname"/>
<xs:element type="xs:string" name="surname"/>
<xs:element type="xs:string" name="middlename"/>
<xs:element name="Contacts">
<xs:complexType>
<xs:sequence>
<xs:element name="Contact" maxOccurs="unbounded" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="address" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="city"/>
<xs:element type="xs:string" name="street"/>
<xs:element type="xs:float" name="house"/>
<xs:element type="xs:float" name="apartment"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="required"/>
<xs:attribute type="xs:long" name="citizen_id"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:int" name="id" use="required"/>
<xs:attribute type="xs:string" name="app_date" use="required"/>
<xs:attribute type="xs:string" name="length" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Muudatused
Wiki lehe struktuur 31.03.18 12:00
Analüüsi Must ja nice to have funktsionaalsus 31.03.18 16:00
Funktsionaalsuse täiendus 17.04.18 21:00
XML example 05.06.18 19:00
XSD example 05.06.18 20:00