Rules for Flows

Some of the rules for flow processing follow, to give you an idea of some of the more complex flows.

Antenatal flow

The most important value collected in Antepartum is the EGA; several forms throughout the ZEPRs application depend on this value; therefore, the app collects this value in the Pregnancy Dating form ASAP.

Problem or labour visit form:

  • if "Referral" selected in disposition, create referral problem and send to problem or labour task list
  • if "Admit to uth" selected in disposition, create referral (admit) problem and send to problem or labour task list
  • Next, the logic gets short-circuited if >= 4 - Send to partograph, no matter what is chosen
  • if "admit for active labour field" selected in disposition, check cervixDilatation field.
    • if >= 4 - send to partograph - this would have already been done, as per short-circuit rule above.
    • if < 4, send to labourObservations
  • if "Admit for Observations" selected in disposition, check cervixDilatation field.
    • if >= 4 - send to partograph - this would have already been done, as per short-circuit rule above.
    • if < 4, send to labourObservations
  • if "Discharge to home" selected
    • if initial visit physical exam has been submitted, send user to routine antenatal chart
    • else send to initial visit physical exam
  • if no value for disposition,
    • if initial visit physical exam has been submitted, send user to routine antenatal chart
    • else send to initial visit physical exam

Labour observations form:

  • if "Referral" selected in disposition, create referral problem and send to problem or labour task list
  • Next, the logic gets short-circuited if >= 4 - Send to partograph, no matter what is chosen for disposition
  • if "Discharge to home" selected, send to problem or labour task list
  • if "Admit for active labour (Begin Partograph)" selected
    • if >= 4 - send to partograph - this would have already been done, as per short-circuit rule above.
    • if < 4, send back to labourObservations
  • If "Continue observations" selected, send back to labourObservations
  • If nothing selected, send back to labourObservations. This used to send user back to "Problem or labour" task list, but I think it makes more sense to keep user in labourObservations form if they don't dispose.

Postnatal flow

Delivery summary form -> newborn eval.

(Please note that only the mother can post a Delivery Summary form. Somehow two patient records (out of 35,000) for infants also have Delivery Summary forms submitted. The normal system flow prevents this from happening, but even if the user tries to play with the URL, the system prevents this such an action. See error handling code in zeprs.js: fillForm function, Newborn.createNewborn, FormDisplayAction, and FormAction. )

Newborn eval: when completed is clicked, ForwardAction checks values for "Alive/Stillbirth" and "Patient received ARV’s." and routes accordingly. If there are multiple fetuses delivered, we keep track of each newborn eval submitted in SessionPatient.setNewbornEvalsCompleted.

Discharge (similar to newborn eval) :in case of multiple fetuses, stores list of newborns that have already had discharges.