/** * Soft deletes Participant in CaTissue. That is to mark it as disabled with SSN set as NULL. * * @param participant - Participant to be deleted * @return instance of Participant * @throws ApplicationException - ApplicationException */ public Participant deleteParticipant(Participant participant) throws ApplicationException { final Participant persistedParticipant = getParticipantForPatientId( participant.getLastName(), getShortTitleForParticipant(participant)); if (persistedParticipant == null) { return null; } persistedParticipant.setActivityStatus(DISABLED); persistedParticipant.setSocialSecurityNumber(null); persistedParticipant.setLastName(null); final Iterator<CollectionProtocolRegistration> iter = persistedParticipant.getCollectionProtocolRegistrationCollection().iterator(); while (iter.hasNext()) { final CollectionProtocolRegistration collectionProtocolRegistration = (CollectionProtocolRegistration) iter.next(); collectionProtocolRegistration.setProtocolParticipantIdentifier(""); collectionProtocolRegistration.setActivityStatus(DISABLED); caTissueAPIClient.update(collectionProtocolRegistration); } /* * Iterator<ParticipantMedicalIdentifier> iter = persistedParticipant.getParticipantMedicalIdentifierCollection * ().iterator(); while (iter.hasNext()) { ParticipantMedicalIdentifier participantMedicalIdentifier = * (ParticipantMedicalIdentifier) iter .next();//caTissueAPIClient.delete( * "Delete from ParticipantMedicalIdentifier pmi where pmi.id=" + participantMedicalIdentifier.getId()); * caTissueAPIClient.delete(participantMedicalIdentifier); } */ persistedParticipant.getParticipantMedicalIdentifierCollection().clear(); return caTissueAPIClient.update(persistedParticipant); }
private CollectionProtocol getExistingCollectionProtocol(String shortTitle) throws ApplicationException { CollectionProtocol cp = new CollectionProtocol(); cp.setShortTitle(shortTitle); cp = caTissueAPIClient.searchById(CollectionProtocol.class, cp); return cp; }
/** * Retrieve the participant for given PatientId * * @param participantId - PatientId for which participant has to be fetched * @param shortTitle - ShortTitle of the CollectionProtocol * @return Participant * @throws ApplicationException - ApplicationException */ public Participant getParticipantForPatientId(String participantId, String shortTitle) throws ApplicationException { final List<Participant> prtcpntLst = caTissueAPIClient .getApplicationService() .query(CqlUtility.getParticipantForPatientId(participantId, shortTitle)); if (prtcpntLst == null || prtcpntLst.isEmpty()) { return null; } return prtcpntLst.get(0); }
/** * updates Participant registration in CaTissue * * @param participant - Participant to be registered * @return instance of Participant * @throws ApplicationException - ApplicationException */ public Participant updateParticipantRegistration(Participant participant) throws ApplicationException { if (participant == null || StringUtils.isEmpty(participant.getLastName())) { LOG.error( "Participant does not contain the unique medical identifier " + participant.getLastName()); throw new ApplicationException("Participant does not contain the unique medical identifier"); } final Participant existingParticipant = getParticipantForPatientId( participant.getLastName(), getShortTitleForParticipant(participant)); if (existingParticipant == null) { LOG.error( "CaTissue does not contain a participant with the unique identifier, " + participant.getLastName()); throw new ApplicationException( "CaTissue does not contain a participant with the unique identifier, " + participant.getLastName()); } // check if the collection protocol is different, if different then throw exception if (isCollectionProtocolChanged(participant, existingParticipant)) { LOG.error( "Update Participant Registration failed for " + participant.getLastName() + "and exception is Study can't be changed while updating the Participant."); throw new ApplicationException( "Update Participant Registration failed for " + participant.getLastName() + "and exception is Study can't be changed while updating the Participant."); } participant.setId(existingParticipant.getId()); // Set the values in CPR only for Create Participant Flow and don't set it for UpdateParticipant participant.setCollectionProtocolRegistrationCollection( new HashSet<CollectionProtocolRegistration>()); // code to handle the existing/new race collection updateParticipantRaceCollection(existingParticipant, participant); try { caTissueAPIClient.update(participant); } catch (ApplicationException ae) { LOG.error( "Update Registration Failed for Participant with Subject ID " + participant.getLastName(), ae); throw new ApplicationException(ae); } return copyFrom(existingParticipant); }
/** * Registers Participant in CaTissue * * @param participant - Participant to be registered * @return instance of Participant * @throws ApplicationException - ApplicationException */ public Participant registerParticipant(Participant participant) throws ApplicationException { if (participant == null || StringUtils.isEmpty(participant.getLastName())) { throw new ApplicationException("Participant does not contain the unique medical identifier"); } // populate the CP-Title inside Participant-CPR-CP-Title. Also call // populateConsentTierResponse() populateCP(participant); Participant returnParticipant = null; try { returnParticipant = caTissueAPIClient.insert(participant); } catch (ApplicationException ae) { LOG.error( "Create Registration Failed for Participant with Subject ID as " + participant.getLastName(), ae); throw new ApplicationException(ae); } return returnParticipant; }
/** * retrieve participants registered to a collection protocol * * @param cpTitle - collection protocol title * @return list of participant for that collection protocol * @throws ApplicationException - ApplicationException */ public List<Participant> getParticipantsForCollectionProtocol(String cpTitle) throws ApplicationException { return caTissueAPIClient .getApplicationService() .query(CqlUtility.getParticipantsForCP(cpTitle)); }