Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Specification

Get Medication Requests

Purpose

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

...

  • 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`

    Code Block
    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` : 

    Code Block
    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: 

      Code Block
      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.