Stored Functions

Content-Type: application/json
URN: urn:openhie.org:openinfoman-hwr:stored-function:bulk_health_worker_read_otherids_json

Description



bulk_health_worker_read_otherids_json

Definition

Source:
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;




(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 


let $code := $careServicesRequest/code/text()
let $aa := $careServicesRequest/assigningAuthorityName/text()

let $xml:= 
  <json  type="object">
    <results type='array'>
      { 
      for $ent_id in $careServicesRequest/id
      let $req_id := upper-case(string($ent_id/@entityID))
      let $provider := (/CSD/providerDirectory/provider[upper-case(string(@entityID)) = $req_id])[1]
      let $other_ids_0 := 
	if ($code) 
	then $provider/otherID[@code = $code]
	else $provider/otherID
      let $other_ids_1 := 
	if ($aa) 
	then $other_ids_0[@assigningAuthorityName = $aa]
        else $other_ids_0

      return
	if (exists($provider) and count($other_ids_1) > 0)
	then
	  <_ type='object'>
	    <entityID>{string($provider/@entityID)}</entityID>	    
	    <otherID type="array">
	      {
		for $id in $other_ids_1
		return       
		  <_ type='object'>
		    <code>{string($id/@code)}</code>
		    <authority>{string($id/@assigningAuthorityName)}</authority>
		    <value>{$id/text()}</value>
		  </_>
	        }
	    </otherID>
	 </_>
	else ()
	      
      }
    </results>
  </json>
return json:serialize($xml,map{"format":"direct"})  
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_get_urns

Description



facility_get_urns

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := if (exists($careServicesRequest/id)) then csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else /CSD/facilityDirectory/*
  let $facs1 := if (exists($careServicesRequest/otherID)) then csd_bl:filter_by_other_id($facs0,$careServicesRequest/otherID) else $facs0
  let $facs2 := if (exists($careServicesRequest/codedType)) then csd_bl:filter_by_coded_type($facs1,$careServicesRequest/codedType)    else $facs1
  let $facs3 := if (exists($careServicesRequest/address/addressLine)) then csd_bl:filter_by_address($facs2, $careServicesRequest/address/addressLine) else $facs2
  let $facs4 := if (exists($careServicesRequest/record)) then csd_bl:filter_by_record($facs3,$careServicesRequest/record) else $facs3
  let $facs5 := if (exists($careServicesRequest/start) and exists($careServicesRequest/max)) then csd_bl:limit_items($facs4,$careServicesRequest/start,$careServicesRequest/max) else $facs4
  let $facs6 := for $entityID in $facs5/@entityID         
   return <facility entityID="{$entityID}"/>

  return csd_bl:wrap_facilities(($facs6))
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_indices_address

Description



facility_indices_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) 
    else (/CSD/facilityDirectory/*)
  let $facs1:=     
      for $facility in  $facs0
      return
      <facility entityID="{$facility/@entityID}">
	  {
	    for $address in  $facility/address
	    return <address type="{$address/@type}"/> 
	  }
      </facility>
      
    return csd_bl:wrap_facilities($facs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_indices_contact_point

Description



facility_indices_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) 
    else (/CSD/facilityDirectory/*)
  let $facs1:=     
      for $facility in  $facs0
      return
      <facility entityID="{$facility/@entityID}">
	  {
	    for $cp at $pos  in  $facility/contactPoint
	    return <contactPoint position="{$pos}"/> 
	  }
    </facility>
      
    return csd_bl:wrap_facilities($facs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_indices_organization

Description



facility_indices_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) 
    else (/CSD/facilityDirectory/*)
  let $facs1:=     
      for $facility in  $facs0
      return
      <facility entityID="{$facility/@entityID}">
	<organizations>
          {
	    for $org in $facility/organizations/organization 
	    return
	    <organization entityID="{$org/@entityID}"></organization>
	  }
	</organizations>
      </facility>
      
    return csd_bl:wrap_facilities($facs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_indices_otherid

Description



facility_indices_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) 
    else (/CSD/facilityDirectory/*)
  let $facs1:=     
      for $facility in  $facs0
      return
      <facility entityID="{$facility/@entityID}">
	{
	  for $id at $pos  in  $facility/otherID
	  return <otherID position="{$pos}"/> 
	}
    </facility>
      
    return csd_bl:wrap_facilities($facs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_service

Description



facility_indices_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $facs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) 
    else (/CSD/facilityDirectory/*)
  let $facs1:=     
      for $facility in  $facs0
      return
      <facility entityID="{$facility/@entityID}">
	<organizations>
	  {
	    let $facs := 
	      if (exists($careServicesRequest/organization/@entityID)) 
		then 
		$facility/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
	      else    $facility/organizations/organization
            for $fac in $facs
	      return 
	       <organization entityID="{$fac/@entityID}">
		  {
		    for $srvc at $pos in $fac/service
		    return <service position="{$pos}" entityID="{$srvc/@entityID}"/> 
		  }
		</organization>
	  }
	</organizations>
    </facility>
      
    return csd_bl:wrap_facilities($facs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_name_search

Description



 
    
    Performs a search for all facilities by name, type, address or ID.   
    
    
      The result set consists of the primary name of all facilities matching the  search parameters ( id, primaryName, name, codedType and address ).
     
        
      The results set may be further restricted according to the limit parameters (start, max, record/@status and record/@updated).  An ordering of the result set is not specified.
    
    
    Response
    Results are returned as a valid CSD document with a root document element of <CSD/>.  The results set is contained entirely within the <facilityDirectory/> element and consists of the full content of the <facility/> elements of matching facilities as maintained by the Care Services InfoManager.
    
    Parameters Query
    Parameters are defined as the content of following elements:
    
       <id/> csd:uniqueID: (optional) If present and the @urn attribute contains a non-empty value, it is a ID which uniquely identifies a facility. This is an exact match.  
      
      <primaryName/> xs:string: (optional) If present and contains a non-empty value, then the result set should be restricted to those facilities whose <primaryName/> contains this value. Case insensitive.
      <name/> xs:string: (optional) If present and contains a non-empty value, then the result set should be restricted to those facilities which have a <primaryName/> or <otherName/> element containing this value. Case insensitive.      
      <codedType/> csd:codedtype:  If present and contains a non-empty value the result set should be restricted to those facilities whose <codedType/@code> equals this value for the coding schema specified by the @codingSchema attribute.  Case insensitive.
      
       <address/> csd:address: (optional) Contains of any-number of child <addressLine/> elements as follows:
        
          Text content xs:string: (optional) If present and contains a non-empty value, then the results set should be restricted to those facilities whose have an <addressLine/> with specified @component containing this value exactly.  Case insensitive.
           
          @component xs:string : (Required attribute) The component of the address we are searching. Case insensitive.
          
      
      <start/>  xs:int: (optional) The starting index for results returned. Defaults to 1, which indexes the first facility matching the search parameters
      <max/>  xs:int: (optional) The maximum number of results returned.  A value of less than zero implies no maximum.
      
	<record/>  csd:record : (optional) A child element to limit results according to
	
	  @status xs:string: (optional) If present and contains a non-empty value, the result set should be restricted to those facilities whose record/@status equals this value.  Case insensitive.
	  @updated xs:dateTime: (optional) If present and contains a non-empty value, the result set should be restricted to those facilities whose record/@updated is at least the given value.
	
      
    
    Example Request
    
         <careServicesRequest>
           <function uuid='c7640530-f600-11e2-b778-0800200c9a66'>
               <codedType code='OPC' codingSchema="USDVA"/>
               <address>
                 <addressLine component='city'>Chapel Hill</addressLine>
	       </address>
               <max>5</max>
           </function>
         </careServicesRequest>         
      
  

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare  variable $careServicesRequest as item() external;



(: 
   The query will be executed against the root element of the CSD document.
    
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
<CSD xmlns:csd="urn:ihe:iti:csd:2013"  >
  <organizationDirectory/>
  <serviceDirectory/>
  <facilityDirectory>
    {
      let $facs0 := if (exists($careServicesRequest/id))
	then csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id)
      else /CSD/facilityDirectory/*
         
      let $facs1 := if (exists($careServicesRequest/primaryName))
	then csd_bl:filter_by_primary_name($facs0,$careServicesRequest/primaryName)
      else $facs0
         
      let $facs2 := if (exists($careServicesRequest/name))
	then csd_bl:filter_by_name($facs1,$careServicesRequest/name)
      else $facs1
    
      let $facs3 := if(exists($careServicesRequest/codedType))
	then csd_bl:filter_by_coded_type($facs2,$careServicesRequest/codedType) 
      else $facs2
   
      let $facs4 := if(exists($careServicesRequest/address/addressLine))
	then csd_bl:filter_by_address($facs3, $careServicesRequest/address/addressLine) 
      else $facs3

      let $facs5 := if (exists($careServicesRequest/record))
	then csd_bl:filter_by_record($facs4,$careServicesRequest/record)      
      else $facs4

      let $facs6 := if(exists($careServicesRequest/otherID))
	then csd_bl:filter_by_other_id($facs5,$careServicesRequest/otherID)      
      else $facs5

      let $facs7:= if (exists($careServicesRequest/start)) then
	if (exists($careServicesRequest/max)) 
	  then csd_bl:limit_items($facs6,$careServicesRequest/start,$careServicesRequest/max)         
	else csd_bl:limit_items($facs6,$careServicesRequest/start,<max/>)         
      else
	if (exists($careServicesRequest/max)) 
	  then csd_bl:limit_items($facs6,<start/>,$careServicesRequest/max)         
	else $facs6

      return for $fac in $facs7
        return 
	 <facility entityID='{$fac/@entityID}'>
	   {$fac/primaryName}
	 </facility>


    }     
  </facilityDirectory>
  <providerDirectory/>
</CSD>
    
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_read_address

Description



facilty_read_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $facs0 := if (exists($careServicesRequest/address/@type)) then /CSD/facilityDirectory/*  else ()
let $facs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($facs0,$careServicesRequest/id) else ()
let $facs2 := 
  if (count($facs1) = 1) 
    then 
    let $facility :=  $facs1[1] 
    return 
    <facility entityID="{$facility/@entityID}">
	{(
	  for $address in $facility/address[@type = $careServicesRequest/address/@type]
	  return $address
	 )}
      {$facility/record}
    </facility>
  else ()        
return csd_bl:wrap_facilities($facs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_read_contact_point

Description



facility_read_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $facs0 := if (exists($careServicesRequest/contactPoint/@position)) then /CSD/facilityDirectory/*  else ()
let $facs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($facs0,$careServicesRequest/id) else ()
let $facs2 := 
  if (count($facs1) = 1) 
    then 
    let $facility :=  $facs1[1] 
    return 
    <facility entityID="{$facility/@entityID}">
      {
	if (exists($careServicesRequest/contactPoint) and exists($careServicesRequest/contactPoint/@position)) 
	  then 
	      for $cp in $facility/contactPoint[position() = $careServicesRequest/contactPoint/@position]
	      return       <contactPoint position="{$careServicesRequest/contactPoint/@position}">{$cp/*}</contactPoint>
	else
	  ()
      }
      {$facility/record}
    </facility>
  else ()    
    
return csd_bl:wrap_facilities($facs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_read_organization

Description



facility_read_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $facs0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/facilityDirectory/*  else ()
let $facs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($facs0,$careServicesRequest/id) else ()
let $facs2 := 
  if (count($facs1) = 1) 
    then 
    let $facility :=  $facs1[1] 
    return 
      <facility entityID="{$facility/@entityID}">
	  {
	    (
	    <organizations>
	      {
		for $org in $facility/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID ) ]
		return
		<organization entityID="{$org/@entityID}"></organization>
	      }
	    </organizations>
	       
	      ,
	      $facility/record
	    )
	  }
      </facility>
  else ()    
    
return csd_bl:wrap_facilities($facs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_read_otherid

Description



facility_read_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $facs0 := if (exists($careServicesRequest/otherID/@position)) then /CSD/facilityDirectory/*  else ()
let $facs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($facs0,$careServicesRequest/id) else ()
let $facs2 := 
  if (count($facs1) = 1) 
    then 
    let $facility :=  $facs1[1] 
    return 
    <facility entityID="{$facility/@entityID}">
      {(
	if (exists($careServicesRequest/otherID/@position))
	  then 
	  for $id in $facility/otherID[position() = $careServicesRequest/otherID/@position]
	  return       
	  <otherID 
	  position="{$careServicesRequest/otherID/@position}"
	  code="{$id/@code}"
	  assigningAuthorityName="{$id/@assigningAuthorityName}">{string($id)}</otherID>
	else
	  ()
        ,      
	$facility/record
	)}
    </facility>
  else ()    
    
return csd_bl:wrap_facilities($facs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_read_service

Description



facility_read_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $facs0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/providerDirectory/*  else ()
let $facs1 := if (exists($careServicesRequest/organization/service/@position)) then $facs0  else ()
let $facs2 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($facs1,$careServicesRequest/id) else ()
let $facs3 := 
  if (count($facs2) = 1) 
    then 
    let $facility :=  $facs2[1] 
    return 
    <facility entityID="{$facility/@entityID}">
      {
	if (exists($careServicesRequest/organization/@entityID) and exists($careServicesRequest/organization/service/@position)) 
	  then 
	  <organizations>
	    <organization entityID="{$careServicesRequest/organization/@entityID}">
	    {
	      for $srvc in $facility/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]/service[position() = $careServicesRequest/organization/service/@position]
	      return       <service position="{$careServicesRequest/organization/service/@position}" entityID="{$srvc/@entityID}">{$srvc/*}</service>
	  }
	    </organization>
	  </organizations>
	else
	  ()
      }
      {$facility/record}
    </facility>
  else ()    
    
return csd_bl:wrap_facilities($facs3)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_get_urns

Description



health_worker_get_urns

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := if (exists($careServicesRequest/id)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else /CSD/providerDirectory/*
  let $provs1 := if (exists($careServicesRequest/otherID)) then csd_bl:filter_by_other_id($provs0,$careServicesRequest/otherID) else $provs0
  let $provs2 := if (exists($careServicesRequest/commonName)) then csd_bl:filter_by_common_name($provs1,$careServicesRequest/commonName) else $provs1
  let $provs3 := if (exists($careServicesRequest/codedType)) then csd_bl:filter_by_coded_type($provs2,$careServicesRequest/codedType)    else $provs2
  let $provs4 := if (exists($careServicesRequest/address/addressLine)) then csd_bl:filter_by_address($provs3, $careServicesRequest/address/addressLine) else $provs3
  let $provs5 := if (exists($careServicesRequest/record)) then csd_bl:filter_by_record($provs4,$careServicesRequest/record) else $provs4
  let $provs6 := if (exists($careServicesRequest/start) and exists($careServicesRequest/max)) then csd_bl:limit_items($provs5,$careServicesRequest/start,$careServicesRequest/max) else $provs5
  let $provs7 := for $entityID in $provs6/@entityID         
   return <provider entityID="{$entityID}"/>

  return csd_bl:wrap_providers($provs7)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_address

Description



health_worker_indices_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<demographic>
	  {
	    for $address in  $provider/demographic/address
	    return <address type="{$address/@type}"/> 
	  }
	</demographic>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_contact_point

Description



health_worker_indices_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<demographic>
	  {
	    for $cp at $pos  in  $provider/demographic/contactPoint
	    return <contactPoint position="{$pos}"/> 
	  }
	</demographic>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_credential

Description



health_worker_indices_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
        {
	  for $cred in $provider/credential
	  return
	  <credential >{$cred/codedType}</credential>
	}
      </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_name

Description



health_worker_indices_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<demographic>
	  {
	    for $name at $pos  in  $provider/demographic/name
	    return <name position="{$pos}"/> 
	  }
	</demographic>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_operating_hours

Description



health_worker_indices_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<facilities>
	  {
	    let $facs := 
	      if (exists($careServicesRequest/facility/@entityID)) 
		then 
		$provider/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
	      else    $provider/facilities/facility
            for $fac in $facs
	      return 
	       <facility entityID="{$fac/@entityID}">
		  {
		    if ($careServicesRequest/facility/service/@position) 
		      then
			for $srvc in $fac/service[position()= $careServicesRequest/facility/service/@position] 
			return 
			<service position="{$careServicesRequest/facility/service/@position}">
			  {for $oh at $ohpos in $srvc/operatingHours return <operatingHours position="{$ohpos}"/>}
			</service>
		    else 
		      for $srvc at $spos in $fac/service
			return 
			<service position="{$spos}">
			  {for $oh at $ohpos in $srvc/operatingHours return <operaingHours position="{$ohpos}"/>}
			</service>
		  }
		</facility>
	  }
	</facilities>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_org_address

Description



health_worker_indices_org_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<organizations>
          {
	    let $orgs := 
	      if (exists($careServicesRequest/organization/@entityID)) 
		then 
		$provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
	      else    $provider/organizations/organization
            for $org in $orgs
	      return 
	       <organization entityID="{$org/@entityID}">
		  {
		    for $address  in $org/address
		    return <address type="{$address/@type}"/> 
		  }
		</organization>
	  }
	</organizations>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_org_contact_point

Description



health_worker_indices_org_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<organizations>
	  {
	    let $orgs := 
	      if (exists($careServicesRequest/organization/@entityID)) 
		then 
		$provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
	      else    $provider/organizations/organization
            for $org in $orgs
	      return 
	       <organization entityID="{$org/@entityID}">
		  {
		    for $cp at $pos in $org/contactPoint
		    return <contactPoint position="{$pos}"/> 
		  }
		</organization>
	  }
	</organizations>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_otherid

Description



health_worker_indices_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	{
	  for $id at $pos  in  $provider/otherID
	  return <otherID position="{$pos}"/> 
	}
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_provider_facility

Description



health_worker_indices_provider_facility

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<facilities>
          {
	    for $fac in $provider/facilities/facility 
	    return
	    <facility entityID="{$fac/@entityID}"></facility>
	  }
	</facilities>
      </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_provider_organization

Description



health_worker_indices_provider_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<organizations>
          {
	    for $org in $provider/organizations/organization 
	    return
	    <organization entityID="{$org/@entityID}"></organization>
	  }
	</organizations>
      </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_indices_service

Description



health_worker_indices_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) 
    else (/CSD/providerDirectory/*)
  let $provs1:=     
      for $provider in  $provs0
      return
      <provider entityID="{$provider/@entityID}">
	<facilities>
	  {
	    let $facs := 
	      if (exists($careServicesRequest/facility/@entityID)) 
		then 
		$provider/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
	      else    $provider/facilities/facility
            for $fac in $facs
	      return 
	       <facility entityID="{$fac/@entityID}">
		  {
		    for $srvc at $pos in $fac/service
		    return <service position="{$pos}" entityID="{$srvc/@entityID}"/> 
		  }
		</facility>
	  }
	</facilities>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_address

Description



health_worker_read_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/address/@type)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      <demographic>
	{(
	  for $address in $provider/demographic/address[@type = $careServicesRequest/address/@type]
	  return $address
	 )}
      </demographic>
      {$provider/record}
    </provider>
  else ()        
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_contact_point

Description



health_worker_read_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/contactPoint/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      {
	if (exists($careServicesRequest/contactPoint) and exists($careServicesRequest/contactPoint/@position)) 
	  then 
	  <demographic>
	    {
	      for $cp in $provider/demographic/contactPoint[position() = $careServicesRequest/contactPoint/@position]
	      return       <contactPoint position="{$careServicesRequest/contactPoint/@position}">{$cp/*}</contactPoint>
	  }
	  </demographic>
	else
	  ()
      }
      {$provider/record}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_credential

Description



health_worker_read_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    let $code:= $careServicesRequest/credential/codedType/@code
    let $codingScheme:= $careServicesRequest/credential/codedType/@codingScheme
    return 
      <provider entityID="{$provider/@entityID}">
	  {
	    (
	      $provider/credential/codedType[@code = $code and @codingScheme = $codingScheme]/..
	      ,
	      $provider/record
	    )
	  }
      </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_name

Description



health_worker_read_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/name/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      {
	if (exists($careServicesRequest/name) and exists($careServicesRequest/name/@position)) 
	  then 
	  <demographic>
	    {
	      for $name in $provider/demographic/name[position() = $careServicesRequest/name/@position]
	      return       <name position="{$careServicesRequest/name/@position}">{$name/*}</name>
	  }
	  </demographic>
	else
	  ()
      }
      {$provider/record}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_operating_hours

Description



health_worker_read_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/facility/service/operatingHours/@position)) then $provs1  else ()
let $provs3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs2,$careServicesRequest/id) else ()
let $srvc := $provs3[1]/facilities/facility[upper-case(@entityID) =upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]
let  $provs4:=   
  if (count($srvc) = 1) 
    then
    let $oh := $srvc/operatingHours[position() = $careServicesRequest/facility/service/operatingHours/@position]
    return <provider entityID="{$careServicesRequest/id/@entityID}">
      <facilities>
	<facility entityID="{$careServicesRequest/facility/@entityID}">
	  <service position="{$careServicesRequest/facility/service/@position}" >
	    <operatingHours position="{$careServicesRequest/facility/service/operatingHours/@position}">{$oh/*}</operatingHours>
	  </service>
	</facility>
      </facilities>
      {$careServicesRequest}
    </provider>
  else ()


return csd_bl:wrap_providers($provs4)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_org_address

Description



health_worker_read_org_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/organization/@entityID) and exists($careServicesRequest/organization/address/@type)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      <organizations>
	<organization entityID="{$careServicesRequest/organization/@entityID}">
	  {
	    $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]/address[@type = $careServicesRequest/organization/address/@type]
	  }
	</organization>
      </organizations>
      {$provider/record}
    </provider>
  else ()        
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_org_contact_point

Description



health_worker_read_org_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/organization/contactPoint/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs1,$careServicesRequest/id) else ()
let $provs3 := 
  if (count($provs2) = 1) 
    then 
    let $provider :=  $provs2[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      {
	if (exists($careServicesRequest/organization/@entityID) and exists($careServicesRequest/organization/contactPoint/@position)) 
	  then 
	  <organizations>
	    <organization entityID="{$careServicesRequest/organization/@entityID}">
	    {
	      for $cp in $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]/contactPoint[position() = $careServicesRequest/organization/contactPoint/@position]
	      return       <contactPoint position="{$careServicesRequest/organization/contactPoint/@position}">{$cp/*}</contactPoint>
	  }
	    </organization>
	  </organizations>
	else
	  ()
      }
      {$provider/record}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs3)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_otherid

Description



health_worker_read_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/otherID/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      {(
	if (exists($careServicesRequest/otherID/@position))
	  then 
	  for $id in $provider/otherID[position() = $careServicesRequest/otherID/@position]
	  return       
	  <otherID 
	  position="{$careServicesRequest/otherID/@position}"
	  code="{$id/@code}"
	  assigningAuthorityName="{$id/@assigningAuthorityName}">{string($id)}</otherID>
	else
	  ()
        ,      
	$provider/record
	)}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_otherids

Description



health_worker_read_otherids

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/otherID/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()

let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    let $other_ids := 
      if ($careServicesRequest/code/text())
      then $provider/otherID[@code = $careServicesRequest/code/text()]
      else $provider/otherID

    return 
    <provider entityID="{$provider/@entityID}">
      {(
	$other_ids
        ,      
	$provider/record
	)}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: application/json
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_otherids_json

Description



health_worker_read_otherids_json

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;




(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id( /CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provider :=  $provs1[1] 
let $other_ids := 
  if ($careServicesRequest/code/text())
  then $provider/otherID[@code = $careServicesRequest/code/text()]
  else $provider/otherID
let $xml:= 
  <json  type="object">
    <entityID>{string($provider/@entityID)}</entityID>
    <otherID type="array">
      {
	for $id in $other_ids 
	return       
	  <_ type='object'>
	    <code>{string($id/@code)}</code>
	    <authority>{string($id/@assigningAuthorityName)}</authority>
	    <value>{$id/text()}</value>
	 </_>
      }
    </otherID>
  </json>
return json:serialize($xml,map{"format":"direct"})  
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_provider

Description



health_worker_read_provider

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()  
let $provs1 :=  if (count($provs0) = 1) then
  let $prov := $provs0[1]
  return 
  <provider entityID="{$prov/@entityID}">  
  {(
      $prov/codedType,
      <demographic>
      {(
	if (exists($prov/demographic/gender)) then $prov/demographic/gender else (),
	if (exists($prov/demographic/dateOfBirth)) then $prov/demographic/dateOfBirth else ()
      )}
      </demographic>,
      $prov/language,
      $prov/specialty,
      $prov/record
  )}
  </provider>
  else ()
  return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_provider_facility

Description



health_worker_read_provider_facility

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
      <provider entityID="{$provider/@entityID}">
	  {
	    (
	    <facilities>
	      {
		for $fac in $provider/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)  ]
		return
		<facility entityID="{$fac/@entityID}"></facility>
	      }
	    </facilities>
	       
	      ,
	      $provider/record
	    )
	  }
      </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_provider_organization

Description



health_worker_read_provider_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $provs2 := 
  if (count($provs1) = 1) 
    then 
    let $provider :=  $provs1[1] 
    return 
      <provider entityID="{$provider/@entityID}">
	  {
	    (
	    <organizations>
	      {
		for $org in $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID ) ]
		return
		<organization entityID="{$org/@entityID}"></organization>
	      }
	    </organizations>
	       
	      ,
	      $provider/record
	    )
	  }
      </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_read_service

Description



health_worker_read_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs1,$careServicesRequest/id) else ()
let $provs3 := 
  if (count($provs2) = 1) 
    then 
    let $provider :=  $provs2[1] 
    return 
    <provider entityID="{$provider/@entityID}">
      {
	if (exists($careServicesRequest/facility/@entityID) and exists($careServicesRequest/facility/service/@position)) 
	  then 
	  <facilities>
	    <facility entityID="{$careServicesRequest/facility/@entityID}">
	    {
	      for $srvc in $provider/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]
	      return       <service position="{$careServicesRequest/facility/service/@position}" entityID="{$srvc/@entityID}">{$srvc/*}</service>
	  }
	    </facility>
	  </facilities>
	else
	  ()
      }
      {$provider/record}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs3)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_urn_search_by_id

Description



health_worker_urn_search_by_id

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $provs0 := if (exists($careServicesRequest/otherID)) then csd_bl:filter_by_other_id(/CSD/providerDirectory/*,$careServicesRequest/otherID) else ()
  let $provs1 := if (exists($careServicesRequest/start) and exists($careServicesRequest/max)) then csd_bl:limit_items($provs0,$careServicesRequest/start,$careServicesRequest/max) else $provs0
  let $provs2:= for $entityID in $provs1/@entityID     
   return <provider entityID="{$entityID}"/>

  return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_get_urns

Description



organization_get_urns

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $orgs0 := if (exists($careServicesRequest/id)) then csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) else /CSD/organizationDirectory/*
  let $orgs1 := if (exists($careServicesRequest/otherID)) then csd_bl:filter_by_other_id($orgs0,$careServicesRequest/otherID) else $orgs0
  let $orgs2 := if (exists($careServicesRequest/codedType)) then csd_bl:filter_by_coded_type($orgs1,$careServicesRequest/codedType)    else $orgs1
  let $orgs3 := if (exists($careServicesRequest/address/addressLine)) then csd_bl:filter_by_address($orgs2, $careServicesRequest/address/addressLine) else $orgs2
  let $orgs4 := if (exists($careServicesRequest/record)) then csd_bl:filter_by_record($orgs3,$careServicesRequest/record) else $orgs3
  let $orgs5 := if (exists($careServicesRequest/start) and exists($careServicesRequest/max)) then csd_bl:limit_items($orgs4,$careServicesRequest/start,$careServicesRequest/max) else $orgs4
  let $orgs6 := for $entityID in $orgs5/@entityID         
   return <organization entityID="{$entityID}"/>

  return csd_bl:wrap_organizations(($orgs6))
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_indices_address

Description



organization_indices_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $orgs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) 
    else (/CSD/organizationDirectory/*)
  let $orgs1:=     
      for $organization in  $orgs0
      return
      <organization entityID="{$organization/@entityID}">
	  {
	    for $address in  $organization/address
	    return <address type="{$address/@type}"/> 
	  }
      </organization>
      
    return csd_bl:wrap_organizations($orgs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_indices_contact_point

Description



organization_indices_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $orgs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) 
    else (/CSD/organizationDirectory/*)
  let $orgs1:=     
      for $organization in  $orgs0
      return
      <organization entityID="{$organization/@entityID}">
	  {
	    for $cp at $pos  in  $organization/contactPoint
	    return <contactPoint position="{$pos}"/> 
	  }
    </organization>
      
    return csd_bl:wrap_organizations($orgs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_indices_credential

Description



organization_indices_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $orgs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) 
    else (/CSD/organizationDirectory/*)
  let $orgs1:=     
      for $organization in  $orgs0
      return
      <organization entityID="{$organization/@entityID}">
        {
	  for $cred in $organization/credential
	  return
	  <credential >{$cred/codedType}</credential>
	}
      </organization>
      
    return csd_bl:wrap_organizations($orgs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_indices_otherid

Description



organization_indices_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $orgs0 := 
    if (exists($careServicesRequest/id/@entityID)) then 
      csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) 
    else (/CSD/organizationDirectory/*)
  let $orgs1:=     
      for $organization in  $orgs0
      return
      <organization entityID="{$organization/@entityID}">
	{
	  for $id at $pos  in  $organization/otherID
	  return <otherID position="{$pos}"/> 
	}
    </organization>
      
    return csd_bl:wrap_organizations($orgs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_name_search

Description



 
    
    Performs a search for all organizations by name, coded type, address or ID.   
    
    
      The result set consists of the primary name of all organizations matching the  search parameters ( id, primaryName, name, codedType and address ).
     
        
      The results set may be further restricted according to the limit parameters (start, max, record/@status and record/@updated).  An ordering of the result set is not specified.
    
    
    Response
    Results are returned as a valid CSD document with a root document element of <CSD/>.  The results set is contained entirely within the <organizationDirectory/> element and consists of the full content of the <organization/> elements of matching organizations as maintained by the Care Services InfoManager.
    
    Parameters Query
    Parameters are defined as the content of following elements:
    
       <id/> csd:uniqueID: (optional) If present and the @urn attribute contains a non-empty value, it is a ID which uniquely identifies an organization. This is an exact match.  
      
      <primaryName/> xs:string: (optional) If present and contains a non-empty value, then the result set should be restricted to those organizations whose <primaryName/> contains this value. Case insensitive.
      <name/> xs:string: (optional) If present and contains a non-empty value, then the result set should be restricted to those organizations which have a <primaryName/> or <otherName/> element containing this value. Case insensitive.      
      <codedType/> csd:codedtype:  If present and contains a non-empty value the result set should be restricted to those organizations whose <codedType/@code> equals this value for the coding schema specified by the @codingSchema attribute.  Case insensitive.
      
       <address/> csd:address: (optional) Contains of any-number of child <addressLine/> elements as follows:
        
          Text content xs:string: (optional) If present and contains a non-empty value, then the results set should be restricted to those organizations whose have an <addressLine/> with specified @component containing this value exactly.  Case insensitive.
           
          @component xs:string : (Required attribute) The component of the address we are searching. Case insensitive.
          
      
      <start/>  xs:int: (optional) The starting index for results returned. Defaults to 1, which indexes the first organization matching the search parameters
      <max/>  xs:int: (optional) The maximum number of results returned.  A value of less than zero implies no maximum.
      
	<record/>  csd:record : (optional) A child element to limit results according to
	
	  @status xs:string: (optional) If present and contains a non-empty value, the result set should be restricted to those organizations whose record/@status equals this value.  Case insensitive.
	  @updated xs:dateTime: (optional) If present and contains a non-empty value, the result set should be restricted to those organizations whose record/@updated is at least the given value.
	
      
    
    Example Request
    
         <careServicesRequest>
           <function uuid='dc6aedf0-f609-11e2-b778-0800200c9a66'>
               <codedType codingSchema="moh.gov.rw" code="FBO" />
               <address>
                 <addressLine component='city'>Kigali</addressLine>
	       </address>
               <max>5</max>
           </function>
         </careServicesRequest>         
      
  

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
    
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 


<CSD xmlns:csd="urn:ihe:iti:csd:2013"  >
  <organizationDirectory>
    {
      let $orgs0 := if (exists($careServicesRequest/id))
	then csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id)
      else /CSD/organizationDirectory/*
         
      let $orgs1 := if (exists($careServicesRequest/primaryName))
	then csd_bl:filter_by_primary_name($orgs0,$careServicesRequest/primaryName)
      else $orgs0
         
      let $orgs2 := if(exists($careServicesRequest/name))
	then csd_bl:filter_by_name($orgs1,$careServicesRequest/name)
      else $orgs1
    
      let $orgs3 := if(exists($careServicesRequest/codedType))
	then csd_bl:filter_by_coded_type($orgs2,$careServicesRequest/codedType)
      else $orgs2
   
      let $orgs4 :=if (exists($careServicesRequest/address/addressLine))
	then csd_bl:filter_by_address($orgs3, $careServicesRequest/address/addressLine)
      else $orgs3
      
      let $orgs5 := if (exists($careServicesRequest/record))
	then csd_bl:filter_by_record($orgs4,$careServicesRequest/record)
      else $orgs4

      let $orgs6 := if (exists($careServicesRequest/otherID))
	then csd_bl:filter_by_other_id($orgs5,$careServicesRequest/otherID)
      else $orgs5

      let $orgs7 := if (exists($careServicesRequest/start)) then
	if (exists($careServicesRequest/max))
	  then csd_bl:limit_items($orgs6,$careServicesRequest/start,$careServicesRequest/max)
	else csd_bl:limit_items($orgs6,$careServicesRequest/start,<max/>)
      else
	if (exists($careServicesRequest/max))
	  then csd_bl:limit_items($orgs6,<start/>,$careServicesRequest/max)
	else $orgs6
	  
      return for $org in $orgs7
	return<organization urn='{$org/@urn}'>
	  {$org/primaryName}
	</organization>

    }     
  </organizationDirectory>
  <serviceDirectory/>
  <facilityDirectory/>
  <providerDirectory/>
</CSD>
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_read_address

Description



facilty_read_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $orgs0 := if (exists($careServicesRequest/address/@type)) then /CSD/organizationDirectory/*  else ()
let $orgs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($orgs0,$careServicesRequest/id) else ()
let $orgs2 := 
  if (count($orgs1) = 1) 
    then 
    let $organization :=  $orgs1[1] 
    return 
    <organization entityID="{$organization/@entityID}">
	{(
	  for $address in $organization/address[@type = $careServicesRequest/address/@type]
	  return $address
	 )}
      {$organization/record}
    </organization>
  else ()        
return csd_bl:wrap_organizations($orgs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_read_contact_point

Description



organization_read_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $orgs0 := if (exists($careServicesRequest/contactPoint/@position)) then /CSD/organizationDirectory/*  else ()
let $orgs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($orgs0,$careServicesRequest/id) else ()
let $orgs2 := 
  if (count($orgs1) = 1) 
    then 
    let $organization :=  $orgs1[1] 
    return 
    <organization entityID="{$organization/@entityID}">
      {
	if (exists($careServicesRequest/contactPoint) and exists($careServicesRequest/contactPoint/@position)) 
	  then 
	      for $cp in $organization/contactPoint[position() = $careServicesRequest/contactPoint/@position]
	      return       <contactPoint position="{$careServicesRequest/contactPoint/@position}">{$cp/*}</contactPoint>
	else
	  ()
      }
      {$organization/record}
    </organization>
  else ()    
    
return csd_bl:wrap_organizations($orgs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_read_credential

Description



organization_read_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $orgs0 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then /CSD/organizationDirectory/*  else ()
let $orgs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($orgs0,$careServicesRequest/id) else ()
let $orgs2 := 
  if (count($orgs1) = 1) 
    then 
    let $organization :=  $orgs1[1] 
    let $code:= $careServicesRequest/credential/codedType/@code
    let $codingScheme:= $careServicesRequest/credential/codedType/@codingScheme
    return 
      <organization entityID="{$organization/@entityID}">
	  {
	    (
	      $organization/credential/codedType[@code = $code and @codingScheme = $codingScheme]/..
	      ,
	      $organization/record
	    )
	  }
      </organization>
  else ()    
    
return csd_bl:wrap_organizations($orgs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_read_otherid

Description



organization_read_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $orgs0 := if (exists($careServicesRequest/otherID/@position)) then /CSD/organizationDirectory/*  else ()
let $orgs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($orgs0,$careServicesRequest/id) else ()
let $orgs2 := 
  if (count($orgs1) = 1) 
    then 
    let $organization :=  $orgs1[1] 
    return 
    <organization entityID="{$organization/@entityID}">
      {(
	if (exists($careServicesRequest/otherID/@position))
	  then 
	  for $id in $organization/otherID[position() = $careServicesRequest/otherID/@position]
	  return       
	  <otherID 
	  position="{$careServicesRequest/otherID/@position}"
	  code="{$id/@code}"
	  assigningAuthorityName="{$id/@assigningAuthorityName}">{string($id)}</otherID>
	else
	  ()
        ,      
	$organization/record
	)}
    </organization>
  else ()    
    
return csd_bl:wrap_organizations($orgs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:provider_name_search

Description



     Performs a search for all providers by name, coded type, address or ID. 
     The result set consists of all names  providers matching the search parameters ( id,
        otherID, commonName,codedType and address ). 
     The results set may be further restricted according to the limit parameters
        (start, max, record/@status and record/@updated). An ordering of
      the result set is not specified. 
    
      Response Results are returned as a valid CSD document with a root document element of
      <CSD/>. The results set is contained entirely within the <providerDirectory/>
      element and consists of the full content of the <provider/> elements of matching
      providers as maintained by the Care Services InfoManager. 
    Parameters Query Parameters are defined as the content of following elements: 
       <id/> csd:uniqueID: (optional) If present and the @urn attribute contains a
        non-empty value, it is a ID which uniquely identifies a provider. This is an exact match. 
       <otherID/> csd:otherID: (optional) If present and the
        @assigningAuthorityName attribute contains a non-empty value, then the result set is
        restricted to only those providers which have a <otherID/> with the given
        assigingAuthorityName and @code  <commonName/> xsd:string: (optional)
        If present and contains a non-empty value, then the result set should be restricted to those
        providers which have a <demographic/name/commonName/> containing this value. Case
        insensitive.
      <codedType/> csd:codedtype: If present and contains a non-empty value the
        result set should be restricted to those providers whose <codeType/@code> equals this
        value for the coding schema specified by the @codingSchema attribute. Case insensitive. 
       <address/> csd:address: (optional) Contains of any-number of child
        <addressLine/> elements as follows: 
          Text content xsd:string: (optional) If present and contains a non-empty value,
            then the results set should be restricted to those providers whose have an
            <addressLine/> with specified @component containing this value exactly. Case
            insensitive. 
          @component xsd:string : (Required attribute) The component of the address we
            are searching. Case insensitive.
        
      
      <start/>  xsd:int: (optional) The starting index for results returned.
        Defaults to 1, which indexes the first provider matching the search parameters
      <max/>  xsd:int: (optional) The maximum number of results returned. A value
        of less than zero implies no maximum.
       <record/>  csd:record : (optional) A child element to limit results
        according to 
          @status xsd:string: (optional) If present and contains a non-empty value, the
            result set should be restricted to those providers whose record/@status equals this
            value. Case insensitive.
          @updated xsd:dateTime: (optional) If present and contains a non-empty value,
            the result set should be restricted to those providers whose record/@updated is at least
            the given value.
        
      
    
    Example Request
    
         <careServicesRequest>
           <function uuid='4e8bbeb9-f5f5-11e2-b778-0800200c9a66'>
               <codedType code="2221" codingSchema="ISCO-08" /<
               <address>
                 <addressLine component='city'>Kigali</addressLine>
	       </address>
               <max>5</max>
           </function>
         </careServicesRequest>         
      
  

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
    
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

<CSD xmlns:csd="urn:ihe:iti:csd:2013"  >
  <organizationDirectory/>
  <serviceDirectory/>
  <facilityDirectory/>
  <providerDirectory>
    {

      let $provs0 := if (exists($careServicesRequest/id))
	then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id)
      else /CSD/providerDirectory/*

      let $provs1 := if(exists($careServicesRequest/otherID))
	then csd_bl:filter_by_other_id($provs0,$careServicesRequest/otherID)
      else $provs0
         
      let $provs2 := if(exists($careServicesRequest/commonName))
	then csd_bl:filter_by_common_name($provs1,$careServicesRequest/commonName)
      else $provs1
    
      let $provs3 := if (exists($careServicesRequest/codedType))
	then csd_bl:filter_by_coded_type($provs2,$careServicesRequest/codedType) 
      else $provs2
   
      let $provs4 := if (exists($careServicesRequest/address/addressLine))
	then csd_bl:filter_by_demographic_address($provs3, $careServicesRequest/address/addressLine) 
      else $provs3

      let $provs5 :=  if (exists($careServicesRequest/record)) 
	then csd_bl:filter_by_record($provs4,$careServicesRequest/record)      
      else  $provs4

      let $provs6:= if (exists($careServicesRequest/start)) then
	if (exists($careServicesRequest/max)) 
	  then csd_bl:limit_items($provs5,$careServicesRequest/start,$careServicesRequest/max)         
	else csd_bl:limit_items($provs5,$careServicesRequest/start,<max/>)         
      else
	if (exists($careServicesRequest/max)) 
	  then csd_bl:limit_items($provs5,<start/>,$careServicesRequest/max)         
	else $provs5

     return 
       for $prov in $provs6
	 return 
	 <provider entityID='{$prov/@entityID}'>
	   <demogrpahic>
	   {$prov/demographic/name}
	   </demogrpahic>
	 </provider>

    }     
  </providerDirectory>
</CSD>
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:service_get_urns

Description



service_get_urns

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  let $srvcs0 := if (exists($careServicesRequest/id)) then csd_bl:filter_by_primary_id(/CSD/serviceDirectory/*,$careServicesRequest/id) else /CSD/serviceDirectory/*
  let $srvcs1 := if (exists($careServicesRequest/codedType)) then csd_bl:filter_by_coded_type($srvcs0,$careServicesRequest/codedType)    else $srvcs0
  let $srvcs2 := if (exists($careServicesRequest/record)) then csd_bl:filter_by_record($srvcs1,$careServicesRequest/record) else $srvcs1
  let $srvcs3 := if (exists($careServicesRequest/start) and exists($careServicesRequest/max)) then csd_bl:limit_items($srvcs2,$careServicesRequest/start,$careServicesRequest/max) else $srvcs2
  let $srvcs4 := for $entityID in $srvcs3/@entityID         
   return <service entityID="{$entityID}"/>

  return csd_bl:wrap_services(($srvcs4))
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_address

Description



facility_create_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/address/@type))  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    return
      let $fac3:=  
      <facility entityID="{$facility/@entityID}">
        <address type="{$careServicesRequest/address/@type}"/>
      </facility>
       return (
	   insert node
	   $careServicesRequest/address
	   into $facility
	   ,
	csd_blu:wrap_updating_facilities($fac3)
	)
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_contact_point

Description



facility_create_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/contactPoint))  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    let $position := count($facility/contactPoint) +1
    let $cp := 
      <contactPoint>
	{(
	  if (exists($careServicesRequest/contactPoint/codedType)) then  $careServicesRequest/contactPoint/codedType else (),
	  if (exists($careServicesRequest/contactPoint/equipment)) then  $careServicesRequest/contactPoint/equipment else (),
	  if (exists($careServicesRequest/contactPoint/purpose)) then  $careServicesRequest/contactPoint/purpose else (),
	  if (exists($careServicesRequest/contactPoint/certificate)) then  $careServicesRequest/contactPoint/certificate else ()
	 )}
      </contactPoint>
    let $fac3:=  
    <facility entityID="{$facility/@entityID}">
	<contactPoint position="{$position}"/>
    </facility>
    return 
      (insert node $cp into $facility ,    
      csd_blu:wrap_updating_facilities($fac3)
      )
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_geocode

Description



facility_create_geocode

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/geocode) and count($fac1/geocode) = 0)  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    return
      let $fac3:=  
      <facility entityID="{$facility/@entityID}">
        <geocode/>
      </facility>
       return (
	   insert node
	   $careServicesRequest/geocode
	   into $facility
	   ,
	csd_blu:wrap_updating_facilities($fac3)
	)
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_language

Description



facility_create_language

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/language/@code) and exists($careServicesRequest/language/@codingScheme))  then $fac1 else ()
let $lang0 := $fac2/language[@code = $careServicesRequest/language/@code and @codingScheme = $fac2/language/@codingScheme] 
return  
  if ( count($fac2) = 1 and count($lang0) = 0)
    then
    let $facility:= $fac2[1]
    return
      let $fac3:=  
      <facility entityID="{$facility/@entityID}">
        <language code="{$careServicesRequest/language/@code}" codingScheme="{$careServicesRequest/language/@codingScheme}"/>
      </facility>
       return (
	   insert node
	   $careServicesRequest/language
	   into $facility
	   ,
	csd_blu:wrap_updating_facilities($fac3)
	)
  else  csd_blu:wrap_updating_facilities(())
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_operating_hours

Description



facility_create_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/operatingHours))  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    return
      let $fac3:=  
      <facility entityID="{$facility/@entityID}">
        <operatingHours/>
      </facility>
       return (
	   insert node
	   $careServicesRequest/operatingHours
	   into $facility
	   ,
	csd_blu:wrap_updating_facilities($fac3)
	)
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_otherid

Description



facility_create_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/otherID/@code))  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    let $position := count($facility/otherID) +1
    let $id := 
      if (exists($careServicesRequest/otherID/@assigningAuthorityName)) then
      <otherID code="{$careServicesRequest/otherID/@code}" assigningAuthorityName="{$careServicesRequest/otherID/@assigningAuthorityName}">{string($careServicesRequest/otherID)}</otherID>
    else 
      <otherID code="{$careServicesRequest/otherID/@code}">{string($careServicesRequest/otherID)}</otherID>
    let $fac3:=  
    <facility entityID="{$facility/@entityID}">
      <otherID position="{$position}"/>
    </facility>
    return 
      (insert node $id into $facility ,    
      csd_blu:wrap_updating_facilities($fac3)
      )
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_address

Description



facility_delete_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/address/@type))  then $fac1 else ()
let $address:= $fac2[1]/address[@type = $careServicesRequest/address/@type]
return 
let $fac:=  
      <facility entityID="{$fac2/@entityID}">
        <address type="{$careServicesRequest/address/@type}"/>
      </facility>
       return (
	   if (exists($address)) then (delete node $address) else ()
	   ,
	csd_blu:wrap_updating_facilities($fac)
	)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_contact_point

Description



facility_delete_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/contactPoint/@position)) 
    then 
    let $facilities := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($facilities) = 1 )
	then
	let  $cp :=  $facilities[1]/contactPoint[position() = $careServicesRequest/contactPoint/@position]
	return if (exists($cp)) then (delete node $cp) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_geocode

Description



facility_delete_geocode

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/geocode))  then $fac1 else ()
let $geocode:= $fac2[1]/geocode
return 
let $fac:=  
      <facility entityID="{$fac2/@entityID}">
        <geocode/>
      </facility>
       return (
	   if (exists($geocode)) then (delete node $geocode) else ()
	   ,
	csd_blu:wrap_updating_facilities($fac)
	)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_language

Description



facility_delete_language

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/language/@code))  then $fac1 else ()
let $language:= $fac2[1]/language[@code = $careServicesRequest/language/@code]
return 
let $fac:=  
      <facility entityID="{$fac2/@entityID}">
        <language code="{$careServicesRequest/language/@code}"/>
      </facility>
       return (
	   if (exists($language)) then (delete node $language) else ()
	   ,
	csd_blu:wrap_updating_facilities($fac)
	)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_name

Description



facility_delete_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/primaryName/@position)) 
    then 
    let $facilities := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($facilities) = 1 )
	then
	let  $name :=  $facilities[1]/primaryName[position() = $careServicesRequest/primaryName/@position]
	return if (exists($name)) then (delete node $name) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_operating_hours

Description



facility_delete_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $fac0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/facilityDirectory/*  else ()
let $fac1 := if (exists($careServicesRequest/organization/service/@position)) then $fac0  else ()
let $fac2 := if (exists($careServicesRequest/organization/service/operatingHours/@position)) then $fac1  else ()
let $fac3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($fac2,$careServicesRequest/id) else ()
let $oh := $fac3[1]/organizations/organization[upper-case(@entityID) =upper-case($careServicesRequest/organization/@entityID)]/service[position() = $careServicesRequest/organization/service/@position]/operatingHours[position() = $careServicesRequest/organization/service/operatingHours/@position]
return
  if (count($oh) = 1)
    then (delete node $oh) else ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_delete_otherid

Description



facility_delete_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu" ;
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/otherID/@position)) 
    then 
    let $facilities := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($facilities) = 1 )
	then
	let  $id :=  $facilities[1]/otherID[position() = $careServicesRequest/otherID/@position]
	return if (exists($id)) then (delete node $id) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_update_address

Description



facility_update_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/address/@type))  then $fac1 else ()
let $facility:= $fac2[1]
let $address:= $facility/address[@type = $careServicesRequest/address/@type]
return  
  if ( not(exists($address))) then
    csd_blu:wrap_updating_facilities(()) (: Address does not exist.  Do not update:)
  else
    let $fac3:=  
    <facility entityID="{$facility/@entityID}">
      <address type="{$careServicesRequest/address/@type}"/>
    </facility>
    return (
      csd_blu:bump_timestamp($facility),
      replace  node  $address with $careServicesRequest/address
      ,
      csd_blu:wrap_updating_facilities($fac3)
    )
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_update_contact_point

Description



facility_update_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $fac0 := if (exists($careServicesRequest/contactPoint/@position)) then /CSD/facilityDirectory/*  else ()
let $fac1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($fac0,$careServicesRequest/id) else ()
let $old_cp := $fac1[1]/contactPoint[position() = $careServicesRequest/contactPoint/@position]
return
  if (count($fac1) = 1 and exists($old_cp)) 
    then
    let $new_cp := $careServicesRequest/contactPoint
    let $fac2 := 
    <facility entityID="{$fac1[1]/@entityID}">
	  <contactPoint position="{$careServicesRequest/contactPoint/@position}"/>
    </facility>
    return
      (
	csd_blu:bump_timestamp($fac1[1]),
	if (exists($new_cp/codedType)) then (delete node $old_cp/codedType,insert node $new_cp/codedType into $old_cp) else (),
	if (exists($new_cp/equipment)) then (delete node $old_cp/equipment,insert node $new_cp/equipment into $old_cp) else (),
	if (exists($new_cp/purpose)) then (delete node $old_cp/purpose,insert node $new_cp/purpose into $old_cp) else (),
	if (exists($new_cp/certificate)) then (delete node $old_cp/certificate,insert node $new_cp/certificate into $old_cp) else (),
	csd_blu:wrap_updating_facilities($fac2)
     )
  else 	csd_blu:wrap_updating_facilities(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_update_name

Description



facility_update_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $fac0 := if (exists($careServicesRequest/primaryName/@position)) then /CSD/facilityDirectory/*  else ()
let $fac1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($fac0,$careServicesRequest/id) else ()
let $name := $fac1[1]/primaryName[position() = $careServicesRequest/primaryName/@position]
return
  if (count($fac1) = 1 and exists($name)) 
    then
    let $fac2 := 
    <facility entityID="{$fac1[1]/@entityID}">
	  <name position="{$careServicesRequest/primaryName/@position}"/>
    </facility>
    let $new_name := $careServicesRequest/primaryName
    return
      (
	csd_blu:bump_timestamp($fac1[1]),
	replace  node $name with $new_name,
	csd_blu:wrap_updating_facilities($fac2)
     )
  else 	csd_blu:wrap_updating_facilities(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_update_operating_hours

Description



facility_update_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $fac0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/facilityDirectory/*  else ()
let $fac1 := if (exists($careServicesRequest/organization/service/@position)) then $fac0  else ()
let $fac2 := if (exists($careServicesRequest/organization/service/operatingHours/@position)) then $fac1  else ()
let $fac3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($fac2,$careServicesRequest/id) else ()
let $oh := $fac3[1]/organizations/organization[upper-case(@entityID) =upper-case($careServicesRequest/organization/@entityID)]/service[position() = $careServicesRequest/organization/service/@position]/operatingHours[position() = $careServicesRequest/organization/service/operatingHours/@position]
return
  if (count($oh) = 1 and count($fac3) = 1)
    then
    let $new_oh := $careServicesRequest/organization/service/operatingHours
    let $fac4 := 
    <facility entityID="{$fac1[1]/@entityID}">
      <organizations>
	<organization entityID="{$careServicesRequest/organization/@entityID}">
	  <service position="{$careServicesRequest/organization/service/@position}" >
	    <operatingHours position="{$careServicesRequest/organization/service/operatingHours/@position}"/>
	  </service>
	</organization>
      </organizations>
    </facility>
    return
      (
	csd_blu:bump_timestamp($fac3[1]),
	if (exists($new_oh/openFlag)) then (delete node $oh/openFlag,insert node $new_oh/openFlag into $oh) else (),
	if (exists($new_oh/dayOfTheWeek)) then (delete node $oh/dayOfTheWeek,insert node $new_oh/dayOfTheWeek into $oh) else (),
	if (exists($new_oh/beginningHour)) then (delete node $oh/beginningHour,insert node $new_oh/beginningHour into $oh) else (),
	if (exists($new_oh/endingHour)) then (delete node $oh/endingHour,insert node $new_oh/endingHour into $oh) else (),
	if (exists($new_oh/beginEffectiveDate)) then (delete node $oh/beginEffectiveDate,insert node $new_oh/beginEffectiveDate into $oh) else (),
	if (exists($new_oh/endEffectiveDate)) then (delete node $oh/endEffectiveDate,insert node $new_oh/endEffectiveDate into $oh) else (),
	csd_blu:wrap_updating_facilities($fac4)
     )
  else 	csd_blu:wrap_updating_facilities(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_update_otherid

Description



facility_update_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $fac0 := if (exists($careServicesRequest/otherID)) then /CSD/facilityDirectory/*  else ()
let $fac1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($fac0,$careServicesRequest/id) else ()
let $id := $fac1[1]/otherID[position() = $careServicesRequest/otherID/@position]
return
  if (count($fac1) = 1 and exists($id)) 
    then
    let $fac2 := 
    <facility entityID="{$fac1[1]/@entityID}">
      <otherID position="{$careServicesRequest/otherID/@position}"/>
    </facility>
    return
      (
	csd_blu:bump_timestamp($fac1[1]),
	if ($careServicesRequest/otherID/@code) 
	  then 	    
	    if (exists($id/@code))
	      then  (replace value of node $id/@code with $careServicesRequest/otherID/@code)
	      else (insert node  $careServicesRequest/otherID/@code into $id)
	  else (),
	if (exists($careServicesRequest/otherID/@assigningAuthorityName) )
	  then 
	    if (exists($id/@assigningAuthorityName))
	      then replace value of node $id/@assigningAuthorityName with $careServicesRequest/otherID/@assigningAuthorityName
	      else insert node $careServicesRequest/otherID/@assigningAuthorityName into $id		
	  else (),
	if (not(string($careServicesRequest/otherID) = '')) 
	  then (replace value of node $id with string($careServicesRequest/otherID))
	  else (),
	csd_blu:wrap_updating_facilities($fac2)
     )
  else 	csd_blu:wrap_updating_facilities(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_address

Description



health_worker_create_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/address/@type))  then $provs1 else ()
return  
  if ( count($provs2) = 1 )
    then
    let $provider:= $provs2[1]
    let $demo := $provider/demographic
    return if (exists($demo/address[@type = $careServicesRequest/address/@type])) 
      then
      csd_blu:wrap_updating_providers(()) (: Do not allow the same type to be created more than once:)
    else
      let $provs3:=  
      <provider entityID="{$provider/@entityID}">
        <demographic><address type="{$careServicesRequest/address/@type}"/></demographic>
      </provider>
       return (
	 if (not(exists($demo)))
	   then
	   insert node
	   <demographic>{$careServicesRequest/address}</demographic>
	   into $provider	
	 else	
	   insert node  $careServicesRequest/address into $demo
	   ,
	csd_blu:wrap_updating_providers($provs3)
	)
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_contact_point

Description



health_worker_create_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/contactPoint))  then $provs1 else ()
return  
  if ( count($provs2) = 1 )
    then
    let $provider:= $provs2[1]
    let $position := count($provider/demographic/contactPoint) +1
    let $cp := 
      <contactPoint>
	{(
	  if (exists($careServicesRequest/contactPoint/codedType)) then  $careServicesRequest/contactPoint/codedType else (),
	  if (exists($careServicesRequest/contactPoint/equipment)) then  $careServicesRequest/contactPoint/equipment else (),
	  if (exists($careServicesRequest/contactPoint/purpose)) then  $careServicesRequest/contactPoint/purpose else (),
	  if (exists($careServicesRequest/contactPoint/certificate)) then  $careServicesRequest/contactPoint/certificate else ()
	 )}
      </contactPoint>
    let $provs3:=  
    <provider entityID="{$provider/@entityID}">
      <demographic>
	<contactPoint position="{$position}"/>
      </demographic>
    </provider>
    return 
      (insert node $cp into $provider/demographic ,    
      csd_blu:wrap_updating_providers($provs3)
      )
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_credential

Description



health_worker_create_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then $provs1  else ()
let $cred_request := $careServicesRequest/credential
let $code:= $cred_request/codedType/@code
let $codingScheme:= $cred_request/codedType/@codingScheme
let $creds0 := $provs2/credential/codedType[@code = $code and @codingScheme = $codingScheme]
return  
  if ( count($provs2) = 1 and count($creds0) = 0)  (:DO NOT ALLOW SAME CRED TWICE :)
    then
    let $provider:= $provs2[1]
    let $cred_rec :=
    <credential>
      <codedType code="{$code}" codingScheme="{$codingScheme}"/>
    </credential>
    let $cred_new :=
    <credential>
      <codedType code="{$code}" codingScheme="{$codingScheme}"/>
      {(
	if (exists($cred_request/number)) then $cred_request/number else (),
	if (exists($cred_request/issuingAuthority)) then $cred_request/issuingAuthority else (),
	if (exists($cred_request/credentialIssueDate)) then $cred_request/credentialIssueDate else (),
        if (exists($cred_request/credentialRenewalDate)) then $cred_request/credentialRenewalDate else ()
      )}
    </credential>
    let $provs3:=  
    <provider entityID="{$provider/@entityID}">{$cred_rec}</provider>
    return 
	(
	insert node $cred_new into $provider,
	csd_blu:wrap_updating_providers($provs3)
	)

  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_name

Description



health_worker_create_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/name))  then $provs1 else ()
return  
  if ( count($provs2) = 1 )
    then
    let $provider:= $provs2[1]
    let $position := count($provider/demographic/name) +1
    let $provs3:=  
    <provider entityID="{$provider/@entityID}">
      <demographic>
	<name position="{$position}"/>
      </demographic>
    </provider>
    return 
      (
	if (exists($provider/demographic))
	  then insert node $careServicesRequest/name into $provider/demographic 
	else
	  insert node <demographic>{$careServicesRequest/name}</demographic> into $provider
	  ,   csd_blu:wrap_updating_providers($provs3)
	)
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_operating_hours

Description



health_worker_create_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/facility/service/operatingHours)) then $provs1  else ()
let $provs3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs2,$careServicesRequest/id) else ()
let $srvc := $provs3[1]/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]
return if (count($srvc) = 1) 
  then
  let $position := count($srvc/operatingHours)
  let $provs4:=  
  <provider entityID="{$careServicesRequest/id/@entityID}">
    <facilities>
      <facility entityID="{$careServicesRequest/facility/@entityID}">
	<service position="{$careServicesRequest/facility/service/@position}" entityID="{$careServicesRequest/facility/service/@entityID}">
	  <operatingHours position="{$position}" />
	</service>
      </facility>
    </facilities>
  </provider>
  return 
    (insert node $careServicesRequest/facility/service/operatingHours into $srvc[1] ,    
    csd_blu:wrap_updating_providers($provs4)
  )
else   csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_org_address

Description



health_worker_create_org_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/organization/@entityID))  then $provs1 else ()
let $provs3 := if (exists($careServicesRequest/organization/address/@type))  then $provs2 else ()
let $provider:= $provs3[1]
let $orgs := $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
let $org := if(count($orgs) =1) then $orgs[1] else ()
let $address := $org/address[@type = $careServicesRequest/organization/address/@type]
return if (not(exists($org)) or exists($address))
  then   csd_blu:wrap_updating_providers(()) (:do not create an already existing one :)	  
else
  (
    insert node $careServicesRequest/organization/address into $org,
    csd_blu:wrap_updating_providers(    
	<provider entityID="{$provider/@entityID}">
	  <organizations>
	    <organization entityID="{$org/@entityID}">
	      <contactPoint position="{$careServicesRequest/organization/address/@type}"/>
	    </organization>
	  </organizations>
	</provider>
     )
)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_org_contact_point

Description



health_worker_create_org_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/organization/@entityID))  then $provs1 else ()
let $provs3 := if (exists($careServicesRequest/organization/contactPoint))  then $provs2 else ()
return  
  if ( count($provs3) = 1 )
    then
    let $provider:= $provs3[1]
    let $orgs := $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
    return 
      if (count($orgs) = 1) 
	then
	let $org := $orgs[1]
	let $position := count($org/contactPoint) +1
	let $new_cp := $careServicesRequest/organization/contactPoint
	let $cp := 
	<contactPoint>
	  {(
	    if (exists($new_cp/codedType)) then  $new_cp/codedType else (),
            if (exists($new_cp/equipment)) then  $new_cp/equipment else (),
            if (exists($new_cp/purpose)) then  $new_cp/purpose else (),
            if (exists($new_cp/certificate)) then  $new_cp/certificate else ()
	   )}
	</contactPoint>
	let $provs3:=  
	<provider entityID="{$provider/@entityID}">
	  <organizations>
	    <organization entityID="{$org/@entityID}">
	      <contactPoint position="{$position}"/>
	    </organization>
	  </organizations>
	</provider>
	return 
	  (insert node $cp into $org ,    
	  csd_blu:wrap_updating_providers($provs3)
	)
      else   csd_blu:wrap_updating_providers(())
    else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_otherid

Description



health_worker_create_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/otherID/@code))  then $provs1 else ()
return  
  if ( count($provs2) = 1 )
    then
    let $provider:= $provs2[1]
    let $position := count($provider/otherID) +1
    let $id := 
      if (exists($careServicesRequest/otherID/@assigningAuthorityName)) then
      <otherID code="{$careServicesRequest/otherID/@code}" assigningAuthorityName="{$careServicesRequest/otherID/@assigningAuthorityName}">{string($careServicesRequest/otherID)}</otherID>
    else 
      <otherID code="{$careServicesRequest/otherID/@code}">{string($careServicesRequest/otherID)}</otherID>
    let $provs3:=  
    <provider entityID="{$provider/@entityID}">
      <otherID position="{$position}"/>
    </provider>
    return 
      (insert node $id into $provider ,    
      csd_blu:wrap_updating_providers($provs3)
      )
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_provider

Description



health_worker_create_provider

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
(:
import module namespace random = "http://basex.org/modules/random";
:)
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()  
return
  if (count($provs0) > 0) then (csd_blu:wrap_updating_providers(()))     (:do not allow duplicate ENTITYIDs:)
else
  let $entityID := 
    if (exists($careServicesRequest/id/@entityID) and not($careServicesRequest/id/@entityID = '')) then $careServicesRequest/id/@entityID
  else concat('urn:uuid:', random:uuid())
  let $time :=current-dateTime()
  let $prov := 
  <provider entityID="{$entityID}">
    {(
      $careServicesRequest/codedType,
      <demographic>
	{(
	  $careServicesRequest/gender,
	  $careServicesRequest/dateOfBirth
	 )}
	 </demographic>,
	 $careServicesRequest/language,
         $careServicesRequest/specialty,
	 if ($careServicesRequest/status) 
	   then
	   <record created="{$time}" updated="{$time}" status="{$careServicesRequest/status}" sourceDirectory="{$careServicesRequest/sourceDirectory}"/>
	 else 
	   <record created="{$time}" updated="{$time}" status="Active" sourceDirectory="{$careServicesRequest/sourceDirectory}"/>
     )}
  </provider>
  
  return (
    insert node $prov into /CSD/providerDirectory,  
    csd_blu:wrap_updating_providers(<provider entityID="{$entityID}"/>)
  )

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_provider_facility

Description



health_worker_create_provider_facility

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/facility/@entityID))  then $provs1 else ()
let $facs0 := $provs2/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
let $facilities := $provs2/facilities[1]
return  
  if ( count($provs2) = 1 and count($facs0) = 0)  (:DO NOT ALLOW SAME ORG TWICE :)
    then
    let $provider:= $provs2[1]
    let $fac :=  <facility entityID="{$careServicesRequest/facility/@entityID}"/>
    let $facs_new :=  <facilities>{$fac}</facilities>

    let $provs3:=  
    <provider entityID="{$provider/@entityID}">{$facs_new}</provider>
    return 
      if (exists($facilities)) 
	then
	(insert node $fac into $facilities, 
	csd_blu:wrap_updating_providers($provs3)
	)
      else
	(
	insert node $facs_new into $provider,
	csd_blu:wrap_updating_providers($provs3)
	)

  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_provider_organization

Description



health_worker_create_provider_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/organization/@entityID))  then $provs1 else ()
let $orgs0 := $provs2/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
let $organizations := $provs2/organizations[1]
return  
  if ( count($provs2) = 1 and count($orgs0) = 0)  (:DO NOT ALLOW SAME ORG TWICE :)
    then
    let $provider:= $provs2[1]
    let $org :=  <organization entityID="{$careServicesRequest/organization/@entityID}"/>
    let $orgs_new :=  <organizations>{$org}</organizations>

    let $provs3:=  
    <provider entityID="{$provider/@entityID}">{$orgs_new}</provider>
    return 
      if (exists($organizations)) 
	then
	(insert node $org into $organizations, 
	csd_blu:wrap_updating_providers($provs3)
	)
      else
	(
	insert node $orgs_new into $provider,
	csd_blu:wrap_updating_providers($provs3)
	)

  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_create_service

Description



health_worker_create_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/facility/@entityID))  then $provs1 else ()
let $provs3 := if (exists($careServicesRequest/facility/service/@entityID))  then $provs2 else ()
let $provider:=   if ( count($provs3) = 1 ) then $provs3[1] else ()
let $facs := $provider/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
let $fac := if (count($facs) = 1) then $facs[1] else ()
return if (exists($fac))
  then
  let $position := count($fac/service) +1
  let $srvc := 
  <service entityID="{$careServicesRequest/facility/service/@entityID}">
    {(
      $careServicesRequest/facility/service/organization,
      $careServicesRequest/facility/service/language,
      $careServicesRequest/facility/service/freeBusyURI
     )}
  </service>
  let $provs3:=  
  <provider entityID="{$provider/@entityID}">
    <facilities>
      <facility entityID="{$fac/@entityID}">
	<service position="{$position}" entityID="{$careServicesRequest/facility/service/@entityID}"/>
      </facility>
    </facilities>
  </provider>
  return 
    (insert node $srvc into $fac ,    
    csd_blu:wrap_updating_providers($provs3)
  )
else   csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_address

Description



health_worker_delete_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/address/@type))  then $provs1 else ()
let $address:= $provs2[1]/demographic/address[@type = $careServicesRequest/address/@type]
return if (exists($address)) then (delete node $address) else ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_contact_point

Description



health_worker_delete_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/contactPoint/@position)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let  $cp :=  $providers[1]/demographic/contactPoint[position() = $careServicesRequest/contactPoint/@position]
	return if (exists($cp)) then (delete node $cp) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_credential

Description



health_worker_delete_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then $provs1  else ()
let $cred_new := $careServicesRequest/credential
let $code:= $cred_new/codedType/@code
let $codingScheme:= $cred_new/codedType/@codingScheme
let $creds0 := $provs2/credential[@code = $code and @codingScheme = $codingScheme]
return  
  if ( count($provs2) = 1 and count($creds0) = 1)  then
    delete node $creds0[1]
  else
    ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_name

Description



health_worker_delete_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/name/@position)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let  $name :=  $providers[1]/demographic/name[position() = $careServicesRequest/name/@position]
	return if (exists($name)) then (delete node $name) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_operating_hours

Description



health_worker_delete_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/facility/service/operatingHours/@position)) then $provs1  else ()
let $provs3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs2,$careServicesRequest/id) else ()
let $oh := $provs3[1]/facilities/facility[upper-case(@entityID) =upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]/operatingHours[position() = $careServicesRequest/facility/service/operatingHours/@position]
return
  if (count($oh) = 1)
    then (delete node $oh) else ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_org_address

Description



health_worker_delete_org_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/organization/@entityID))  then $provs1 else ()
let $provs3 := if (exists($careServicesRequest/organization/address/@type))  then $provs2 else ()
let $provider:= $provs3[1]
let $orgs := $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
let $org := if(count($orgs) =1) then $orgs[1] else ()
let $address := $org/address[@type = $careServicesRequest/organization/address/@type]
return if (exists($address)) then (delete node $address) else ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_org_contact_point

Description



health_worker_delete_org_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/organization/contactPoint/@position) and exists($careServicesRequest/organization/@entityID)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let $orgs := $providers[1]/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
	return
	  if (count($orgs) = 1) then
	    let  $cp :=  $orgs[1]/contactPoint[position() = $careServicesRequest/organization/contactPoint/@position]
	    return if (exists($cp)) then (delete node $cp) else ()
	  else () 
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_otherid

Description



health_worker_delete_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu" ;
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/otherID/@position)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let  $id :=  $providers[1]/otherID[position() = $careServicesRequest/otherID/@position]
	return if (exists($id)) then (delete node $id) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_provider

Description



health_worker_delete_provider

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()  
return  if (count($provs0) = 1) then
  delete node $provs0[1] else ()
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_provider_facility

Description



health_worker_delete_provider_facility

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/facility/@entityID)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let  $fac :=  $providers[1]/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
	return if (exists($fac)) then (delete node $fac) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_provider_organization

Description



health_worker_delete_provider_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/organization/@entityID)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let  $org :=  $providers[1]/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
	return if (exists($org)) then (delete node $org) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_delete_service

Description



health_worker_delete_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
  if (exists($careServicesRequest/facility/service/@position) and exists($careServicesRequest/facility/@entityID)) 
    then 
    let $providers := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
    return
      if ( count($providers) = 1 )
	then
	let $facs := $providers[1]/facilities/facility[upper-case(@entityID) = upper-case($careServicesRequest/facility/@entityID)]
	return
	  if (count($facs) = 1) then
	    let  $srvc :=  $facs[1]/service[position() = $careServicesRequest/facility/service/@position]
	    return if (exists($srvc)) then (delete node $srvc) else ()
	  else () 
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_address

Description



health_worker_update_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/address/@type))  then $provs1 else ()
let $provider:= $provs2[1]
let $demo := $provider/demographic
let $address:= $demo/address[@type = $careServicesRequest/address/@type]
return  
  if ( not(exists($address))) then
    csd_blu:wrap_updating_providers(()) (: Address does not exist.  Do not update:)
  else
    let $provs3:=  
    <provider entityID="{$provider/@entityID}">
      <demographic><address type="{$careServicesRequest/address/@type}"/></demographic>
    </provider>
    return (
      csd_blu:bump_timestamp($provider),
      replace  node  $address with $careServicesRequest/address
      ,
      csd_blu:wrap_updating_providers($provs3)
    )
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_contact_point

Description



health_worker_update_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/contactPoint/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $old_cp := $provs1[1]/demographic/contactPoint[position() = $careServicesRequest/contactPoint/@position]
return
  if (count($provs1) = 1 and exists($old_cp)) 
    then
    let $new_cp := $careServicesRequest/contactPoint
    let $provs2 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <demographic>
	<contactPoint position="{$careServicesRequest/contactPoint/@position}"/>
      </demographic>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs1[1]),
	delete node $old_cp/codeType,
	if (exists($new_cp/codeType)) then insert node $new_cp/codeType into $old_cp else (),
	delete node $old_cp/equipment,
	if (exists($new_cp/equipment)) then insert node $new_cp/equipment into $old_cp else (),
	delete node $old_cp/purpose,
	if (exists($new_cp/purpose)) then insert node $new_cp/purpose into $old_cp else (),
	delete node $old_cp/certificate,
	if (exists($new_cp/certificate)) then insert node $new_cp/certificate into $old_cp else (),
	csd_blu:wrap_updating_providers($provs2)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_credential

Description



health_worker_update_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then $provs1  else ()
let $cred_new := $careServicesRequest/credential
let $code:= $cred_new/codedType/@code
let $codingScheme:= $cred_new/codedType/@codingScheme
let $creds0 := $provs2/credential/codedType[@code = $code and @codingScheme = $codingScheme]
return  
  if ( count($provs2) = 1 and count($creds0) = 1)  (:Update only:)
    then
    let $cred_old := $creds0[1]/..
    let $provider:= $provs2[1]
    let $provs3 := 
      <provider entityID="{$provider/@entityID}">
	<credential>
	  <codedType code="{$code}" codingScheme="{$codingScheme}"/>
	</credential>
      </provider>


    return
      
      (
	csd_blu:bump_timestamp($provider),
	if (exists($cred_new/issuingAuthority)) then
	  (if (exists($cred_old/issuingAuthority)) then (delete node $cred_old/issuingAuthority) else (),
	  insert node $cred_new/issuingAuthority into $cred_old)
	else (),
	if (exists($cred_new/number)) then
	  (if (exists($cred_old/number)) then (delete node $cred_old/number) else (),
	  insert node $cred_new/number into $cred_old)
	else (),
	if (exists($cred_new/credentialIssueDate)) then
	  (if (exists($cred_old/credentialIssueDate)) then (delete node $cred_old/credentialIssueDate) else (),
	  insert node $cred_new/credentialIssueDate into $cred_old)
	else (),
	if (exists($cred_new/credentialRenewalDate)) then
	  (if (exists($cred_old/credentialRenewalDate)) then (delete node $cred_old/credentialRenewalDate) else (),
	  insert node $cred_new/credentialRenewalDate into $cred_old)
	else (),
	csd_blu:wrap_updating_providers($provs3)
       )
  else 	csd_blu:wrap_updating_providers(())
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_name

Description



health_worker_update_name

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/name/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $name := $provs1[1]/demographic/name[position() = $careServicesRequest/name/@position]
return
  if (count($provs1) = 1 and exists($name)) 
    then
    let $provs2 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <demographic>
	<name position="{$careServicesRequest/name/@position}"/>
      </demographic>
    </provider>
    let $new_name := 
    <name>
     {$careServicesRequest/name/*}
    </name>
    return
      (
	csd_blu:bump_timestamp($provs1[1]),
	replace  node $name with $new_name,
	csd_blu:wrap_updating_providers($provs2)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_operating_hours

Description



health_worker_update_operating_hours

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/facility/service/operatingHours/@position)) then $provs1  else ()
let $provs3 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs2,$careServicesRequest/id) else ()
let $oh := $provs3[1]/facilities/facility[upper-case(@entityID) =upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]/operatingHours[position() = $careServicesRequest/facility/service/operatingHours/@position]
return
  if (count($oh) = 1 and count($provs3) = 1)
    then
    let $new_oh := $careServicesRequest/facility/service/operatingHours
    let $provs4 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <facilities>
	<facility entityID="{$careServicesRequest/facility/@entityID}">
	  <service position="{$careServicesRequest/facility/service/@position}" >
	    <operatingHours position="{$careServicesRequest/facility/service/operatingHours/@position}"/>
	  </service>
	</facility>
      </facilities>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs3[1]),
	delete node $oh/openFlag,
	if (exists($new_oh/openFlag)) then insert node $new_oh/openFlag into $oh else (),
	delete node $oh/dayOfTheWeek,
	if (exists($new_oh/dayOfTheWeek)) then insert node $new_oh/dayOfTheWeek into $oh else (),
	delete node $oh/beginningHour,
	if (exists($new_oh/beginningHour)) then insert node $new_oh/beginningHour into $oh else (),
	delete node $oh/endingHour,
	if (exists($new_oh/endingHour)) then insert node $new_oh/endingHour into $oh else (),
	delete node $oh/beginEffectiveDate,
	if (exists($new_oh/beginEffectiveDate)) then insert node $new_oh/beginEffectiveDate into $oh else (),
	delete node $oh/endEffectiveDate,
	if (exists($new_oh/endEffectiveDate)) then insert node $new_oh/endEffectiveDate into $oh else (),
	csd_blu:wrap_updating_providers($provs4)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_org_address

Description



health_worker_update_org_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $provs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $provs1 := if (count($provs0) = 1) then $provs0 else ()
let $provs2 := if (exists($careServicesRequest/organization/@entityID))  then $provs1 else ()
let $provs3 := if (exists($careServicesRequest/organization/address/@type))  then $provs2 else ()
let $provider:= $provs3[1]
let $org_container := $provider/organizations[1]
let $orgs := $provider/organizations/organization[upper-case(@entityID) = upper-case($careServicesRequest/organization/@entityID)]
let $org := if(count($orgs) =1) then $orgs[1] else ()
let $address := $org/address[@type = $careServicesRequest/organization/address/@type]
return if (not(exists($address)))
  then   csd_blu:wrap_updating_providers((<bad0/>,$careServicesRequest)) (:do not update an non-existent one :)
else
  (
    csd_blu:bump_timestamp($provider),
    replace node $address with  $careServicesRequest/organization/address ,
     csd_blu:wrap_updating_providers(    
       <provider entityID="{$provider/@entityID}">
	 <organizations>
	   <organization entityID="{$org/@entityID}">
	     <contactPoint position="{$address/@type}"/>
	   </organization>
	 </organizations>
       </provider>
    )
)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_org_contact_point

Description



health_worker_update_org_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/organization/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/organization/contactPoint/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs1,$careServicesRequest/id) else ()
let $old_cp := $provs2[1]/organizations/organization[upper-case(@entityID) =upper-case($careServicesRequest/organization/@entityID)]/contactPoint[position() = $careServicesRequest/organization/contactPoint/@position]
return
  if (count($provs2) = 1 and exists($old_cp)) 
    then
    let $new_cp := $careServicesRequest/organization/contactPoint
    let $provs3 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <organizations>
	<organization entityID="{$careServicesRequest/organization/@entityID}">
	  <contactPoint position="{$careServicesRequest/organization/contactPoint/@position}"/>
	</organization>
      </organizations>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs2[1]),
	delete node $old_cp/codeType,
	if (exists($new_cp/codeType)) then insert node $new_cp/codeType into $old_cp else (),
	delete node $old_cp/equipment,
	if (exists($new_cp/equipment)) then insert node $new_cp/equipment into $old_cp else (),
	delete node $old_cp/purpose,
	if (exists($new_cp/purpose)) then insert node $new_cp/purpose into $old_cp else (),
	delete node $old_cp/certificate,
	if (exists($new_cp/certificate)) then insert node $new_cp/certificate into $old_cp else (),
	csd_blu:wrap_updating_providers($provs3)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_otherid

Description



health_worker_update_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/otherID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $id := $provs1[1]/otherID[position() = $careServicesRequest/otherID/@position]
return
  if (count($provs1) = 1 and exists($id)) 
    then
    let $provs2 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <otherID position="{$careServicesRequest/otherID/@position}"/>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs1[1]),
	if ($careServicesRequest/otherID/@code) 
	  then 	    
	    if (exists($id/@code))
	      then  (replace value of node $id/@code with $careServicesRequest/otherID/@code)
	      else (insert node  $careServicesRequest/otherID/@code into $id)
	  else (),
	if (exists($careServicesRequest/otherID/@assigningAuthorityName) )
	  then 
	    if (exists($id/@assigningAuthorityName))
	      then replace value of node $id/@assigningAuthorityName with $careServicesRequest/otherID/@assigningAuthorityName
	      else insert node $careServicesRequest/otherID/@assigningAuthorityName into $id		
	  else (),
	if (not(string($careServicesRequest/otherID) = '')) 
	  then (replace value of node $id with string($careServicesRequest/otherID))
	  else (),
	csd_blu:wrap_updating_providers($provs2)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_provider

Description



health_worker_update_provider

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:) 
let $provs0 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()  
return
  if (not (count($provs0) = 1)) 
    then ( csd_blu:wrap_updating_providers((<bad/>)))     (:do nothing :)
  else
    let $provider := $provs0[1]
    let $demo := $provider/demographic
    let $dob := $demo/dateOfBirth
    let $gender := $demo/gender
    return 
      (
	csd_blu:bump_timestamp($provider),
	delete node $provider/codedType,
	insert node $careServicesRequest/codedType into $provider,
	if (not(exists($demo)))
	  then
	  insert node
	  <demographic>
	    {($careServicesRequest/gender,$careServicesRequest/dateOfBirth)}
	  </demographic>
	  into $provider	
	else	
	  (
	    if (not(exists($dob))) then  insert node $careServicesRequest/dateOfBirth into $demo else replace value of node  $demo/dateOfBirth with $careServicesRequest/dateOfBirth,
	    if (not(exists($gender))) then  insert node $careServicesRequest/gender into $demo else replace value of node  $demo/gender with $careServicesRequest/gender
	),
	delete node $provider/language,
	insert node $careServicesRequest/language into $provider,
	delete node $provider/specialty,
	insert node $careServicesRequest/specialty into $provider,
	if (exists($provider/record/@status)) 
	  then replace value of node $provider/record/@status with $careServicesRequest/status 
	else insert node attribute { 'status' } { string($careServicesRequest/status) } into $provider/record,
	csd_blu:wrap_updating_providers(<provider entityID="{$provider/@entityID}" />)
    )

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_provider_facility

Description



health_worker_update_provider_facility

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
() (: does nothing:)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_provider_organization

Description



health_worker_update_provider_organization

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
() (: does nothing:)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:health_worker_update_service

Description



health_worker_update_service

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   
let $provs0 := if (exists($careServicesRequest/facility/@entityID)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/facility/service/@position)) then $provs0  else ()
let $provs2 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs1,$careServicesRequest/id) else ()
let $old_srvc := $provs2[1]/facilities/facility[upper-case(@entityID) =upper-case($careServicesRequest/facility/@entityID)]/service[position() = $careServicesRequest/facility/service/@position]
return
  if (count($provs2) = 1 and exists($old_srvc)) 
    then
    let $new_srvc := $careServicesRequest/facility/service
    let $provs3 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <facilities>
	<facility entityID="{$careServicesRequest/facility/@entityID}">
	  <service position="{$careServicesRequest/facility/service/@position}" />
	</facility>
      </facilities>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs2[1]),
	delete node $old_srvc/freeBusyURI,
	if (exists($new_srvc/freeBusyURI)) then insert node $new_srvc/freeBusyURI into $old_srvc else (),
	delete node $old_srvc/organization,
	if (exists($new_srvc/organization)) then insert node $new_srvc/organization into $old_srvc else (),
	delete node $old_srvc/language,
	if (exists($new_srvc/language)) then insert node $new_srvc/language into $old_srvc else (),
	csd_blu:wrap_updating_providers($provs3)
     )
  else 	csd_blu:wrap_updating_providers(())

Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:facility_create_address

Description



facility_create_address

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $fac0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/facilityDirectory/*,$careServicesRequest/id) else ()
let $fac1 := if (count($fac0) = 1) then $fac0 else ()
let $fac2 := if (exists($careServicesRequest/address/@type))  then $fac1 else ()
return  
  if ( count($fac2) = 1 )
    then
    let $facility:= $fac2[1]
    return
      let $fac3:=  
      <facility entityID="{$facility/@entityID}">
        <address type="{$careServicesRequest/address/@type}"/>
      </facility>
       return (
	   insert node
	   $careServicesRequest/address
	   into $facility
	   ,
	csd_blu:wrap_updating_facilities($fac3)
	)
  else  csd_blu:wrap_updating_facilities(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_create_contact_point

Description



organization_create_contact_point

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $orgs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) else ()
let $orgs1 := if (count($orgs0) = 1) then $orgs0 else ()
let $orgs2 := if (exists($careServicesRequest/contactPoint))  then $orgs1 else ()
return  
  if ( count($orgs2) = 1 )
    then
    let $organization:= $orgs2[1]
    let $position := count($organization/contactPoint) +1
    let $cp := 
      <contactPoint>
	{(
	  if (exists($careServicesRequest/contactPoint/codedType)) then  $careServicesRequest/contactPoint/codedType else (),
	  if (exists($careServicesRequest/contactPoint/equipment)) then  $careServicesRequest/contactPoint/equipment else (),
	  if (exists($careServicesRequest/contactPoint/purpose)) then  $careServicesRequest/contactPoint/purpose else (),
	  if (exists($careServicesRequest/contactPoint/certificate)) then  $careServicesRequest/contactPoint/certificate else ()
	 )}
      </contactPoint>
    let $orgs3:=  
    <organization entityID="{$organization/@entityID}">
	<contactPoint position="{$position}"/>
    </organization>
    return 
      (insert node $cp into $organization ,    
      csd_blu:wrap_updating_organizations($orgs3)
      )
  else  csd_blu:wrap_updating_organizations(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_create_credential

Description



organization_create_credential

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $orgs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) else ()
let $orgs1 := if (count($orgs0) = 1) then $orgs0 else ()
let $orgs2 := if (exists($careServicesRequest/credential/codedType/@code) and exists($careServicesRequest/credential/codedType/@codingScheme) ) then $orgs1  else ()
let $cred_request := $careServicesRequest/credential
let $code:= $cred_request/codedType/@code
let $codingScheme:= $cred_request/codedType/@codingScheme
let $creds0 := $orgs2/credential/codedType[@code = $code and @codingScheme = $codingScheme]
return  
  if ( count($orgs2) = 1 and count($creds0) = 0)  (:DO NOT ALLOW SAME CRED TWICE :)
    then
    let $organization:= $orgs2[1]
    let $cred_rec :=
    <credential>
      <codedType code="{$code}" codingScheme="{$codingScheme}"/>
    </credential>
    let $cred_new :=
    <credential>
      <codedType code="{$code}" codingScheme="{$codingScheme}"/>
      {(
	if (exists($cred_request/number)) then $cred_request/number else (),
	if (exists($cred_request/issuingAuthority)) then $cred_request/issuingAuthority else (),
	if (exists($cred_request/credentialIssueDate)) then $cred_request/credentialIssueDate else (),
        if (exists($cred_request/credentialRenewalDate)) then $cred_request/credentialRenewalDate else ()
      )}
    </credential>
    let $orgs3:=  
    <organization entityID="{$organization/@entityID}">{$cred_rec}</organization>
    return 
	(
	insert node $cred_new into $organization,
	csd_blu:wrap_updating_organizations($orgs3)
	)

  else  csd_blu:wrap_updating_organizations(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr:stored-function:organization_create_otherid

Description



organization_create_otherid

Definition

Source:
import module namespace csd_bl = "https://github.com/openhie/openinfoman/csd_bl";
import module namespace csd_blu = "https://github.com/openhie/openinfoman/csd_blu";
declare default element  namespace   "urn:ihe:iti:csd:2013";
declare variable $careServicesRequest as item() external;

(: 
   The query will be executed against the root element of the CSD document.
   
   The dynamic context of this query has $careServicesRequest set to contain any of the search 
   and limit paramaters as sent by the Service Finder
:)   

let $orgs0 := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/organizationDirectory/*,$careServicesRequest/id) else ()
let $orgs1 := if (count($orgs0) = 1) then $orgs0 else ()
let $orgs2 := if (exists($careServicesRequest/otherID/@code))  then $orgs1 else ()
return  
  if ( count($orgs2) = 1 )
    then
    let $organization:= $orgs2[1]
    let $position := count($organization/otherID) +1
    let $id := 
      if (exists($careServicesRequest/otherID/@assigningAuthorityName)) then
      <otherID code="{$careServicesRequest/otherID/@code}" assigningAuthorityName="{$careServicesRequest/otherID/@assigningAuthorityName}">{string($careServicesRequest/otherID)}</otherID>
    else 
      <otherID code="{$careServicesRequest/otherID/@code}">{string($careServicesRequest/otherID)}</otherID>
    let $orgs3:=  
    <organization entityID="{$organization/@entityID}">
      <otherID position="{$position}"/>
    </organization>
    return 
      (insert node $id into $organization ,    
      csd_blu:wrap_updating_organizations($orgs3)
      )
  else  csd_blu:wrap_updating_organizations(())