ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1

Specification

Get Medication Requests

Purpose

This WS is designed to search (get list) of Medication requests.

According to requirements:

  • DOCTOR can see all Medication request for which he is the a doctor (employee_id) 

  • DOCTOR can see all the Medication requests of the patients whom he has an active declaration with doctor (employee_id) 

  • User of NHS_ADMIN can see all Medication request (without limitations)

Input parameters (filters)

  • legal_entity_id (optional)

  • employee_id (optional)

  • person_id (optional)

  • status (optional). By default status=ACTIVE.

  • request_number (optional)

  • created_from  (optional)

  • created_to  (optional)

  • medication_id (optional)

  • intent (optional)

  • care_plan_id (optional)

  • encounter_id (optional)

  • page (optional)

  • page_size (optional)

Logic WS

  1. Verify the validity of access token

    1. Return 401 in case validation fails

  2. Check user scopes in order to perform this action (scope = 'medication_request:read')

    1. Return 403 in case invalid scope(s)

  3. Get `my_party_id`  from `$.context.user_id`

    1. Return 500 in case ("Not found party for this user!")  

  4. Get list of employees to `my_employees_list` for this `party_id`  & `$.context.legal_entity_id`

    SELECT E.id
    	FROM parties P
    		JOIN employees E
    			ON P.id = E.party_id
    		JOIN party_users PU
    			ON parties.id = party_users.party_id
    WHERE PU.user_id=$.context.user_id
    	AND E.legal_entity_id = $.context.legal_entity.id
    	
    
    

  5. Search Medication requests by filters with use `my_employees_list` : 

    SELECT * FROM medication_request MR 
    	LEFT JOIN declarations D 
    		ON MR.person_id = D.person_id
    			AND D.status = ACTIVE
    WHERE (MR.employee_id IN [my_employees_list] OR D.employee_id IN [my_employees_list] )
    		AND (MR.status = $.status OR $.status IS NULL)
    		AND (MR.person_id = $.person_id OR $.person_id IS NULL)
    		AND (MR.medication_id = $.medication_id OR $.medication_id IS NULL)
    		AND (MR.number = $.request_number OR $.request_number IS NULL)
    		AND (MR.created_at >= $.created_from OR $.created_from IS NULL)
    		AND (MR.created_at <= $.created_to OR $.created_to IS NULL)
    
    
    

Logic WS for `client_type` = NHS_ADMIN

  1. Verify the validity of access token

    1. Return 401 in case validation fails

    2. Check user scopes in order to perform this action (scope = 'medication_request:read')

      1. Return 403 in case invalid scope(s)

    3. Search Medication requests by filters: 

      SELECT * FROM medication_request MR	
      WHERE AND (MR.employee_id == $.employee_id OR $.employee_id IS NULL) 
      		AND (MR.status == $.status OR $.status IS NULL)
      		AND (MR.person_id == $.person_id OR $.person_id IS NULL)
      		AND (MR.medication_id = $.medication_id OR $.medication_id IS NULL)
      		AND (MR.number = $.request_number OR $.request_number IS NULL)
      		AND (MR.created_at >= $.created_from OR $.created_from IS NULL)
      		AND (MR.created_at <= $.created_to OR $.created_to IS NULL)
      		AND (MR.legal_entity_id == $.legal_entity_id OR $.legal_entity_id IS NULL)
      
      

Response (output)

  1. If according to filters requests are not found, WS returns empty data array.

    1. WS also returns pagination data - for technical info.

Response (output)

  1. If according to filters requests are not found, WS returns empty data array.

    1. WS also returns pagination data - for technical info.

  • No labels