Another approach you can take is to look at observations from separate eyes as if they were at different times and let the data largely determine the appropriate correlations (and levels of variability) between observations from the two eyes. E.g. using the `mmrm` R package (assuming everything you want to be a factor is already a factor, and where `eye_visit` is a factor that's a concatenation of `eye` and `visit`, such as `"left_week4"`, `"right_week4"`, `"left_week8"` etc.):
```
mmrm::mmrm(
  formula = IOP ~ 0 + eye_visit + ...other model terms... + us(eye_visit | id),
  data = data,
  control = mmrm_control(method = "Kenward-Roger")
)
```
(see here for an [introduction to the package](https://cran.r-project.org/web/packages/mmrm/vignettes/introduction.html)).

The advantages of this approach include that 

 1. you don't assume the variability at each visit/for each eye is the same over time (often variability goes up over time), and
 2. you flexibly estimate how correlated different timepoints (and the eyes in the same person) are from the data without imposing something like a AR(1) structure (that tends to be very wrong for any real data, but if you assumed a more structured covariance structure that is appropriate you might have a gain in efficiency).

Additionally, you can think about what variables should have an interaction with time and/or eye (e.g. a baseline starting assessment would usually be allowed to interact with the factor for time). However, that's possible in any of the models that were already mentioned.