<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!--
 Revision History:
	Version 2.0 28/05/2009 - Peter Wilson
			Restricted TEAM_CODEType to alphanumeric (alpha chars uppercase), min. length 4 chars, max. length 6 chars.
			Restricted OUTCOME_EPISODE_IDType to a positive integer value of max. 9 digits
			Changed version number of schema to 2.0 for implementation and release  of NGO Web Forms UI, DMS module 
 	version 1.0 18/09/2008
			Changed version number of schema to 1.0 for go-live production version
	version 0.4.2 25/08/2008
			OUTCOME_TOOL made mandatory. A COLLECTION_OCCASION must have an OUTCOME_TOOL.
	version 0.4.1 18/08/2008
			FOCUS_OF_CARE changed to be optional in accordance with spec.  
    Version 0.4   06/07/2008
 			Added decomposition annotations to save to INPUT tables and shred the Activity and Classifiction more
			Changed HEALTHCARE_WORKER_CPNType to be a 6 length string. Was incorrectly 4.
			Made ORGANISATION_TYPE optional. We are now looking this data up in the HPI so it is not necessary.
    Version 0.3.3   06/07/2008
 			Added decomposition annotation to convert DELETED to D for DELETED_FLAG
    Version 0.3.2   24/06/2008
 			Made COMPLETION_DATE mandatory
    Version 0.3.1   01/05/2008
			Added annotations for saving to db2
    Version 0.3   31/03/2008
			Changed to version 0.3 for publishing to website
	Version 0.2.3 24/03/2008
 			DH - Removed pattern from TEAM_CODEType and replaced with <xs:maxLength value="6"/>
				 Changed EXTRACT_FROM_DATETIME to be EXTRACT_FROM_DATE_TIME for consistency of naming	
				 Changed EXTRACTED_DATETIME to be EXTRACTED_DATE_TIME for consistency of naming	
			     Changed COLLECTION_OCCASION_DATE to be type xs:dateTime
				 Changed COMPLETION_DATE to be type xs:dateTime
	Version 0.2.2 26/02/2008
			DH - Fixed spelling mistake for OUTCOME_EPISODE_IDType
	Version 0.2.1 24/02/2008
			DH - Added type="ACTIVITY_SETTINGType" for ACTIVITY_SETTING element
	Version 0.2 22/02/2008 - Dylan Hope 
			DH - Removed imported PRIMHED_TYPES_v0.1.xsd file because it was causing confusion
				all necessary types are now declared in the individual schema making them stand-alone
			DH - Made CLINICAL_CODE_VALUE optional
			DH - Added ISSUE_CODING_SYSTEM_ID, ISSUE_TYPE and ISSUE_CODE_VALUE to CLASSIFICATION_Type
					
	Version 0.1 11/12/2007 - Dylan Hope - Initial version. Basic type and field length checking

  -->
	<xs:element name="REFERRAL_DISCHARGE">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FILE_VERSION" type="FILE_VERSIONType"/>
				<xs:element name="REFERRAL_ID" type="ID_20_Type"/>
				<xs:element name="SUBMITTING_ORG_ID" type="ORGANISATION_IDType" minOccurs="0"/>
				<xs:element name="ORGANISATION_ID" type="ORGANISATION_IDType"/>
				<xs:element name="ORGANISATION_TYPE" type="AlphaNum_3_Type" minOccurs="0"/>
				<xs:element name="EXTRACT_FROM_DATE_TIME" type="xs:dateTime"/>
				<xs:element name="EXTRACTED_DATE_TIME" type="xs:dateTime"/>
				<xs:element name="DELETED_FLAG" type="xs:string" minOccurs="0"/>
				<xs:element name="TEAM_CODE" type="TEAM_CODEType"/>
				<xs:element name="EVENT_HCU_ID" type="NHIType"/>
				<xs:element name="SEX" type="SEXType"/>
				<xs:element name="DATE_OF_BIRTH" type="xs:date"/>
				<xs:element name="REFERRAL_FROM" type="REFERRALType"/>
				<xs:element name="REFERRAL_TO" type="REFERRALType" minOccurs="0"/>
				<xs:element name="REFERRAL_END_CODE" type="REFERRAL_END_CODEType" minOccurs="0"/>
				<xs:element name="START_DATE_TIME" type="xs:dateTime"/>
				<xs:element name="END_DATE_TIME" type="xs:dateTime" minOccurs="0"/>
				<xs:element name="COLLECTION_OCCASION" type="COLLECTION_OCCASIONType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="ACTIVITY" type="ACTIVITYType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="CLASSIFICATION" type="CLASSIFICATIONType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="PROCESSING_PARAMETER" type="PROCESSING_PARAMETERType" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="ORGANISATION_IDType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FILE_VERSIONType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NHIType">
		<xs:restriction base="xs:token">
			<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9]"/>
			<!-- Define pattern for valid NHI -->
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TEAM_CODEType">
		<xs:restriction base="xs:token">
			<xs:pattern value="[A-Z0-9]{4,6}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ID_20_Type">
		<xs:restriction base="xs:token">
			<xs:maxLength value="20"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REFERRALType">
		<xs:restriction base="xs:token">
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REFERRAL_END_CODEType">
		<xs:restriction base="xs:token">
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="SEXType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="M"/>
			<xs:enumeration value="F"/>
			<xs:enumeration value="U"/>
			<xs:enumeration value="I"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="COLLECTION_OCCASIONType">
		<xs:sequence>
			<xs:element name="COLLECTION_OCCASION_ID" type="ID_20_Type"/>
			<xs:element name="REASON_FOR_COLLECTION" type="REASON_FOR_COLLECTIONType"/>
			<xs:element name="COLLECTION_OCCASION_DATE" type="xs:dateTime"/>
			<xs:element name="HEALTHCARE_WORKER_CPN" type="HEALTHCARE_WORKER_CPNType" minOccurs="0"/>
			<xs:element name="OUTCOME_EPISODE_ID" type="OUTCOME_EPISODE_IDType" minOccurs="0"/>
			<xs:element name="PROTOCOL_VERSION" type="PROTOCOL_VERSIONType" minOccurs="0"/>
			<xs:element name="FOCUS_OF_CARE" type="FOCUS_OF_CAREType" minOccurs="0"/>
			<xs:element name="OUTCOME_TOOL" type="OUTCOME_TOOLType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="REASON_FOR_COLLECTIONType">
		<xs:restriction base="xs:token">
			<xs:pattern value="[a-zA-Z][a-zA-Z][0-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="HEALTHCARE_WORKER_CPNType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PROTOCOL_VERSIONType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9][0-9][0-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FOCUS_OF_CAREType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z][a-zA-Z][0-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="OUTCOME_TOOLType">
		<xs:sequence>
			<xs:element name="OUTCOME_TOOL_TYPE_VERSION" type="OUTCOME_TOOL_TYPE_VERSIONType"/>
			<xs:element name="MODE_OF_ADMINISTRATION" type="MODE_OF_ADMINISTRATIONType"/>
			<xs:element name="COLLECTION_STATUS" type="COLLECTION_STATUSType"/>
			<xs:element name="COMPLETION_DATE" type="xs:dateTime"/>
			<xs:element name="OUTCOME_ITEM" type="OUTCOME_ITEMType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="OUTCOME_TOOL_TYPE_VERSIONType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="MODE_OF_ADMINISTRATIONType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="COLLECTION_STATUSType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z][a-zA-Z][0-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="OUTCOME_ITEMType">
		<xs:sequence>
			<xs:element name="OUTCOME_ITEM_CODE" type="OUTCOME_ITEM_CODEType"/>
			<xs:element name="OUTCOME_ITEM_VALUE" type="OUTCOME_ITEM_VALUEType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="OUTCOME_ITEM_CODEType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="OUTCOME_ITEM_VALUEType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="ACTIVITYType">
		<xs:sequence>
			<xs:element name="ACTIVITY_ID" type="ID_20_Type"/>
			<xs:element name="ACTIVITY_TYPE" type="ACTIVITY_TYPEType"/>
			<xs:element name="ACTIVITY_SETTING" type="ACTIVITY_SETTINGType"/>
			<xs:element name="HEALTHCARE_WORKER_CPN" type="xs:string" minOccurs="0"/>
			<xs:element name="START_DATE_TIME" type="xs:dateTime"/>
			<xs:element name="END_DATE_TIME" type="xs:dateTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="ACTIVITY_TYPEType">
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z][0-9][0-9]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ACTIVITY_SETTINGType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="CLASSIFICATIONType">
		<xs:sequence>
			<xs:element name="CLASSIFICATION_CODE_ID" type="ID_20_Type"/>
			<xs:element name="CLINICAL_CODING_SYSTEM_ID" type="CLINICAL_CODING_SYSTEM_IDType" minOccurs="0"/>
			<xs:element name="DIAGNOSIS_TYPE" type="AlphaNum_1_Type" minOccurs="0"/>
			<xs:element name="CLINICAL_CODE_VALUE" type="CLINICAL_CODE_VALUEType" minOccurs="0"/>
			<xs:element name="ISSUE_CODING_SYSTEM_ID" type="AlphaNum_2_Type" minOccurs="0"/>
			<xs:element name="ISSUE_TYPE" type="AlphaNum_1_Type" minOccurs="0"/>
			<xs:element name="ISSUE_CODE_VALUE" type="ISSUE_CODE_VALUE_Type" minOccurs="0"/>
			<xs:element name="START_DATE_TIME" type="xs:dateTime"/>
			<xs:element name="END_DATE_TIME" type="xs:dateTime" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="CLINICAL_CODING_SYSTEM_IDType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="CLINICAL_CODE_VALUEType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AlphaNum_1_Type">
		<xs:restriction base="xs:string">
			<xs:maxLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AlphaNum_2_Type">
		<xs:restriction base="xs:string">
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AlphaNum_3_Type">
		<xs:restriction base="xs:string">
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="AlphaNum_4_Type">
		<xs:restriction base="xs:string">
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ISSUE_CODE_VALUE_Type">
		<xs:restriction base="xs:string">
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PROVIDER_IDType">
		<xs:restriction base="xs:integer">
			<xs:maxInclusive value="999999"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="RESPONSIBLE_CLINICIAN_CPNType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="OUTCOME_EPISODE_IDType">
		<xs:restriction base="xs:positiveInteger">
			<xs:maxInclusive value="999999999"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="PROCESSING_PARAMETERType">
		<xs:sequence>
			<xs:element name="PROCESSING_PARAMETER_NAME" type="xs:string"/>
			<xs:element name="PROCESSING_PARAMETER_VALUE" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
