public Throwable fhir(SparseArray<GlucoseRecord> records) { try { Patient p = getPatient(); Log.d(TAG, "converting glucoserecrods to observations now"); Device d = initializeDevice(p); // do conditional update here so the device is updated if needed String ident = getConditionalUrl(d, d.getIdentifierFirstRep()); String a = ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(d); IdDt id = (IdDt) client.update().resource(d).conditionalByUrl(ident).execute().getId(); d.setId(id); DeviceMetric metric = initializeDeviceMetric(d); metric.setId( client .create() .resource(metric) .conditionalByUrl(getConditionalUrl(metric, metric.getIdentifier())) .execute() .getId()); for (int i = 0; i < records.size(); i++) { int j = records.keyAt(i); GlucoseRecord r = records.get(j); Log.d(TAG, "creating quantity"); QuantityDt qdt = initializeQuantityDt(r); Observation o = initializeObservation(p, metric, r, qdt); Log.d(TAG, "submitting to server..."); // client.update().resource(o).conditionalByUrl("Observation?identifier=http://...%7Cid").encodedJson().execute(); IdDt did = (IdDt) client .update() .resource(o) .conditionalByUrl(getConditionalUrl(o, o.getIdentifierFirstRep())) .execute() .getId(); o.setId(did); String s = ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(o); Log.d(TAG, "... done"); } } catch (Throwable e) { return e; } return null; }