Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.med.pbm.ampl.asset.mock;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import gov.va.med.pbm.ampl.constant.MockDataConstants;
import gov.va.med.pbm.ampl.controller.EnvironmentInternalController;
import gov.va.med.pbm.ampl.model.ProgressNote;
import gov.va.med.pbm.ampl.model.Signature;
import gov.va.med.pbm.ampl.utility.CollectionUtility;
import gov.va.med.pbm.ampl.utility.DateUtility;
import gov.va.med.pbm.ampl.utility.NumberUtility;
/**
* This class generates mock data for the {@link EnvironmentInternalController} end points .
*
* @author Ian Meinert
* @author Pavani Mukthipudi
*
* @since 1.0
*/
public class ProgressNoteData {
private String patientId;
/**
* The application logger.
*/
static final Logger LOGGER = LoggerFactory.getLogger(ProgressNoteData.class);
/**
* Single parameter constructor.
*
* @param patientId {@link Long}
*/
public ProgressNoteData(String patientId) {
this.patientId = patientId;
}
/**
* Generates a {@link ProgressNote} {@link Collection} used in mock cases.
*
* @param c the count of {@link ProgressNote} objects to create
* @return a {@link Collection} of {@link ProgressNote} with mock data
*/
public Collection<ProgressNote> testProgressNotesForPatient(int c) {
Collection<ProgressNote> pc = new ArrayList<ProgressNote>();
FacilityData f = new FacilityData();
SignatureData sig = new SignatureData();
// for some fields generate mock data that is specific to a single progress note
// also generate mock data that is common across multiple progress notes that can be used for sorting data
for (int i = 1; i <= c; i++) {
String s = ProgressNote.class.getSimpleName().toUpperCase() + i;
int k = NumberUtility.randomBetween(MockDataConstants.ZERO, MockDataConstants.SEVEN);
OffsetDateTime dt = DateUtility.randomOffsetDateTime(MockDataConstants.TWO_K, MockDataConstants.TWO_K_EIGHTTEEN);
ProgressNote pn = new ProgressNote();
String[] cwads = { "PN", "DS", "CR", "CP", "SR", "RA", "LR", "C", "W", "A", "D", new String() };
pn.setAuthor("author_" + k);
pn.setEntryDate(dt.plusMinutes(NumberUtility.randomBetween(1, MockDataConstants.FIFTEEN)));
pn.setExpCosigner("ExpCosigner_" + k);
pn.setExpSigner("ExpSigner_" + k);
pn.setFacility(f.testFacilityForPatient(k));
pn.setHospitalLocation("hospitalLocation_" + k);
pn.setLocalTitle("localTitle_" + s);
pn.setNoteDate(dt);
pn.setPatientId(this.patientId);
pn.setReportText("noteText_" + s);
pn.setSignature(sig.generateSignature(k,
dt.plusMinutes(NumberUtility.randomBetween(MockDataConstants.FIFTEEN, MockDataConstants.ONE_TWENTY))));
pn.setStandardTitle("stdTitle_" + s);
pn.setStatus("status_" + k);
pn.setUrgency("urgency_" + k);
pn.setDocType((String) CollectionUtility.getRandom(cwads));
// the following data is optional for a progress note
if (k % 2 == 0) {
pn.setCosignature(sig.generateSignature(k,
dt.plusMinutes(NumberUtility.randomBetween(MockDataConstants.ONE_TWENTY, MockDataConstants.TWO_FOURTY))));
pn.setAmendmentSignature(sig.generateSignature(k,
dt.plusDays(NumberUtility.randomBetween(MockDataConstants.SEVEN, MockDataConstants.THREE_HUNDRED))));
pn.setAddendums(this.generateAddendums(dt));
}
pc.add(pn);
}
return pc;
}
/**
* Creates a collection of addendums to a {@link ProgressNote} with mock data. The method will generate between 1 and 7
* addendums. Only the {@link ProgressNote} class fields required for an addendum are generated.
*
* @param date - Used to create more realistic {@link Signature} dates. Each addendum will have a date between 1 and 500
* days after the provided date parameter.
* @return {@link Collection} of addendums to a {@link ProgressNote}
*/
private Collection<ProgressNote> generateAddendums(OffsetDateTime date) {
Collection<ProgressNote> ac = new ArrayList<ProgressNote>();
SignatureData s = new SignatureData();
int k = NumberUtility.randomBetween(1, MockDataConstants.SEVEN);
for (int i = 1; i <= k; i++) {
ProgressNote pn = new ProgressNote();
pn.setAuthor("author_" + k);
pn.setReportText("noteText_Addendum" + k);
pn.setSignature(
s.generateSignature(k, date.plusDays(NumberUtility.randomBetween(1, MockDataConstants.FIVE_HUNDRED))));
ac.add(pn);
}
return ac;
}
}