Teine-meeskond
From ICO wiki
Võrgurakendused II: hajussüsteemide ehitamine
Kodutöö leht
Rühma liikmed:
- Nikolai Skorohodov
- Ragnar Rattas
- Rynga Bogdanov
XML
Faili kirjeldus
XML fail
<?xml version="1.0" encoding="utf-8" ?>
<!-- Simple XML datafile for holding patients data -->
<PatientData>
<Patient id="1" hasInsurance="yes">
<FirstName>Mari-Liis</FirstName>
<LastName>Männik</LastName>
<PersonalCode>47101010033</PersonalCode>
<MedicalHistory>
<Complaint id="1" isPrivate="no">
<Symptom>Fever</Symptom>
<BeginDateTime>2013-05-28T09:00:00</BeginDateTime>
<Description>I'm feeling sick and I have 38 degrees fever!</Description>
<Treatment>
<Medicine id="1" isPrescriptionDrug="no">
<Name>Aspirin</Name>
<BeginDate>2013-05-28</BeginDate>
<EndDate>2013-05-30</EndDate>
<Notes>Take one tablet three times a day.</Notes>
</Medicine>
<Medicine id="2" isPrescriptionDrug="yes">
<Name>Xanax</Name>
<BeginDate>2013-05-28</BeginDate>
<EndDate>2013-05-30</EndDate>
<Notes>Take two pills per day and enjoy your flight!</Notes>
</Medicine>
</Treatment>
</Complaint>
<Complaint id="2" isPrivate="yes">
<Symptom>Headache</Symptom>
<BeginDateTime>2013-05-28T09:00:00</BeginDateTime>
<EndDateTime>2013-05-30T09:00:00</EndDateTime>
<Description>I'm having random headaches</Description>
<Treatment>
<Medicine id="2" isPrescriptionDrug="yes">
<Name>Xanax</Name>
<BeginDate>2013-05-28</BeginDate>
<EndDate>2013-05-30</EndDate>
<Notes>Take one pill per day and enjoy!</Notes>
</Medicine>
</Treatment>
</Complaint>
</MedicalHistory>
</Patient>
<Patient id="2" hasInsurance="no">
<FirstName>Igor</FirstName>
<LastName>Žaikovski</LastName>
<PersonalCode>37101010021</PersonalCode>
<MedicalHistory>
<Complaint id="1" isPrivate="no">
<Symptom>Can't sleep</Symptom>
<BeginDateTime>2013-05-28T09:00:00</BeginDateTime>
<Description>I can't sleep.</Description>
<Treatment>
<Medicine id="3" isPrescriptionDrug="no">
<Name>Sleeping pills</Name>
<BeginDate>2013-05-28</BeginDate>
<EndDate>2013-06-30</EndDate>
<Notes>Take one pill before going to sleep.</Notes>
</Medicine>
</Treatment>
</Complaint>
</MedicalHistory>
</Patient>
</PatientData>
XML schema (XSD)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Start of PatientData -->
<xs:element name="PatientData">
<xs:complexType>
<xs:sequence>
<!-- Start of patinet element description -->
<xs:element name="Patient" maxOccurs="unbounded">
<!-- Start of patient child elements description -->
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
<!-- Patients Estonian national personal code (without county code), i.e. 380xxxxxxxxx -->
<xs:element name="PersonalCode" type="xs:integer" />
<!-- Start of MedicalHistory, only one is allowed, all complaints go under this element -->
<xs:element minOccurs="0" maxOccurs="1" name="MedicalHistory">
<xs:complexType>
<xs:sequence>
<!-- Start of patient complaints -->
<xs:element name="Complaint" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- Illness symptoms -->
<xs:element name="Symptom" type="xs:string" />
<!-- Start and end dateTime of symptoms -->
<xs:element name="BeginDateTime" minOccurs="0" type="xs:dateTime" />
<xs:element name="EndDateTime" minOccurs="0" type="xs:dateTime" />
<!-- Longer explanation about symptoms -->
<xs:element name="Description" type="xs:string" />
<!-- Doctrors treatment for this complaint -->
<xs:element name="Treatment" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<!-- Start of medicine -->
<xs:element maxOccurs="unbounded" name="Medicine">
<!-- Medicines unique ID -->
<xs:complexType>
<xs:sequence>
<!-- Medicines name -->
<xs:element name="Name" type="xs:string" />
<!-- For how long to take the medicine -->
<xs:element name="BeginDate" minOccurs="0" type="xs:date" />
<xs:element name="EndDate" minOccurs="0" type="xs:date" />
<!-- Some notes how to take the medicine -->
<xs:element name="Notes" type="xs:string" />
</xs:sequence>
<!-- Medicines unique ID -->
<xs:attribute name="id" type="xs:integer" use="required" />
<!-- Is it prescription drug? Only allow yes/no -->
<xs:attribute name="isPrescriptionDrug" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="yes|no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- End of medicine -->
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- End of treatment -->
</xs:element>
</xs:sequence>
<!-- Complaint unique ID -->
<xs:attribute name="id" type="xs:integer" use="required" />
<!-- Is this complaint very delicate issue and it should be hidden to other doctors -->
<xs:attribute name="isPrivate" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="yes|no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- End of MedicalHistory -->
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required" />
<!-- Is patient insured at Haigekassa? Only allow yes/no -->
<xs:attribute name="hasInsurance" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="yes|no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Patients unique ID -->
<!-- End of Patient -->
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- End of PatientData -->
</xs:element>
</xs:schema>
Style Sheet 1
<?xml version="1.0" encoding="utf-8"?>
<!-- Very simple XSLT, print out all patients -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>List of patients</title>
</head>
<body>
<h1>List of patients</h1>
<ul>
<xsl:for-each select="PatientData/Patient">
<li>
<xsl:value-of select="FirstName"/>
<xsl:text> </xsl:text>
<xsl:value-of select="LastName"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="PersonalCode"/>
<xsl:text>)</xsl:text>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Style Sheet 2
<?xml version="1.0" encoding="utf-8"?>
<!-- Very simple XSLT, print out all syptoms patients have ever had -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>List of Symtoms</title>
</head>
<body>
<h1>List of Symptoms</h1>
<ul>
<xsl:for-each select="PatientData/Patient/MedicalHistory/Complaint">
<li>
<xsl:value-of select="Symptom"/>
<xsl:text> </xsl:text>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>