<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<Request xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd" 
		ReturnPolicyIdList="false" CombinedDecision="false" 
		xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" 
		xmlns:md="http://www.medico.com/schemas/record" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Julius Hibbert</AttributeValue>
    </Attribute>
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:some-attribute">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">riddle me this</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
        <Content>
            <md:records>
            	<md:record>
                	<md:patient_info>
                    	<md:name>Bart Simpson</md:name>
                    	<md:age>60</md:age>
                    	<md:sex>male</md:sex>
                    	<md:health_insurance>123456</md:health_insurance>
                	</md:patient_info>
                	<md:diagnosis_info>
                    	<md:diagnosis>
                        	<md:item type="primary">Gastric Cancer</md:item>
                        	<md:item type="secondary">Hyper tension</md:item>
                    	</md:diagnosis>
                    	<md:pathological_diagnosis>
                        	<md:diagnosis>
                            	<md:item type="primary">Well differentiated adeno carcinoma</md:item>
                        	</md:diagnosis>
                        	<md:date>2000-10-05</md:date>
                        	<md:malignancy type="yes"/>
                    	</md:pathological_diagnosis>
                	</md:diagnosis_info>                
            	</md:record>
            	<md:record>
                	<md:patient_info>
                    	<md:name>Homer Simpson</md:name>
                    	<md:age>80</md:age>
                    	<md:sex>male</md:sex>
                    	<md:health_insurance>123456</md:health_insurance>
                	</md:patient_info>
                	<md:diagnosis_info>
                    	<md:diagnosis>
                        	<md:item type="primary">Gastric Cancer</md:item>
                        	<md:item type="secondary">Hyper tension</md:item>
                    	</md:diagnosis>
                    	<md:pathological_diagnosis>
                        	<md:diagnosis>
                            	<md:item type="primary">Well differentiated adeno carcinoma</md:item>
                        	</md:diagnosis>
                        	<md:date>2000-10-05</md:date>
                        	<md:malignancy type="yes"/>
                    	</md:pathological_diagnosis>
                	</md:diagnosis_info>                
            	</md:record>
	    </md:records>
        </Content>
    <Attribute IncludeInResult="true" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://medico.com/record/patient/BartSimpson</AttributeValue>
    </Attribute>
    <Attribute IncludeInResult="true" AttributeId="urn:oasis:names:tc:xacml:3.0:multiple:content-selector">
      <AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
      	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">//md:records/md:record</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" />
</Request>
