Stored Functions

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

Description



nigeria_health_worker_indices_demogrpahic_birth

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>
     {
       if (exists(($provider/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1])) then
	 <extension urn="urn:who.int:hrh:mds" type='birth'/>
       else ()
     }
    </demographic>
  </provider>
    
return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:indices_demographic_citizenship

Description



nigeria_health_worker_indices_demogrpahic_citizenship

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>
     {
       if (exists(($provider/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1])) then
	 <extension urn="urn:who.int:hrh:mds" type='citizenship'/>
       else ()
     }
    </demographic>
  </provider>
    
return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:indices_demographic_photo

Description



nigeria_health_worker_indices_demographic_photo

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/extension[@type='photograph' and @urn='urn:who.int:hrh:mds']
	    return <extension type='photograph' urn='urn:who.int:hrh:mds'  position="{$pos}"/> 
	  }
	</demographic>
    </provider>
      
    return csd_bl:wrap_providers($provs1)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:read_demographic_birth

Description



nigeria_health_worker_read_demographic_birth

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 $provs2 := 
  if (count($provs1) = 1) 
    then 
    <provider entityID="{$provs1[1]/@entityID}">
      <demographic>
	{($provs1[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1]}
      </demographic>
    </provider>
  else ()        
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:read_demographic_citizenship

Description



nigeria_health_worker_read_demographic_citizenship

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 $provs2 := 
  if (count($provs1) = 1) 
    then 
    <provider entityID="{$provs1[1]/@entityID}">
      <demographic>
	{($provs1[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1]}
      </demographic>
    </provider>
  else ()        
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:read_demographic_photo

Description



nigeria_health_worker_read_demographic_photo

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 $exts := $careServicesRequest/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds']
let $provs0 := if (count($exts) = 1 and exists($exts[1]/@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}">
      <demographic>
	{
	  for $ext in ($provider/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds'])[position() = $exts[1]/@position]
	  return      <extension type='photograph' urn='urn:who.int:hrh:mds'  position="{$exts[1]/@position}">{$ext/*}</extension>
	}
      </demographic>
      {$provider/record}
    </provider>
  else ()    
    
return csd_bl:wrap_providers($provs2)
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:read_otherid

Description



nigeria_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}"
	  expirationDate="{$id/@expirationDate}"
	  issueDate="{$id/@issueDate}"
	  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-nigeria:stored-function:opensearch_name

Description



    Peforms a search request on a provider's common name according to the OpenSearch 1.1 Specification:
      http://www.opensearch.org/Specifications/OpenSearch/1.1
    Returns search results in opensearch feed for a provider by common name
  

Definition

Source:
import module namespace osf = "https://github.com/openhie/openinfoman/adapter/opensearch";
import module namespace functx = 'http://www.functx.com';

declare namespace csd =  "urn:ihe:iti:csd:2013";
declare namespace rss = "http://backend.userland.com/rss2";
declare namespace atom = "http://www.w3.org/2005/Atom";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace os  = "http://a9.com/-/spec/opensearch/1.1/";
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
:) 


(:Get the search terms passed in the request :)
let $search_terms := xs:string($careServicesRequest/os:searchTerms/text())
(:Find the matching providers -- to be customized for your search:)
let $matched_providers :=  
  for $provider in /csd:CSD/csd:providerDirectory/csd:provider
  let $surname := $provider/csd:demographic/csd:name/csd:surname
  where  exists($search_terms) and exists($surname) and functx:contains-case-insensitive($surname,  $search_terms)  
  return $provider  



let $html_wrap_func :=  function($meta,$content) {
  <html:html xml:lang="en" lang="en">
    <html:head profile="http://a9.com/-/spec/opensearch/1.1/" >    

      <html:link href="/static/bootstrap/css/bootstrap.css" rel="stylesheet"/>
      <html:link href="/static/bootstrap/css/bootstrap-theme.css" rel="stylesheet"/>
      
      <html:script src="https://code.jquery.com/jquery.js"/>
      <script src="/static/bootstrap/js/bootstrap.min.js"/>

      <html:script src="https://code.jquery.com/jquery.js"/>
      <html:script src="/static/bootstrap/js/bootstrap.min.js"/>
      {$meta}
    </html:head>
    <html:body>  
      <html:div class="navbar navbar-inverse navbar-static-top">
	<html:div class="container">
          <html:div class="navbar-header">
	    <html:img class='pull-left' height='38px' src='/static/FMOH_Nigeria_logo.png'/>
            <html:button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <html:span class="icon-bar"></html:span>
              <html:span class="icon-bar"></html:span>
              <html:span class="icon-bar"></html:span>
            </html:button>
            <html:a class="navbar-brand" href="/CSD">Nigeria Health Workforce Registry</html:a>
          </html:div>
	</html:div>
      </html:div>
      <html:div class="container">
	<html:p align="justify" class='bold'>
	The Nigeria Health Workforce Registry (NHWR) is an information system developed and managed by the Department of Planning, Research and Statistics,
	in the Federal Ministry of Health. The Nigeria Health Workforce Registry represents the Government of Nigeria's health workforce, aggregated from the three
	tiers of the country's health system - Local, State and Federal levels.
	</html:p>
	<html:p>
	The Nigeria Health Workforce Registry implements the Care Services Directory 
	(<html:a href="ftp://ftp.ihe.net/DocumentPublication/CurrentPublished/ITInfrastructure/IHE_ITI_Suppl_CSD.pdf">CSD</html:a>)
	profile from Integrating the Health Enterprise <html:a href="http://ihe.net">(IHE)</html:a> as recommened by OpenHIE.
	</html:p>
	

	<html:p>
	  <html:b>The Nigeria Health Workforce Registry is a free, Open Source software solution.</html:b>
	</html:p>
      </html:div>
      <html:div class='wrapper_search'>
	<html:div class="container">
	  {$content}
	</html:div>
      </html:div>


      <html:div id='site_footer' class='container'>
        © 2014 Department of Planning, Research and statistics, Federal Ministry of Health. 
      </html:div>
    </html:body>
  </html:html>

}



let $processors := map{
  'html_wrap' : $html_wrap_func
}

(:Produce the feed in the neccesary format :)
return osf:create_feed_from_entities($matched_providers,$careServicesRequest,$processors)



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

Description



nigeria_health_worker_create_demographic_birth

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 $provs := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $birth :=  ($careServicesRequest/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1]
let $existingBirth :=  ($provs[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1]
let $demo := $provs[1]/demographic
let $insert := 
  if (not(exists($demo))) then <demographic>{$birth}</demographic> else $birth
    let $return := 
    <provider entityID="{$provs[1]/@entityID}">
      <demographic><extension type="birth" urn="urn:who.int:hrh:mds"/></demographic>
    </provider>
let $insertTo :=
  if (not(exists($demo))) then $provs[1] else $provs[1]/demographic

return  
  if ( count($provs) = 1 and not(exists($existingBirth)))
  then
     (
      insert node $insert into $insertTo,
      csd_blu:bump_timestamp($provs[1]),
      csd_blu:wrap_updating_providers($return)
      )
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:create_demographic_citizenship

Description



nigeria_health_worker_create_demographic_citizenship

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 $provs := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $citizenship :=  ($careServicesRequest/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1]
let $existingCitizenship :=  ($provs[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1]
let $demo := $provs[1]/demographic
let $insert := 
  if (not(exists($demo))) then <demographic>{$citizenship}</demographic> else $citizenship
    let $return := 
    <provider entityID="{$provs[1]/@entityID}">
      <demographic><extension type="citizenship" urn="urn:who.int:hrh:mds"/></demographic>
    </provider>
let $insertTo :=
  if (not(exists($demo))) then $provs[1] else $provs[1]/demographic

return  
  if ( count($provs) = 1 and not(exists($existingCitizenship)))
  then
     (
      insert node $insert into $insertTo,
      csd_blu:bump_timestamp($provs[1]),
      csd_blu:wrap_updating_providers($return)
      )
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:create_demographic_photo

Description



nigeria_health_worker_create_demogrpahic_photo

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 $ext := $careServicesRequest/demographic/extension[@type='photograph' and urn ='urn:who.int:hrh:mds']
let $provs := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
return  
  if ( exists($ext) and count($provs) = 1 )
    then
    let $provider:= $provs[1]
    let $position := count($provider/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds']) +1
    let $return:=  
    <provider entityID="{$provider/@entityID}">
      <demographic>
	<extension type='photograph' urn='urn:who.int:hrh:mds' position="{$position}"/>
      </demographic>
    </provider>
    return 
      (
	if (exists($provider/demographic))
	  then insert node $ext into $provider/demographic 
	else
	  insert node <demographic>{$ext}</demographic> into $provider
	  ,   csd_blu:wrap_updating_providers($return)
	)
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:create_other_id

Description



nigeria_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 $provider := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id)[1] else ()
let $new_id := $careServicesRequest/otherID
return  
  if ( exists($provider) and not($new_id/@code = ''))     
    then
    let $position := count($provider/otherID) +1
    let $return:=  
      <provider entityID="{$provider/@entityID}">
	<otherID position="{$position}"/>
      </provider>
    return 
      (
	insert node $new_id into $provider ,    
	csd_blu:wrap_updating_providers($return)
      )
  else  csd_blu:wrap_updating_providers(())
      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:create_provider_credenital

Description



nigeria_health_worker_create_provider_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 $provider := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id)[1] else ()
let $cred_request := $careServicesRequest/credential
let $code:= $cred_request/codedType/@code
let $codingScheme:= $cred_request/codedType/@codingScheme
let $creds := $provider/credential[@code = $code and @codingScheme = $codingScheme]
return  
  if ( exists($provider) and count($creds) = 0 and exists($code) and exists($codingScheme))  (:DO NOT ALLOW SAME CRED TWICE :)
    then
    let $return:=  
      <provider entityID="{$provider/@entityID}">
	<credential>
	  <codedType code="{$code}" codingScheme="{$codingScheme}"/>
	</credential>
      </provider>
    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 (),
	  if (exists($cred_request/extension[@urn='urn:who.int:hrh:mds' and @type='photograph']/image)) then $cred_request/extension[@urn='urn:who.int:hrh:mds' and @type='photograph'] else ()
	 )}
      </credential>
    return 
	(
	insert node $cred_new into $provider,
	csd_blu:wrap_updating_providers($return)
	)

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

Description



nigeria_health_worker_delete_demogrpahic_birth

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 $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 $birth := ($providers[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])
    return if (exists($birth)) then (delete node $birth) else ()
  else  ()

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

Description



nigeria_health_worker_delete_demogrpahic_citizenship

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 $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 $citizenship := ($providers[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])
    return if (exists($citizenship)) then (delete node $citizenship) else ()
  else  ()

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

Description



nigeria_health_worker_delete_demogrpahic_photo

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 $pos := $careServicesRequest/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds']/@position
return
  if (exists($pos)) 
    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  $ext :=  ($providers[1]/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds'])[position() = $pos]
	return if (exists($ext)) then (delete node $ext) else ()
      else  ()
    else ()      
Content-Type: text/xml
URN: urn:openhie.org:openinfoman-hwr-nigeria:stored-function:update_demographic_birth

Description



nigeria_health_worker_update_demogrpahic_birth

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 $provs := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $updBirth :=  ($careServicesRequest/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1]
let $existBirth := ($provs[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='birth'])[1]

return  
  if ( count($provs) = 1 and exists( $existBirth ) and exists($updBirth)) then
   (
     if (exists($updBirth/country))
       then 	    
       if (exists($existBirth/country))
	 then  replace value of node $existBirth/country with $updBirth/country
       else insert node  $updBirth/country into $existBirth
     else (),
     if (exists($updBirth/town))
       then 	    
       if (exists($existBirth/town))
	 then  replace value of node $existBirth/town with $updBirth/town
       else insert node  $updBirth/town into $existBirth
     else (),
     if (exists($updBirth/motherName))
       then 	    
       if (exists($existBirth/motherName))
	 then  replace value of node $existBirth/motherName with $updBirth/motherName
       else insert node  $updBirth/motherName into $existBirth
     else (),
     if (exists($updBirth/fatherName))
       then 	    
       if (exists($existBirth/fatherName))
	 then  replace value of node $existBirth/fatherName with $updBirth/fatherName
       else insert node  $updBirth/fatherName into $existBirth
     else (),	    
     csd_blu:bump_timestamp($provs[1]),
     let $return := 
     <provider entityID="{$provs[1]/@entityID}">
       <demographic><extension type="birth" urn="urn:who.int:hrh:mds"/></demographic>
     </provider>
     return csd_blu:wrap_updating_providers($return)
    )
  else 	csd_blu:wrap_updating_providers(())

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

Description



nigeria_health_worker_update_demogrpahic_citizenship

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 $provs := if (exists($careServicesRequest/id/@entityID)) then	csd_bl:filter_by_primary_id(/CSD/providerDirectory/*,$careServicesRequest/id) else ()
let $updCitizen :=  ($careServicesRequest/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1]
let $existCitizen := ($provs[1]/demographic/extension[@urn='urn:who.int:hrh:mds' and @type='citizenship'])[1]

return  
  if ( count($provs) = 1 and exists( $existCitizen ) and exists($updCitizen)) then
   (
     if (exists($updCitizen/residence))
       then 	    
       if (exists($existCitizen/residence))
	 then  replace value of node $existCitizen/residence with $updCitizen/residence
       else insert node  $updCitizen/residence into $existCitizen
     else (),
     if (exists($updCitizen/current))
       then 	    
       if (exists($existCitizen/current))
	 then  replace value of node $existCitizen/current with $updCitizen/current
       else insert node  $updCitizen/current into $existCitizen
     else (),
     if (exists($updCitizen/birth))
       then 	    
       if (exists($existCitizen/birth))
	 then  replace value of node $existCitizen/birth with $updCitizen/birth
       else insert node  $updCitizen/birth into $existCitizen
     else (),
     csd_blu:bump_timestamp($provs[1]),
     let $return := 
     <provider entityID="{$provs[1]/@entityID}">
       <demographic><extension type='citizenship' urn="urn:who.int:hrh:mds"/></demographic>
     </provider>
     return csd_blu:wrap_updating_providers($return)
    )
  else 	csd_blu:wrap_updating_providers(())

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

Description



nigeria_health_worker_update_demogrpahic_phto

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 $new_ext := $careServicesRequest/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds']
let $provs0 := if (exists($new_ext/@position)) then /CSD/providerDirectory/*  else ()
let $provs1 := if (exists($careServicesRequest/id/@entityID)) then csd_bl:filter_by_primary_id($provs0,$careServicesRequest/id) else ()
let $ext := ($provs1[1]/demographic/extension[@type='photograph' and @urn='urn:who.int:hrh:mds'])[position() = $new_ext/@position]
return
  if (count($provs1) = 1 and exists($ext)) 
    then
    let $provs2 := 
    <provider entityID="{$provs1[1]/@entityID}">
      <demographic>
	<extension type='photograph' urn='urn:who.int:hrh:mds' position="{$new_ext/@position}"/>
      </demographic>
    </provider>
    return
      (
	csd_blu:bump_timestamp($provs1[1]),
	replace  node $ext with $new_ext,
	csd_blu:wrap_updating_providers($provs2)
     )
  else 	csd_blu:wrap_updating_providers(())

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

Description



nigeria_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 (exists($careServicesRequest/otherID/@issueDate) )
	  then 
	    if (exists($id/@issueDate))
	      then replace value of node $id/@issueDate with $careServicesRequest/otherID/@issueDate
	      else insert node $careServicesRequest/otherID/@issueDate into $id		
	  else (),
	if (exists($careServicesRequest/otherID/@expirationDate) )
	  then 
	    if (exists($id/@expirationDate))
	      then replace value of node $id/@expirationDate with $careServicesRequest/otherID/@expirationDate
	      else insert node $careServicesRequest/otherID/@expirationDate 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-nigeria:stored-function:update_provider_credenital

Description



nigeria_health_worker_update_provider_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 (),
	if (exists($cred_new/extension[@urn='urn:who.int:hrh:mds' and @type='photograph']/image)) then
	  (if (exists($cred_old/extension[@urn='urn:who.int:hrh:mds' and @type='photograph'])) then (delete node $cred_old/extension[@urn='urn:who.int:hrh:mds' and @type='photograph']) else (),
	  insert node $cred_new/extension[@urn='urn:who.int:hrh:mds' and @type='photograph'] into $cred_old	   )
	else (),

	csd_blu:wrap_updating_providers($provs3)
       )
  else 	csd_blu:wrap_updating_providers(())