HIVMuxer¶
The HIVMuxer intervention class is a method of placing groups of individuals into a waiting pattern for the next event, and is based on DelayedIntervention. HIVMuxer adds the ability to limit the number of times an individual can be registered with the delay, which ensures that an individual is only provided with the delay one time. For example, without HIVMuxer, an individual could be given an exponential delay twice, effectively doubling the rate of leaving the delay.
Note
Parameters are case-sensitive. For Boolean parameters, set to 1 for true or 0 for false. JSON does not permit comments, but you can add “dummy” parameters to add contextual information to your files.
The table below describes all possible parameters with which this class can be configured. The JSON example that follows shows one potential configuration.
Parameter | Data type | Minimum | Maximum | Default | Description | Example |
---|---|---|---|---|---|---|
Max_Entries | integer | 0 | 2.15E+0 | 1 | The maximum number of times the individual can be registered with the HIVMuxer delay. Determines what should happen if an individual reaches the HIVMuxer stage of health care multiple times. For example, registering for an exponential delay two times effectively doubles the rate of leaving the delay. Setting Max_Entries to 1 prevents the rate from doubling. | {
"Actual_IndividualIntervention_Config": {
"class": "HIVMuxer",
"Muxer_Name": "ARTDropoutDelay",
"Max_Entries": 1
}
}
|
Muxer_Name | string | NA | NA | NA | A name used to identify the delay and check whether individuals have entered it multiple times. If the same name is used at multiple points in the health care process, then the number of entries is combined when Max_Entries is applied. | {
"Actual_IndividualIntervention_Config": {
"class": "HIVMuxer",
"Muxer_Name": "ARTDropoutDelay",
"Max_Entries": 1
}
}
|
Delay_Distribution | enum | NA | NA | NOT_INITIALIZED | Describes the distribution of time delay from when the intervention is distributed to when the individual actually receives the intervention. Possible values are:
|
{
"Delay_Distribution": "WEIBULL_DURATION",
"Delay_Period_Scale": 10,
"Delay_Period_Shape": 15
}
|
Broadcast_Event | string | NA | NA | No Trigger | The event that should occur at the end of the delay period. See Event list for possible values. | {
"Broadcast_Event": "LTFU0"
}
|
Broadcast_On_Expiration_Event | string | NA | NA | NoTrigger | If the delay intervention expires before arriving at the end of the delay period, this specifies the event that should occur. For example, if loss to follow-up occurs at a high rate for the first 6 months of care, and then later transitions to a lower rate, then the Expiration_Period should be set to 183 days and Broadcast_On_Expiration_Event can link to another delay intervention with a longer average delay time until loss to follow up (LTFU). If LTFU does not occur in the first 6 months, then the expiration will allow the first rate to give way to the post-6-month rate. See the list of available events for possible values. See Event list for possible values. | {
"Broadcast_On_Expiration_Event": "OnART8"
}
|
Expiration_Period | float | 0 | 3.40E+3 | 3.40E+38 | A fixed time period, in days, after which the Broadcast_On_Expiration_Event occurs instead of the Broadcast_Event. Only applied if the Expiration_Period occurs earlier than the end of the delay period. For example, if loss to follow-up (LTFU) occurs at a high rate for the first 6 months of care, and then later transitions to a lower rate, then the Expiration_Period should be set to 183 days and Broadcast_On_Expiration_Event can link to another delay intervention with a longer average delay time until LTFU. If LTFU does not occur in the first 6 months, then the expiration will allow the first rate to give way to the post-6-month rate. | {
"Expiration_Period": 183
}
|
Time_Varying_Constants | JSON object | NA | NA | NA | When Delay_Distribution is set to PIECEWISE_CONSTANT or PIECEWISE_LINEAR, this parameter maps simulation year to a delay period. This parameter uses InterpolatedValueMap to define Times (by year) and Values. | {
"Time_Varying_Constants": {
"Times": [
1990,
2020
],
"Values": [
1,
0
]
}
}
|
Coverage | float | 0 | 1 | 1 | The proportion of individuals who receive the DelayedIntervention that actually receive the configured interventions. | {
"Coverage": 1.0
}
|
Delay_Period | float | 0 | 3.40E+3 | 6 | When Delay_Distribution is set to FIXED_DURATION, this will specify the time delay (in number of days). When Delay_Distribution is set to EXPONENTIAL_DURATION, this represents the exponential rate that describes the distribution of the time delay (in units of 1/days). | {
"Delay_Distribution": "FIXED_DURATION",
"Delay_Period": 8
}
|
Delay_Period_Max | float | 0 | 3.40E+3 | 6 | The maximum time delay (in number of days) when Delay_Distribution is set to UNIFORM_DURATION. | {
"Delay_Distribution": "UNIFORM_DURATION",
"Delay_Period_Min": 1,
"Delay_Period_Max": 30
}
|
Delay_Period_Mean | float | 0 | 3.40E+3 | 6 | The mean time delay (in number of days), when Delay_Distribution is set to GAUSSIAN_DURATION. | {
"Delay_Distribution": "GAUSSIAN_DURATION",
"Delay_Period_Mean": 25,
"Delay_Period_Std_Dev": 5
}
|
Delay_Period_Min | float | 0 | 3.40E+3 | 6 | The minimum time delay (in number of days) when Delay_Distribution is set to UNIFORM_DURATION. | {
"Delay_Distribution": "UNIFORM_DURATION",
"Delay_Period_Min": 1,
"Delay_Period_Max": 30
}
|
Delay_Period_Scale | float | 0 | 3.40E+3 | 16 | The scale parameter (lambda > 0) of the distribution (in days) when Delay_Distribution is set to WEIBULL_DURATION. | {
"Delay_Distribution": "WEIBULL_DURATION",
"Delay_Period_Scale": 10,
"Delay_Period_Shape": 15
}
|
Delay_Period_Shape | float | 0 | 20 | The shape parameter (kappa > 0) of the distribution when Delay_Distribution is set to WEIBULL_DURATION. | {
"Delay_Distribution": "WEIBULL_DURATION",
"Delay_Period_Scale": 10,
"Delay_Period_Shape": 15
}
|
|
Delay_Period_Std_Dev | float | 0 | 3.40E+3 | 6 | The standard deviation of the Gaussian distribution (in number of days) when Delay_Distribution is set to GAUSSIAN_DURATION. | {
"Delay_Distribution": "GAUSSIAN_DURATION",
"Delay_Period_Mean": 25,
"Delay_Period_Std_Dev": 5
}
|
Times | array of floats | 0 | 999999 | NA | An array of years. | {
"Time_Value_Map": {
"Times": [1998, 2000, 2003, 2006, 2009],
"Values": [
0,
0.260000,
0.080000,
0.140000,
0.540000
]
}
}
|
Values | array of floats | 0 | 3.40E+3 | NA | An array of values to match the defined Times. | {
"Time_Value_Map": {
"Times": [1998, 2000, 2003, 2006, 2009],
"Values": [
0,
0.260000,
0.080000,
0.140000,
0.540000
]
}
}
|
Dont_Allow_Duplicates | boolean | NA | NA | 0 | If an individual’s container has an intervention, set to true (1) to prevent them from receiving another copy of the intervention. Supported by all intervention classes. | {
"Dont_Allow_Duplicates": 0
}
|
Disqualifying_Properties | string | NA | NA | NA | A list of IndividualProperty key:value pairs that cause an intervention to be aborted (persistent interventions will stop being distributed to individuals with these values). See NodeProperties and IndividualProperties parameters for more information. Generally used to control the flow of health care access. For example, to prevent the same individual from accessing health care via two different routes at the same time. | {
"Disqualifying_Properties": [
"InterventionStatus:LostForever"
]
}
|
Intervention_Name | string | NA | NA | NA | The optional name used to refer to this intervention as a means to differentiate it from others that use the same class. | {
"Intervention_Name":"Diagnostic_Sample"
}
|
New_Property_Value | string | NA | NA | NA | An optional IndividualProperty key:value pair that will be assigned when the intervention is distributed. See NodeProperties and IndividualProperties parameters for more information. Generally used to indicate the broad category of health care cascade to which an intervention belongs to prevent individuals from accessing care through multiple pathways. For example, if an individual must already be taking a particular medication to be prescribed a new one. | {
"New_Property_Value": "InterventionStatus:None"
}
|
{
"Use_Defaults": 1,
"Campaign_Name": "4C: HIVMuxer",
"Events": [
{
"Description": "Drive initial population into a loop",
"class": "CampaignEvent",
"Start_Day": 1,
"Nodeset_Config": { "class": "NodeSetAll" },
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "BroadcastEvent",
"Broadcast_Event": "Loop_Entry_InitialPopulation"
}
}
},
{
"Description": "Drive births into the same loop",
"class": "CampaignEvent",
"Start_Day": 1,
"Nodeset_Config": { "class": "NodeSetAll" },
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "BirthTriggeredIV",
"Actual_IndividualIntervention_Config": {
"class": "BroadcastEvent",
"Broadcast_Event": "Loop_Entry_Birth"
}
}
}
},
{
"Description": "Attempt to drive entire population into loop again, HIVMuxer should disallow entry",
"class": "CampaignEvent",
"Start_Day": 1095,
"Nodeset_Config": { "class": "NodeSetAll" },
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "BroadcastEvent",
"Broadcast_Event": "Loop_Entry_InitialPopulation"
}
}
},
{
"Description": "Wait one year, only one entry allowed at a time per individual",
"class": "CampaignEvent",
"Start_Day": 1,
"Nodeset_Config": { "class": "NodeSetAll" },
"Event_Coordinator_Config": {
"class": "StandardInterventionDistributionEventCoordinator",
"Intervention_Config": {
"class": "NodeLevelHealthTriggeredIV",
"Trigger_Condition": "TriggerList",
"Trigger_Condition_List": [
"Loop_Entry_InitialPopulation",
"Loop_Entry_Birth",
"Done_Waiting"
],
"Actual_IndividualIntervention_Config": {
"class": "HIVMuxer",
"Disqualifying_Properties": [ "InterventionStatus:Abort_Infinite_Loop" ],
"New_Property_Value": "InterventionStatus:Infinite_Loop",
"Delay_Distribution": "FIXED_DURATION",
"Delay_Period": 365,
"Muxer_Name": "Delay_Loop_Muxer",
"Max_Entries": 1,
"Broadcast_Event": "Done_Waiting"
}
}
}
}
]
}