Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BAH-3117 | Ability to add, edit and delete notes in OT module #261

Merged
merged 2 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package org.bahmni.module.bahmnicore.contract;

import java.util.Date;

public class NoteRequestResponse {

private String uuid;

private Integer noteId;

private String noteText;

private String noteTypeName;

private Date noteDate;

private String LocationName;

private String providerUuid;

public String getUuid() {
return uuid;
}

public void setUuid(String uuid) {
this.uuid = uuid;
}

public Integer getNoteId() {
return noteId;
}

public void setNoteId(Integer noteId) {
this.noteId = noteId;
}

public String getNoteText() {
return noteText;
}

public void setNoteText(String noteText) {
this.noteText = noteText;
}

public Date getNoteDate() {
return noteDate;
}

public void setNoteDate(Date noteDate) {
this.noteDate = noteDate;
}

public String getNoteTypeName() {
return noteTypeName;
}

public void setNoteTypeName(String noteTypeName) {
this.noteTypeName = noteTypeName;
}

public String getLocationName() {
return LocationName;
}

public void setLocationName(String locationName) {
LocationName = locationName;
}

public String getProviderUuid() {
return providerUuid;
}

public void setProviderUuid(String providerUuid) {
this.providerUuid = providerUuid;
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.bahmni.module.bahmnicore.dao;

import java.util.Date;
import java.util.List;

import org.bahmni.module.bahmnicore.model.Note;
import org.bahmni.module.bahmnicore.model.NoteType;
import org.openmrs.api.db.DAOException;

public interface NoteDao {

Note createNote(Note note);

Note getNoteById(Integer noteId);

Note updateNote(Note note);

void deleteNote(Note note);

Note voidNote(Note note);

Note getNote(Date noteDate, String noteType);

NoteType getNoteType(String name);

List<Note> getNotes(Date startDate, Date endDate, String noteType);

Note getNoteByUuid(String uuid);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package org.bahmni.module.bahmnicore.dao.impl;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.bahmni.module.bahmnicore.dao.NoteDao;
import org.bahmni.module.bahmnicore.model.Note;
import org.bahmni.module.bahmnicore.model.NoteType;
import org.hibernate.query.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.openmrs.api.APIException;

public class NoteDaoImpl implements NoteDao {

protected final static Log log = LogFactory.getLog(NoteDaoImpl.class);

private SessionFactory sessionFactory;

public NoteDaoImpl() {
}

public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

public Note getNoteById(Integer id) {
log.info("Get note " + id);
return (Note) sessionFactory.getCurrentSession().get(Note.class, id);
}

public Note createNote(Note note) {
log.debug("Creating new note");
sessionFactory.getCurrentSession().save(note);
return note;
}

public NoteType getNoteType(String name){
List<NoteType> noteType = new ArrayList<>();
Session currentSession = sessionFactory.getCurrentSession();
Query query = currentSession.createQuery("select noteType from NoteType noteType " +
"where noteType.name = :name");
query.setParameter("name", name);
noteType.addAll(query.list());
return CollectionUtils.isEmpty(noteType) ? null : noteType.get(0);

}

public Note updateNote(Note note) {
log.debug("Updating existing note");
sessionFactory.getCurrentSession().save(note);
return note;
}

public void deleteNote(Note note) {
log.debug("Deleting existing note");
sessionFactory.getCurrentSession().delete(note);
}

public Note voidNote(Note note) throws APIException {
sessionFactory.getCurrentSession().save(note);
return note;
}

@Override
public Note getNote(Date noteDate, String noteType) {
List<Note> notes = new ArrayList<>();
StringBuilder query = new StringBuilder("select note from Note note " +
"where note.noteDate = :noteDate " +
"and note.noteType.name = :noteType " +
"and note.voided = false");

Query queryToGetNotes = sessionFactory.getCurrentSession().createQuery(query.toString());
queryToGetNotes.setParameter("noteDate", noteDate);
queryToGetNotes.setParameter("noteType", noteType);

notes.addAll(queryToGetNotes.list());
return CollectionUtils.isEmpty(notes) ? null : notes.get(0);
}

@Override
public List<Note> getNotes(Date startDate, Date endDate, String noteType) {
List<Note> notes = new ArrayList<>();
Session currentSession = sessionFactory.getCurrentSession();
Query query = currentSession.createQuery(
"select note from Note note " +
"where note.noteDate between :startDate and :endDate " +
"and note.noteType.name = :noteType" +
" and note.voided = false");
query.setParameter("startDate", startDate);
query.setParameter("endDate", endDate);
query.setParameter("noteType", noteType);
notes.addAll(query.list());
return notes;

}
@Override
public Note getNoteByUuid(String uuid) {
return (Note)this.sessionFactory.getCurrentSession().createQuery("from Note note where note.uuid = :uuid").setParameter("uuid", uuid).uniqueResult();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.bahmni.module.bahmnicore.mapper;

import org.bahmni.module.bahmnicore.contract.NoteRequestResponse;
import org.bahmni.module.bahmnicore.model.Note;
import org.bahmni.module.bahmnicore.service.NoteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class NoteMapper {

@Autowired
private NoteService noteService;

public NoteRequestResponse mapResponse(Note note){
NoteRequestResponse noteResponse = new NoteRequestResponse();
noteResponse.setNoteId(note.getNoteId());
noteResponse.setNoteDate(note.getNoteDate());
noteResponse.setNoteText(note.getNoteText());
noteResponse.setUuid(note.getUuid());
noteResponse.setNoteTypeName(note.getNoteType().getName());
return noteResponse;
}

public Note mapRequest(NoteRequestResponse noteRequest){
Note note = new Note();
note.setNoteId(noteRequest.getNoteId());
note.setNoteDate(noteRequest.getNoteDate());
note.setNoteText(noteRequest.getNoteText());
note.setUuid(noteRequest.getUuid());
note.setNoteType(noteService.getNoteType(noteRequest.getNoteTypeName()));
return note;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package org.bahmni.module.bahmnicore.model;


import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.openmrs.Auditable;
import org.openmrs.BaseOpenmrsData;
import org.openmrs.Patient;
import org.openmrs.User;

public class Note extends BaseOpenmrsData implements Auditable, Serializable {

private Integer noteId;

private String noteText;

private Date dateChanged;

private Date dateCreated;

private NoteType noteType;

private Date noteDate;

private Integer locationId;

private User creator;

private User changedBy;


public Note() {
}

@Override
public void setId(Integer id) {
setNoteId(id);
}

@Override
public Integer getId() {
return getNoteId();
}

public Date getDateChanged() {
return dateChanged;
}

public void setDateChanged(Date dateChanged) {
this.dateChanged = dateChanged;
}

@Override
public Date getDateCreated() {
return dateCreated;
}

@Override
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}

public Integer getNoteId() {
return noteId;
}

public void setNoteId(Integer noteId) {
this.noteId = noteId;
}

public Integer getLocationId() {
return locationId;
}

public void setLocationId(Integer locationId) {
this.locationId = locationId;
}

public Date getNoteDate() {
return noteDate;
}

public void setNoteDate(Date noteDate) {
this.noteDate = noteDate;
}

public NoteType getNoteType() {
return noteType;
}

public void setNoteType(NoteType noteType) {
this.noteType = noteType;
}

public String getNoteText() {
return noteText;
}

public void setNoteText(String noteText) {
this.noteText = noteText;
}

@Override
@JsonIgnore
public User getCreator() {
return creator;
}

@Override
public void setCreator(User creator) {
this.creator = creator;
}

@Override
@JsonIgnore
public User getChangedBy() {
return changedBy;
}

@Override
public void setChangedBy(User changedBy) {
this.changedBy = changedBy;
}
}
Loading
Loading