/*
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.mobile.dao;
import net.sqlcipher.Cursor;
import org.openmrs.mobile.databases.DBOpenHelper;
import org.openmrs.mobile.databases.OpenMRSDBOpenHelper;
import org.openmrs.mobile.databases.tables.ObservationTable;
import org.openmrs.mobile.models.Concept;
import org.openmrs.mobile.models.Observation;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import static org.openmrs.mobile.databases.DBOpenHelper.createObservableIO;
public class ObservationDAO {
public Observable<Long> saveObservation(Observation observation, long encounterID) {
return createObservableIO(() -> {
observation.setEncounterID(encounterID);
return new ObservationTable().insert(observation);
});
}
public Observable<Boolean> updateObservation(long observationID, Observation observation, long encounterID) {
return createObservableIO(() -> {
observation.setEncounterID(encounterID);
return new ObservationTable().update(observationID, observation) > 0;
});
}
public void deleteObservation(long observationID) {
new ObservationTable().delete(observationID);
}
public List<Observation> findObservationByEncounterID(Long encounterID) {
DBOpenHelper helper = OpenMRSDBOpenHelper.getInstance().getDBOpenHelper();
List<Observation> observationList = new ArrayList<Observation>();
String where = String.format("%s = ?", ObservationTable.Column.ENCOUNTER_KEY_ID);
String[] whereArgs = new String[]{encounterID.toString()};
final Cursor cursor = helper.getReadableDatabase().query(ObservationTable.TABLE_NAME, null, where, whereArgs, null, null, null);
if (null != cursor) {
try {
while (cursor.moveToNext()) {
int obsID_CI = cursor.getColumnIndex(ObservationTable.Column.ID);
int obsUUID_CI = cursor.getColumnIndex(ObservationTable.Column.UUID);
int obsDisplay_CI = cursor.getColumnIndex(ObservationTable.Column.DISPLAY);
int obsDisplayValue_CI = cursor.getColumnIndex(ObservationTable.Column.DISPLAY_VALUE);
int obsDiagnosisOrder_CI = cursor.getColumnIndex(ObservationTable.Column.DIAGNOSIS_ORDER);
int obsDiagnosisList_CI = cursor.getColumnIndex(ObservationTable.Column.DIAGNOSIS_LIST);
int obsDiagnosisCertainty_CI = cursor.getColumnIndex(ObservationTable.Column.DIAGNOSIS_CERTAINTY);
int obsDiagnosisNote_CI = cursor.getColumnIndex(ObservationTable.Column.DIAGNOSIS_NOTE);
int conceptUuid_CI = cursor.getColumnIndex(ObservationTable.Column.CONCEPT_UUID);
Long obsID = cursor.getLong(obsID_CI);
String obsUUID = cursor.getString(obsUUID_CI);
String obsDisplay = cursor.getString(obsDisplay_CI);
String obsDisplayValue = cursor.getString(obsDisplayValue_CI);
String obsDiagnosisOrder = cursor.getString(obsDiagnosisOrder_CI);
String obsDiagnosisList = cursor.getString(obsDiagnosisList_CI);
String obsDiagnosisCertainty = cursor.getString(obsDiagnosisCertainty_CI);
String obsDiagnosisNote = cursor.getString(obsDiagnosisNote_CI);
String conceptUuid = cursor.getString(conceptUuid_CI);
Observation obs = new Observation();
obs.setId(obsID);
obs.setEncounterID(encounterID);
obs.setUuid(obsUUID);
obs.setDisplay(obsDisplay);
obs.setDisplayValue(obsDisplayValue);
if (obsDiagnosisOrder != null) {
obs.setDiagnosisOrder(obsDiagnosisOrder);
}
obs.setDiagnosisList(obsDiagnosisList);
if (obsDiagnosisCertainty != null) {
obs.setDiagnosisCertanity(obsDiagnosisCertainty);
}
obs.setDiagnosisNote(obsDiagnosisNote);
Concept concept = new Concept();
concept.setUuid(conceptUuid);
obs.setConcept(concept);
observationList.add(obs);
}
} finally {
cursor.close();
}
}
return observationList;
}
public Observation getObservationByUUID(final String observationUUID) {
DBOpenHelper helper = OpenMRSDBOpenHelper.getInstance().getDBOpenHelper();
String where = String.format("%s = ?", ObservationTable.Column.UUID);
String[] whereArgs = new String[]{observationUUID};
Observation obs = new Observation();
final Cursor cursor = helper.getReadableDatabase().query(ObservationTable.TABLE_NAME, null, where, whereArgs, null, null, null);
if (null != cursor) {
try {
if (cursor.moveToFirst()) {
int observationID_CI = cursor.getColumnIndex(ObservationTable.Column.ID);
int encounterID_CI = cursor.getColumnIndex(ObservationTable.Column.ENCOUNTER_KEY_ID);
Long obsID = cursor.getLong(observationID_CI);
Long encounterID = cursor.getLong(encounterID_CI);
obs.setId(obsID);
obs.setEncounterID(encounterID);
}
} finally {
cursor.close();
}
}
return obs;
}
}