MACM and ADX: Difference between revisions

From IHRIS Wiki
(Created page with " <sequenceDiagram> opt Third Part Submission PoS->Node IL: Submit ADX message Node IL->Node IL: Log headers (maybe data) Node IL->Node IL: Node HMIS: Translate local id...")
 
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
Below are sequencing options for using mACM to report invalid ADX data submissions.
You create alerts using the Mobile Report Alert (ITI-84) transaction.  An alert can be created for:
* each invalid data value
* or every time an ADX has one or more invalid data values
One that would need to be clarified is who the intended recipient of the alert.  Likely this would this be submitting organization, though it's not immediately obvious how to infer this from the ADX message.  However, we have noted that we have a problem that we need to include the mechanism in the ADX message.  The mechanism is a CSD organization, and CSD allows an organizational contact.  So, if we solve the mechanism problem, we solve the recipient problem.
mACM is somewhat flexible and allows a push or pull from the Alert Aggregator for finding new alerts. 
*The pull of alerts uses the Query for Alert Status (ITI-85) transaction.  This can be used, for example, by the HMIS to query for relevant alerts on invalid to display to a user in the DHIS2 web interface.
*The push (or dispatch) is not defined generically in the profile and can be done, for example by:
** sending an SMS
** sending an eMail
** using the DHIS2 messaging API:  https://www.dhis2.org/doc/snapshot/en/developer/html/ch01s20.html




<sequenceDiagram>
<sequenceDiagram>
opt Third Part Submission
opt Third Party/PoS Submission
   PoS->Node IL: Submit ADX message
   PoS->Node IL: Submit ADX message
   Node IL->Node IL: Log headers (maybe data)
   Node IL->Node IL: Log headers (maybe data)
   Node IL->Node IL: Node HMIS: Translate local identifiers (e.g. site ID) to PEPFAR site ID
   Node IL->Node IL: Node HMIS: Translate local identifiers\n(e.g. site ID) to PEPFAR site ID
   Node IL->Node HMIS: Submit ADX message
   Node IL->Node HMIS: Submit ADX message
   Node HMIS->Node IL: ACK or receipt\n(no validation)
   Node HMIS->Node IL: ACK or receipt\n(no validation)
   Node IL->PoS: ACK or receipt\n(no validation)
   Node IL->PoS: ACK or receipt\n(no validation)
   loop ADX data values
   loop Node submitted ADX data values
     Node HMIS->Node HMIS: validate ADX message
     Node HMIS->Node HMIS: validate ADX message
     Node HMIS->Node Alert Aggregator: initiate Mobile Report Alert (ITI-84) for invalid messages\n recipient inferred from ???
     Node HMIS->Node Alert Aggregator: initiate Mobile Report Alert (ITI-84)\n for invalid messages\n recipient inferred from ???
   end
   end
end
end
Line 23: Line 39:
Node IL->Node IL: record headers
Node IL->Node IL: record headers
Node IL->Node HMIS: ACK of receipt\n(no validation)
Node IL->Node HMIS: ACK of receipt\n(no validation)
loop ADX data values
loop global submitted ADX data values
   Global HMIS->Global HMIS: validate ADX message
   Global HMIS->Global HMIS: validate ADX message
   Global HMIS->Global Alert Aggregator: initiate Mobile Report Alert (ITI-84) for invalid messages\n recipient inferred from ???
   Global HMIS->Global Alert Aggregator: initiate Mobile Report Alert (ITI-84)\n for invalid messages\n recipient inferred from ???
   opt
   opt
     Global Alert Aggregator->Global Alert Aggregator: Dispatch alert to recipient\n (is this the correct actor?)
     Global Alert Aggregator->Global Alert Aggregator: Dispatch alert to recipient\n (is this the correct actor?)
Line 31: Line 47:
end
end


opt  
opt Node AA fetches alerts from Global AA
  loop periodic update
  loop periodic update
   Node IL->Global IL: submit Query for Alert Status (ITI-85)\n search against same recipient as above  
   Node IL->Global IL: submit Query for Alert Status (ITI-85)\n search against same recipient as above  
Line 45: Line 61:
end
end


opt
opt Node HMIS looks for alerts on Node AA
   Node HMIS->Node Alert Aggregator: submit Query for Alert Status (ITI-85)
   Node HMIS->Node Alert Aggregator: submit Query for Alert Status (ITI-85)
   Node Alert Aggregator->Node HMIS: Query for Alert Status (ITI-85) response
   Node Alert Aggregator->Node HMIS: Query for Alert Status (ITI-85) response
Line 52: Line 68:




opt
opt PoS looks for alerts on Node AA
   PoS->Node IL: submit Query for Alert Status (ITI-85)
   PoS->Node IL: submit Query for Alert Status (ITI-85)
   Node IL->Node IL: submit Query for Alert Status (ITI-85)
   Node IL->Node IL: submit Query for Alert Status (ITI-85)

Latest revision as of 08:07, 2 September 2015

Below are sequencing options for using mACM to report invalid ADX data submissions.

You create alerts using the Mobile Report Alert (ITI-84) transaction. An alert can be created for:

  • each invalid data value
  • or every time an ADX has one or more invalid data values

One that would need to be clarified is who the intended recipient of the alert. Likely this would this be submitting organization, though it's not immediately obvious how to infer this from the ADX message. However, we have noted that we have a problem that we need to include the mechanism in the ADX message. The mechanism is a CSD organization, and CSD allows an organizational contact. So, if we solve the mechanism problem, we solve the recipient problem.


mACM is somewhat flexible and allows a push or pull from the Alert Aggregator for finding new alerts.

  • The pull of alerts uses the Query for Alert Status (ITI-85) transaction. This can be used, for example, by the HMIS to query for relevant alerts on invalid to display to a user in the DHIS2 web interface.
  • The push (or dispatch) is not defined generically in the profile and can be done, for example by:


<sequenceDiagram> opt Third Party/PoS Submission

 PoS->Node IL: Submit ADX message
 Node IL->Node IL: Log headers (maybe data)
 Node IL->Node IL: Node HMIS: Translate local identifiers\n(e.g. site ID) to PEPFAR site ID
 Node IL->Node HMIS: Submit ADX message
 Node HMIS->Node IL: ACK or receipt\n(no validation)
 Node IL->PoS: ACK or receipt\n(no validation)
 loop Node submitted ADX data values
    Node HMIS->Node HMIS: validate ADX message
    Node HMIS->Node Alert Aggregator: initiate Mobile Report Alert (ITI-84)\n for invalid messages\n recipient inferred from ???
 end

end

Node HMIS->Node IL: User/cron-initiated submission of ADX\nMay include more than the orignial ADX Node IL->Node IL: Log headers (maybe data) Node IL->Global IL: Submit ADX message Global IL->Global HMIS: Submit ADX message Global HMIS->Global IL: ACK of receipt\n(no validation) Global IL->Node IL: ACK of receipt\n(no validation) Node IL->Node IL: record headers Node IL->Node HMIS: ACK of receipt\n(no validation) loop global submitted ADX data values

  Global HMIS->Global HMIS: validate ADX message
  Global HMIS->Global Alert Aggregator: initiate Mobile Report Alert (ITI-84)\n for invalid messages\n recipient inferred from ???
  opt
    Global Alert Aggregator->Global Alert Aggregator: Dispatch alert to recipient\n (is this the correct actor?)
  end

end

opt Node AA fetches alerts from Global AA

loop periodic update
  Node IL->Global IL: submit Query for Alert Status (ITI-85)\n search against same recipient as above 
  Global IL->Global Alert Aggregator: submit Query for Alert Status (ITI-85)
  Global Alert Aggregator->Global IL: Query for Alert Status (ITI-85) response
  Global IL->Node IL: Query for Alert Status (ITI-85) response
  Node IL->Node Alert Aggregator: Query for Alert Status (ITI-85) response
  Node Alert Aggregator->Node Alert Aggregator: Add alert to data store
  opt
    Node Alert Aggregator->Node Alert Aggregator: Dispatch alert to recipient
  end
end

end

opt Node HMIS looks for alerts on Node AA

 Node HMIS->Node Alert Aggregator: submit Query for Alert Status (ITI-85)
 Node Alert Aggregator->Node HMIS: Query for Alert Status (ITI-85) response

end


opt PoS looks for alerts on Node AA

 PoS->Node IL: submit Query for Alert Status (ITI-85)
 Node IL->Node IL: submit Query for Alert Status (ITI-85)
 Node IL->Node Alert Aggregator: submit Query for Alert Status (ITI-85)
 Node Alert Aggregator->Node IL: Query for Alert Status (ITI-85) response
 Node IL->PoS: Query for Alert Status (ITI-85) response  

end


</sequenceDiagram>