The BaseOpenmrsObject seems to provide a maximum length (38) for the uuids as can be seen at openmrs-core/BaseOpenmrsObject.java at 27b61fbfe3a45deeb836df5bc7195890645027e8 · openmrs/openmrs-core · GitHub. And as for the patch request i am trying to make above, after translation by the OpenMRSFhirTranslator, the uuid field seems to be updated with a value of Patient/61b38324-e2fd-4feb-95b7-9e9a2a4400df instead of maintaining the 61b38324-e2fd-4feb-95b7-9e9a2a4400df that it contained before the translation. This is (i believe) the reason why the maximum length of the uuid field is exceeded hence the error.
As an aside, the fact that translators just work on getId() is a mistake and, in general, it would be better practice for our translators to looked something like this:
(This is a pattern we would need to add to basically every translator that calls setUuid()).
However, I think you may have stepped over the line that calls JsonPatchUtils.apply() a little too quickly. In particular, inside that call, we first translate the resource to a JSON document and later parse the modified JSON back into a FHIR resource. I’m guessing the Patient/ part gets added in one of those two steps (this also might help to explain why this didn’t happen with other resource types).
However, I suppose the root cause doesn’t really matter. If we change the translator as I suggested here, I think the issue will go away.