Pillarofautumn: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Rvell (talk | contribs)
Rvell (talk | contribs)
 
(32 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: TBD
Team Foundation Version Control: [[https://pillarofautumn.visualstudio.com/Pillarofautumn/Pillarofautumn%20Team/_git/Pillarofautumn?_a=contents]]


==Analüüs==
==Analüüs==
*Description here*
 
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===
====Must have:====
CRUD:
CRUD:
Visiidi loomine.
* Visiidi loomine
Visiidi vaatamine.
* Visiidi vaatamine
Visiidi muutmine.
* Visiidi muutmine
Visiidi kustutamine.
* Visiidi kustutamine
Kasutaja loomine.
* Kasutaja loomine
Kasutaja vaatamine.
* Kasutaja vaatamine
Kasutaja muutmine.
* Kasutaja muutmine
Kasutaja kustutamine.
* Kasutaja kustutamine.
* Protseduuri ...
* Kliiniku ...
* Visiidi tüübi ...


Otsing:
Otsin:
Kasutaja nime järgi.*
* Kasutaja nime järgi (1)
Kasutaja nime järgi.**


Statistika:
Statistika:
Sisselogimiste koguarv
* Sisselogimiste koguarv
Kasutaja visiitide koguarv
* Kasutaja visiitide koguarv
Kasutaja aktiivsete visiitide arv
* Kasutaja aktiivsete visiitide koguarv


Registreerimise nõuded:
Registreermise nõuded:  
Visiidi aeg on 30 min.
* Visiidi aeg on 30 minutit.
Topelt broneeringuid ei ole.
* Topelt broneeringuid ei ole.
Visiitide aeg on 10:00 - 16:00, esmaspäevast reedeni.
* Visiitide ajad jäävad 10:00-16:00, esmaspäevast reedeni.
Visiidi aeg ei tohi olla minevikus.
* Visiidi aeg ei tohi olla minevikus.
Arstide valik on drop down menüüs.
* Arstide valik on drop down menüüs.


Security:
Turvalisus:
Andmebaasi väljade piirangud.
* Andmebaasi väljade omavad piiranguid.
Pöördumiste arvu piirangud ja nende haldus?
* Andmebaasi pöördumised on piiratud.


* - Visiidi otsing kliendi nime järgi.
** - Visiidi otsing arsti nime järgi.


Nice to have:
==== Nice to have: ====
Teavitused:
Teavitused:
Tervitus sõnumi esimest korda sisse logid.
* Tervitus sõnum esmase sisselogimise korral.
Tervitus sõnumi kui korduval sisse logimisel.
* Teavitus sõnum korduval sisselogimisel.
Teavitused tulevasest visiidist.
* Teavitused tulevasest visiidist.
Teavitus kustutatud visiidist.
* Teavitus kustutatud visiidist.
Teavitus uue visiidi loomisest.
* teavitus uue visiidi loomisest.
Valik saada Teavitusi.
* Valik saada teavitusi.


Statistika:
Statistika:
Ära olnud visiitide arv.
* Ära olnud visiitide arv.


Integratsioon:
Integratsioon:
Google kalender sync
* Google kalender sync.
 
CRUD:
CRUD:
Kasutaja** saab muuta Kasutaja* visiidi aegu.
* Kasutaja saab muuta Kasutaja visiidi aegu.(2)
…?
 
 
(1) - Kasutaja visiitide otsingud nii arsti kui tavakasutaja nime järgi. <br>
(2) - Arstil on võimekus muuta tavakasutaja aegu.


===Andmemudel===
===Andmemudel===
[[File:Erdnewsmaller.png]]


==Retsensioonid==
==Retsensioonid==
Retsensioonid ilmuvad siia.
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