Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
integration:nhlmis [2025/02/05 15:36] – [Fetching a single order (requisition)] Gary Willettsintegration:nhlmis [2025/02/06 16:21] (current) – [Customer invoices] Gary Willetts
Line 80: Line 80:
 All the outstanding orders (which become requisitions in mSupply) for this mSupply installation which have become outstanding since the last "since marker" are automatically fetched from NHLMIS on a schedule defined by the **No. of minutes between fetches** field. This is done by making a GET call to the ''/orders'' endpoint. All the outstanding orders (which become requisitions in mSupply) for this mSupply installation which have become outstanding since the last "since marker" are automatically fetched from NHLMIS on a schedule defined by the **No. of minutes between fetches** field. This is done by making a GET call to the ''/orders'' endpoint.
  
-These calls are all made using ''genericParent=True'' which means that all items in the NHLMIS response will be replaced with their generic parent items. The quantities requested for each item in the order are multiplied by their default pack size to get the number of units for the requisition line.+These calls are all made using ''genericParent=True'' which means that all items in the NHLMIS response will be replaced with their generic parent items (by NHLMIS). The quantities requested for each item in the order are multiplied by their default pack size to get the number of units for the requisition line.
  
 If there are more than 50 outstanding orders then mSupply will automatically ask NHLMIS to send the next 50 until all outstanding orders have been retrieved. If there are more than 50 outstanding orders then mSupply will automatically ask NHLMIS to send the next 50 until all outstanding orders have been retrieved.
Line 94: Line 94:
   * These calls are all made using ''genericParent=True'' which means that all items in the NHLMIS response will be replaced with their generic parent items (by NHLMIS).   * These calls are all made using ''genericParent=True'' which means that all items in the NHLMIS response will be replaced with their generic parent items (by NHLMIS).
   * The quantities requested for each item in the order are multiplied by their default pack size to get the number of units for the requisition line.   * The quantities requested for each item in the order are multiplied by their default pack size to get the number of units for the requisition line.
 +
 +
 ==== Sending shipments ==== ==== Sending shipments ====
 When a customer invoice, which comes from a requisition generated from an NHLMIS order, is finalised it is sent to NHLMIs by making a PATCH call to the ''/orders'' endpoint. All shipments are sent with a "packed" status. If it is successful, all is well. If the send fails then it is added to a queue and the send is retried after the number of minutes in the **Minutes between retries** field. When the call is successful then the shipment is removed from the queue. If it fails the number of times in the **No. times to retry sends** field then the shipment is removed from the queue and an error email is sent to the email(s) in the **Error email** field. When a customer invoice, which comes from a requisition generated from an NHLMIS order, is finalised it is sent to NHLMIs by making a PATCH call to the ''/orders'' endpoint. All shipments are sent with a "packed" status. If it is successful, all is well. If the send fails then it is added to a queue and the send is retried after the number of minutes in the **Minutes between retries** field. When the call is successful then the shipment is removed from the queue. If it fails the number of times in the **No. times to retry sends** field then the shipment is removed from the queue and an error email is sent to the email(s) in the **Error email** field.
Line 116: Line 118:
  
 ===== Errors ===== ===== Errors =====
-If errors are encountered during any of the processes then information about the error is saved in the log (see the [[admin:the_log]] page for details) and an email giving details of the error is sent to the email address stored in the **Error email** field. +If errors are encountered during any of the processes then information about the error is saved in the log (see the [[admin:the_log]] page for details) and an email giving details of the error is sent to the email address stored in the **Error email** field. 
 + 
 + 
 +===== Visible changes in mSupply ===== 
 +==== Requisitions ==== 
 +When an NHLMIS order is received it is turned into a requisition in mSupply. The requisition has its donor set to the donor in mSupply that matches the value after ''funder:'' in the NHLMIS order. The donor is show in the requisition in a **Donor** drop down list (which is only shown if the **Fetch requisitions from NHLMIS** checkbox is checked on the //File// > //Preferences// > //NHLMIS// tab), shown here: 
 + 
 +{{ :integration:pasted:20250205-162053.png?650 |}} 
 + 
 +The drop down list is active so the user can edit it if required. 
 + 
 + 
 +==== Supplier invoices ==== 
 +Supplier invoices have a new **Program** drop down list, displayed ony when the **Fetch requisitions from NHLMIS** checkbox is checked on the //File// > //Preferences// > //NHLMIS// tab. It is shown here: 
 + 
 +{{ :integration:pasted:20250205-163711.png?550 }} 
 + 
 +It is populated with the names of all the master lists with a tag of ''NHLMISProgram:XXX'' where XXX is the name of an NHLMIS program. The user can set the appropriate program for the stock on the supplier invoice. 
 + 
 + 
 +==== Customer invoices ==== 
 +Read only **Program** and **Donor** fields are displayed on a customer invoice if the **Fetch requisitions from NHLMIS** checkbox is checked on the //File// > //Preferences// > //NHLMIS// tab. These fields display the NHLMIS progam and funder (mSupply donor) the customer invoice belongs to and are shown below:  
 + 
 +{{ :integration:pasted:20250205-163437.png?650 }} 
 + 
 +The **Program** field is populated with the name of the master list which matches the NHLMIS program. It will be empty if there isn't a requisition linked ot the customer invoice. 
 + 
 +The **Donor** field is populated with the name of the donor matching the NHLMIS funder (mSupply donor) associated with the requisition the customer invoice came from. It will be empty if there isn't a linked requisition. 
 + 
 +The action of the //Issue stock for all placeholder lines// option on the grinder icon below the table on the left hand is modified if the **Fetch requisitions from NHLMIS** checkbox is checked on the //File// > //Preferences// > //NHLMIS// tab: it still applies stock in FEFO order but it only uses stock which has a donor and program matching the customer invoice's. If the customer invoice does not have a donor then donor matching is not carried out, if it has no program then program matching is not carried out. If it has neither then the functionality is exactly the same as normal and no additional filtering is carried out.   
 +==== Stock lines ==== 
 +A **Program** drop down list is displayed on the stock line edit window (opened by choosing //Item// > //Show items with stock// from the menus and double-clicking a stock line on that window). The drop down list will be set to the NHLMIS program associated with the stock and looks like this: 
 + 
 +{{ :integration:pasted:20250205-163531.png?550 }} 
 + 
 +If the **Fetch requisitions from NHLMIS** checkbox is checked on the //File// > //Preferences// > //NHLMIS// tab, the Program is also offered as a column selectable for display on the stock line edit window (opened by choosing //Item// > //Show items with stock// from the menus). If you click on the Customise button on that window, you will see the Program field in the available columns as shown here: 
 +   
 +{{ :integration:pasted:20250205-163500.png?650 }} 
 + 
  
 \\ \\
  • Last modified: 2025/02/05 15:36
  • by Gary Willetts