Skip to content
Draft
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
Expand Up @@ -20,7 +20,7 @@
import org.openmrs.module.DaemonToken;
import org.openmrs.module.DaemonTokenAware;
import org.openmrs.module.ModuleActivator;
import org.openmrs.module.pacsintegration.api.PacsIntegrationService;
import org.openmrs.module.pacsintegration.incoming.IncomingMessageListener;
import org.openmrs.module.pacsintegration.runner.DaemonTaskRunner;

/**
Expand Down Expand Up @@ -49,7 +49,7 @@ public void started() {
*/
public void willStop() {
log.info("Stopping PACS Integration Module");
Context.getService(PacsIntegrationService.class).stopHL7Listener();
Context.getRegisteredComponent("hl7listener", IncomingMessageListener.class).stop();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,7 @@ public interface PacsIntegrationService extends OpenmrsService {
/**
* Adds a message to the outgoing queue for PACS
*/
public void sendMessageToPacs(String message);
void sendMessageToPacs(String message);

/**
* Initializes the HL7 listener
*/
public void initializeHL7Listener();

/**
* @return true if the hl7 listener is running
*/
public boolean isHL7ListenerRunning();

/**
* Stops the HL7 listener
*/
public void stopHL7Listener();
}

Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
*/
public interface PacsIntegrationDAO {

public void saveOutboundQueue(OutboundQueue outboundQueue);
void saveOutboundQueue(OutboundQueue outboundQueue);

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
*/
package org.openmrs.module.pacsintegration.api.db.hibernate;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import lombok.Setter;
import org.openmrs.api.db.hibernate.DbSessionFactory;
import org.openmrs.module.pacsintegration.OutboundQueue;
import org.openmrs.module.pacsintegration.api.db.PacsIntegrationDAO;
Expand All @@ -24,24 +23,9 @@
* {@link org.openmrs.module.pacsintegration.api.db.PacsIntegrationDAO}.
*/
public class HibernatePacsIntegrationDAO implements PacsIntegrationDAO {

protected final Log log = LogFactory.getLog(this.getClass());


@Setter
private DbSessionFactory sessionFactory;

/**
* @param sessionFactory the sessionFactory to set
*/
public void setSessionFactory(DbSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

/**
* @return the sessionFactory
*/
public DbSessionFactory getSessionFactory() {
return sessionFactory;
}

@Override
public void saveOutboundQueue(OutboundQueue outboundQueue) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,70 +13,28 @@
*/
package org.openmrs.module.pacsintegration.api.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import lombok.Setter;
import org.openmrs.api.impl.BaseOpenmrsService;
import org.openmrs.module.pacsintegration.OutboundQueue;
import org.openmrs.module.pacsintegration.api.PacsIntegrationService;
import org.openmrs.module.pacsintegration.api.db.PacsIntegrationDAO;
import org.openmrs.module.pacsintegration.incoming.IncomingMessageListener;
import org.springframework.transaction.annotation.Transactional;

/**
* It is a default implementation of
* {@link org.openmrs.module.pacsintegration.api.PacsIntegrationService}.
*/
public class PacsIntegrationServiceImpl extends BaseOpenmrsService implements PacsIntegrationService {

protected final Log log = LogFactory.getLog(this.getClass());

@Setter
private PacsIntegrationDAO dao;

private IncomingMessageListener hl7Listener;

@Override
@Transactional
public void sendMessageToPacs(String message) {
OutboundQueue outbound = new OutboundQueue(message);
dao.saveOutboundQueue(outbound);
}

@Override
public void initializeHL7Listener() {
hl7Listener.initialize();
}

@Override
public boolean isHL7ListenerRunning() {
return hl7Listener.isRunning();
}

@Override
public void stopHL7Listener() {
hl7Listener.stop();
}

/**
* @param dao the dao to set
*/
public void setDao(PacsIntegrationDAO dao) {
this.dao = dao;
}

/**
* @return the dao
*/
public PacsIntegrationDAO getDao() {
return dao;
}

public IncomingMessageListener getHl7Listener() {
return hl7Listener;
}

public void setHl7Listener(IncomingMessageListener hl7Listener) {
this.hl7Listener = hl7Listener;
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.app.Application;
import ca.uhn.hl7v2.model.Message;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Expand All @@ -24,6 +25,8 @@
import org.openmrs.module.pacsintegration.runner.TaskRunner;
import org.openmrs.module.radiologyapp.RadiologyOrder;
import org.openmrs.module.radiologyapp.RadiologyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import java.util.Collections;
import java.util.Date;
Expand All @@ -33,24 +36,47 @@ abstract public class IncomingMessageHandler implements Application {

protected final Log log = LogFactory.getLog(this.getClass());

@Setter
@Autowired
protected PatientService patientService;

@Setter
@Autowired
protected ConceptService conceptService;

@Setter
@Autowired
@Qualifier("adminService")
protected AdministrationService adminService;

@Setter
@Autowired
protected RadiologyService radiologyService;

@Setter
@Autowired
protected LocationService locationService;

@Setter
@Autowired
protected ProviderService providerService;

@Setter
@Autowired
protected EmrApiProperties emrApiProperties;

@Setter
@Autowired
protected PacsIntegrationProperties pacsIntegrationProperties;

@Setter
@Autowired
protected TaskRunner taskRunner;

public abstract String getMessageType();

public abstract String getTriggerEvent();

@Override
public synchronized Message processMessage(Message message) throws HL7Exception {
IncomingMessageTask task = getHL7Task(message);
Expand Down Expand Up @@ -148,45 +174,4 @@ protected Date syncTimeWithCurrentServerTime(Date date) {
}
}
}


/**
* Setters
*/

public void setPatientService(PatientService patientService) {
this.patientService = patientService;
}

public void setConceptService(ConceptService conceptService) {
this.conceptService = conceptService;
}

public void setAdminService(AdministrationService adminService) {
this.adminService = adminService;
}

public void setRadiologyService(RadiologyService radiologyService) {
this.radiologyService = radiologyService;
}

public void setLocationService(LocationService locationService) {
this.locationService = locationService;
}

public void setEmrApiProperties(EmrApiProperties emrApiProperties) {
this.emrApiProperties = emrApiProperties;
}

public void setPacsIntegrationProperties(PacsIntegrationProperties pacsIntegrationProperties) {
this.pacsIntegrationProperties = pacsIntegrationProperties;
}

public void setProviderService(ProviderService providerService) {
this.providerService = providerService;
}

public void setTaskRunner(TaskRunner taskRunner) {
this.taskRunner = taskRunner;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,33 @@

import ca.uhn.hl7v2.app.HL7Service;
import ca.uhn.hl7v2.app.SimpleServer;
import lombok.Getter;
import lombok.Setter;
import org.openmrs.module.pacsintegration.PacsIntegrationProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.List;

@Component("hl7listener")
public class IncomingMessageListener {

private HL7Service hl7Service;

@Setter
@Autowired
private PacsIntegrationProperties pacsIntegrationProperties;

private Map<String, IncomingMessageHandler> handlers;
@Setter @Getter
@Autowired
List<IncomingMessageHandler> handlers;

public void initialize() {
hl7Service = new SimpleServer(pacsIntegrationProperties.getHL7ListenerPort());
for (Map.Entry<String, IncomingMessageHandler> entry : handlers.entrySet()) {
String messageType = entry.getKey().split("_")[0];
String triggerEvent = entry.getKey().split("_").length > 1 ? entry.getKey().split("_") [1] : null;
hl7Service.registerApplication(messageType, triggerEvent, entry.getValue());
if (handlers != null) {
for (IncomingMessageHandler handler : handlers) {
hl7Service.registerApplication(handler.getMessageType(), handler.getTriggerEvent(), handler);
}
}
hl7Service.start();
}
Expand All @@ -47,20 +56,4 @@ public void stop() {
hl7Service.stop();
}
}

public void setHl7Service(HL7Service hl7Service) {
this.hl7Service = hl7Service;
}

public void setPacsIntegrationProperties(PacsIntegrationProperties pacsIntegrationProperties) {
this.pacsIntegrationProperties = pacsIntegrationProperties;
}

public Map<String, IncomingMessageHandler> getHandlers() {
return handlers;
}

public void setHandlers(Map<String, IncomingMessageHandler> handlers) {
this.handlers = handlers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,24 @@
import org.openmrs.module.pacsintegration.PacsIntegrationException;
import org.openmrs.module.pacsintegration.util.HL7Utils;
import org.openmrs.module.radiologyapp.RadiologyStudy;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.util.Date;

@Component("ormO01Handler")
public class ORM_O01Handler extends IncomingMessageHandler {

@Override
public String getMessageType() {
return "ORM";
}

@Override
public String getTriggerEvent() {
return "O01";
}

@Override
IncomingMessageTask getHL7Task(final Message message) {
return new IncomingMessageTask() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,23 @@
import org.openmrs.module.pacsintegration.util.HL7Utils;
import org.openmrs.module.radiologyapp.RadiologyReport;
import org.openmrs.util.OpenmrsUtil;
import org.springframework.stereotype.Component;

import java.util.List;

@Component("oruR01Handler")
public class ORU_R01Handler extends IncomingMessageHandler {

@Override
public String getMessageType() {
return "ORU";
}

@Override
public String getTriggerEvent() {
return "R01";
}

@Override
IncomingMessageTask getHL7Task(final Message message) {
return new IncomingMessageTask() {
Expand Down
Loading