/
An Example Print Token based on Annotation Field
Got feedback or spotted a mistake?
Leave a comment at the end of this page or email contact@krishagni.com
An Example Print Token based on Annotation Field
// // Output specimen destruction date that is captured in "SpecimenCustomDetails" // annotation form attached at the Specimen level // public class SpecimenDestructionDatePrintToken extends AbstractLabelTmplToken implements LabelTmplToken { private FormDao formDao; // // setter to inject formDao bean defined in core app context // public void setFormDao(FormDao formDao) { this.formDao = formDao; } @Override public String getName() { // // The name of our annotation field value token // return "specimen_destruction_date"; } @Override public String getReplacement(Object object) { Specimen spmn = (Specimen) object; // // Step 1: Retrieve the form by name (SpecimenCustomDetails) // Container form = Container.getContainer("SpecimenCustomDetails"); if (form == null) { // // Return an empty string when there is no form by name "SpecimenCustomDetails" // return StringUtils.EMPTY; } // // Step 2: Retrieve all "SpecimenCustomDetails" records metadata for the input specimen // Map<Long, List<FormRecordSummary>> records = formDao.getFormRecords(spmn.getId(), "Specimen", form.getId()); if (records.isEmpty()) { // // Return an empty string when no records are saved for the specimen // return StringUtils.EMPTY; } // // Step 3: Sort form records based on their order of creation and // get the first record ID (records metadata) // FormRecordSummary record = records.get(form.getId()).stream() .sorted((r1, r2) -> r1.getRecordId().compareTo(r2.getRecordId())) .findFirst().get(); // // Step 4: Get the form record data // FormDataManager mgr = new FormDataManagerImpl(false); FormData formData = mgr.getFormData(form, record.getRecordId()); // // Step 5: Retrieve the field value that we are interested in // i.e. destructionDate // ControlValue value = formData.getFieldValue("destructionDate"); // // Step 6: Get time in milliseconds since Epoch and convert it // to a date string conforming to the format specified in the locale // String timeInStr = value.toString(); return Utility.getDateString(new Date(Long.parseLong(timeInStr))); } }
The details of how to package above token implementation in plugin and register with print tokens registrar can be found in this document.
, multiple selections available,
Related content
How to create a plugin for OpenSpecimen?
How to create a plugin for OpenSpecimen?
Read with this
Sample plugin to overwrite labels and messages
Sample plugin to overwrite labels and messages
Read with this
How to implement and add custom tokens?
How to implement and add custom tokens?
Read with this
REST APIs
REST APIs
Read with this
Got feedback or spotted a mistake?
Leave a comment at the end of this page or email contact@krishagni.com