All HIV-infected agents in a given class have a monthly probability of undergoing HIV testing. We use empiri- cal data on past-year HIV testing rates for each agent class in a setting of interest and scaled these values to obtain monthly testing probabilities. In addition to the assumption that the likelihood of HIV testing was con- stant over time, we also assumed that HIV testing has 100% sensitivity and speci city. Thus, all HIV-infected agents who undergo testing take on the attributes of di- agnosed agents. As described above, diagnosed agents are less likely to engage in HIV risk behavior with other agents.
Diagnosed agents are also able to initiate highly active antiretroviral therapy (HAART). At model initialization, the proportion of diagnosed agents on HAART was set to approximate HIV care continuum surveillance estimates for each sub-class of agent. We interpolated the monthly probability of HAART initiation among diagnosed agents in each class such that the total proportion on treatment remained stable over the course of the simulation (after accounting for HAART discontinuation, see below).
In order to account for high rates of HIV treatment interruptions and discontinuation observed among some HIV-infected populations, we assumed that some agents on HART may discontinue therapy. The monthly probability of HAART discontinuation for agents in the community was estimated from previously published es- timates. Agents who discontinue therapy at time step j may re-initiate care at any time at the same rate as those who are newly diagnosed.
At model initialization, we set the proportion of HIV- diagnosed agents achieving >90 adherence to match those values reported by HIV care continuum surveil- lance activities. We assumed that agents who are >90 adherent to therapy have an undetectable viral load at a threshold of less than 200 copies/mL, with a small but non-zero probability of transmission. Agents that newly initiate HAART are assigned an adherence value A ranging from A1 - A5. The proba- bility of achieving >90 adherence (A5) for agents newly initiating HAART varies by class, and were estimated from HIV care continuum surveillance activities in the same manner as agents on HAART at model initializa- tion. Agents that do not achieve >90 adherence were as- signed to one of four other adherence quartiles (A1-A4) with equal probability. We assumed that adherence is constant while an agent is on therapy. We also note that, in this model, we do not account for type of HAART reg- imen or the development of virologic resistance; as such, the effect of adherence on virologic suppression and sub- sequent risk of transmission represent mean values ob- served in the treated population.
We model the relationship between HAART adherence and the suppression of viral replication implicitly, such that, for each adherence value (A), we assigned a differ- ent value for per-contact risk of HIV transmission. The higher values of HAART adherence reduce the per-event probability of HIV transmission. These values have been estimated from previously conducted studies investigat- ing the relationship between adherence and viral load,[? ] as well as the effect of viral suppression on HIV trans- mission.
The following are the core functions associated with an agent class.
def get_ID(self): #Returns agent ID return self._ID def partner(self, partner): #Partner self agent to partner agent assert partner in self._partners: raise KeyError("Partner %s is already bonded with agent %s"%(partner.get_ID(), self._ID)) self._partners.append(partner) def unpartner(self, partner): #Removes partner from self agent partner list try: if self != agent:self._partners.remove(agent) except KeyError: raise KeyError("agent %s is not a member of agent set %s"%(agent.get_ID(), self.get_ID()))