<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:md="http://www.medico.com/schemas/record">
  <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:test-attr">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">   This  is IT!  </AttributeValue>
    </Attribute>
    <Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:test-attr">
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">   This  is IT!  </AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
           <Content>
            <md:record>
                <md:hospital_info>
                    <md:name>ABC Hospital</md:name>
                    <md:department>Surgery</md:department>
                </md:hospital_info>
                <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>
        </Content>
    <Attribute IncludeInResult="false" 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>
  </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>
