Pillarofautumn

From ICO wiki

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

Erdnewsmaller.png

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