OA1 is a differential amplifier. It outputs the voltage difference across the sense resistor (multiplied with any gain). This voltage is very small, close to zero. So the output is close to zero. The LM358 output can come close to zero (5mV typical, 20mV max), but will show an error in this application where the voltage across the sense resistor is too small (30mV, which becomes 7.5mV with an opamp gain set at 0.25).
So, either have a dual supply for the OA1, or feed a positive offset voltage at R3, instead of connecting it to ground. [An offset will make things rather complicated for OA2 and the ADC in this application.] Once V_out_1 can approach 0V, the V_out_final will hopefully also fall into range.
The OA1 gain needs to be set at 0.25, due to the 12V supply of the load and the 5V supply of OA1. This brings the signal into range for OA1. If you can supply OA1 with ±12V, you can potentially set a gain of 1. The output of OA1 will then go to 30mV. The gain on OA2 can then be reduced a bit. Remember that due to input offset errors (5mV max), the LM358 may not be a good opamp in this application. One can try increasing the value of the sense resistor, if possible, to work around this. In this circuit (5 m ohm sense resistor), an OP07 would be a better choice for OA1 (which requires a dual supply anyway).
Remember to use 5V for OA2, so that the ADC voltage is not accidentally exceeded. Or, have input voltage protection for the ADC.
An entirely different approach would be to have the ±5V sitting on the +12V (just after the sense resistor, so that becomes ground for the opamps and ADC) and run everything there. The output of the ADC can be taken out with an optocoupler if there is additional circuitry. One will then not even require a differential amplifier, just one opamp in normal configuration will suffice and then feed it to ADC. This way, there will not even be any limitation of the 12V (any voltage, even much higher can be used).
An alternate approach:
simulate this circuit – Schematic created using CircuitLab