Skip to content

Commit 62ce99e

Browse files
committed
OPSMN-3953: CP level setting to specify whether to collect only
primary specimens or all specimens on completion of visit. Related UI and API changes. (2/4) OPSMN-3856: Set the institute in the input filters objects. This makes the load users function very flexible to reuse.
1 parent 6a70042 commit 62ce99e

10 files changed

Lines changed: 96 additions & 3 deletions

File tree

WEB-INF/resources/com/krishagni/catissueplus/core/repository/hbm/CollectionProtocol.hbm.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@
6969

7070
<property name="aliquotsInSameContainer" column="ALIQUOTS_IN_SAME_CONT"/>
7171

72+
<property name="visitCollectionMode" column="VISIT_COLLECTION_MODE">
73+
<type name="org.hibernate.type.EnumType">
74+
<param name="enumClass">
75+
com.krishagni.catissueplus.core.biospecimen.domain.CollectionProtocol$VisitCollectionMode
76+
</param>
77+
</type>
78+
</property>
79+
7280
<property name="visitNamePrintMode" column="VISIT_NAME_PRINT_MODE">
7381
<type name="org.hibernate.type.EnumType">
7482
<param name="enumClass">

WEB-INF/resources/db/4.2/audit.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,11 @@
4444
<column name="specimenList_MOD" type="${bit.type}"/>
4545
</addColumn>
4646
</changeSet>
47+
48+
<changeSet author="vpawar" id="Track visit collection mode setting changes">
49+
<addColumn tableName="CAT_COLLECTION_PROTOCOL_AUD">
50+
<column name="VISIT_COLLECTION_MODE" type="${text.type}(16)"/>
51+
<column name="visitCollectionMode_MOD" type="${bit.type}"/>
52+
</addColumn>
53+
</changeSet>
4754
</databaseChangeLog>

WEB-INF/resources/db/4.2/schema.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,10 @@
153153
<column name="STATE" type="${tinyint.type}"/>
154154
</addColumn>
155155
</changeSet>
156+
157+
<changeSet author="vpawar" id="Collection protocol setting to specify visit collection mode">
158+
<addColumn tableName="CATISSUE_COLLECTION_PROTOCOL">
159+
<column name="VISIT_COLLECTION_MODE" type="${text.type}(16)"/>
160+
</addColumn>
161+
</changeSet>
156162
</databaseChangeLog>

WEB-INF/resources/errors/messages.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,8 @@ cp_sop_doc_moved_or_deleted=SOP document {1} for collection protocol {0} is eith
864864

865865
cp_invalid_sop_doc=Invalid SOP document file handle {0}.
866866

867+
cp_invalid_visit_coll_mode=Invalid visit collection mode: {0}.
868+
867869
cp_invalid_visit_name_print_mode=Invalid visit print mode: {0}.
868870

869871
cp_invalid_spmn_label_pre_print_mode=Invalid specimen label pre-print mode: {0}.

WEB-INF/src/com/krishagni/catissueplus/core/biospecimen/domain/CollectionProtocol.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,25 @@ public class CollectionProtocol extends BaseExtensionEntity {
3434
public enum SpecimenLabelPrePrintMode {
3535
ON_REGISTRATION,
3636
ON_VISIT,
37-
NONE;
37+
NONE
3838
}
3939

4040
public enum SpecimenLabelAutoPrintMode {
4141
PRE_PRINT,
4242
ON_COLLECTION,
43-
NONE;
43+
NONE
4444
}
4545

4646

4747
public enum VisitNamePrintMode {
4848
PRE_PRINT,
4949
ON_COMPLETION,
50-
NONE;
50+
NONE
51+
}
52+
53+
public enum VisitCollectionMode {
54+
PRIMARY_SPMNS,
55+
ALL_SPMNS
5156
}
5257

5358
public static final String EXTN = "CollectionProtocolExtension";
@@ -112,6 +117,8 @@ public enum VisitNamePrintMode {
112117

113118
private Boolean aliquotsInSameContainer;
114119

120+
private VisitCollectionMode visitCollectionMode = VisitCollectionMode.ALL_SPMNS;
121+
115122
private VisitNamePrintMode visitNamePrintMode = VisitNamePrintMode.NONE;
116123

117124
private Integer visitNamePrintCopies;
@@ -361,6 +368,14 @@ public void setAliquotsInSameContainer(Boolean aliquotsInSameContainer) {
361368
this.aliquotsInSameContainer = aliquotsInSameContainer;
362369
}
363370

371+
public VisitCollectionMode getVisitCollectionMode() {
372+
return visitCollectionMode == null ? VisitCollectionMode.ALL_SPMNS : visitCollectionMode;
373+
}
374+
375+
public void setVisitCollectionMode(VisitCollectionMode visitCollectionMode) {
376+
this.visitCollectionMode = visitCollectionMode;
377+
}
378+
364379
public VisitNamePrintMode getVisitNamePrintMode() {
365380
return visitNamePrintMode != null ? visitNamePrintMode : VisitNamePrintMode.NONE;
366381
}
@@ -518,6 +533,7 @@ public void update(CollectionProtocol cp) {
518533
setBarcodingEnabled(cp.isBarcodingEnabled());
519534
setContainerSelectionStrategy(cp.getContainerSelectionStrategy());
520535
setAliquotsInSameContainer(cp.getAliquotsInSameContainer());
536+
setVisitCollectionMode(cp.getVisitCollectionMode());
521537
setVisitNamePrintMode(cp.getVisitNamePrintMode());
522538
setVisitNamePrintCopies(cp.getVisitNamePrintCopies());
523539
setUnsignedConsentDocumentURL(cp.getUnsignedConsentDocumentURL());
@@ -557,6 +573,7 @@ public void copyTo(CollectionProtocol cp) {
557573
cp.setManualSpecLabelEnabled(isManualSpecLabelEnabled());
558574
cp.setBulkPartRegEnabled(isBulkPartRegEnabled());
559575
cp.setBarcodingEnabled(isBarcodingEnabled());
576+
cp.setVisitCollectionMode(getVisitCollectionMode());
560577
cp.setVisitNamePrintMode(getVisitNamePrintMode());
561578
cp.setVisitNamePrintCopies(getVisitNamePrintCopies());
562579
cp.setSpmnLabelPrePrintMode(getSpmnLabelPrePrintMode());

WEB-INF/src/com/krishagni/catissueplus/core/biospecimen/domain/factory/CpErrorCode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public enum CpErrorCode implements ErrorCode {
6565

6666
INVALID_SOP_DOC,
6767

68+
INVALID_VISIT_COLL_MODE,
69+
6870
INVALID_VISIT_NAME_PRINT_MODE,
6971

7072
INVALID_SPMN_LABEL_PRE_PRINT_MODE,

WEB-INF/src/com/krishagni/catissueplus/core/biospecimen/domain/factory/impl/CollectionProtocolFactoryImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public CollectionProtocol createCollectionProtocol(CollectionProtocolDetail inpu
109109
setLabelFormats(input, cp, ose);
110110
setBarcodeSetting(input, cp, ose);
111111
setContainerSelectionStrategy(input, cp, ose);
112+
setVisitCollectionMode(input, cp, ose);
112113
setVisitNamePrintMode(input, cp, ose);
113114
cp.setVisitNamePrintCopies(input.getVisitNamePrintCopies());
114115
setSpecimenLabelPrePrintMode(input, cp, ose);
@@ -369,6 +370,18 @@ private void setContainerSelectionStrategy(CollectionProtocolDetail input, Colle
369370
result.setAliquotsInSameContainer(input.getAliquotsInSameContainer());
370371
}
371372

373+
private void setVisitCollectionMode(CollectionProtocolDetail input, CollectionProtocol cp, OpenSpecimenException ose) {
374+
if (StringUtils.isBlank(input.getVisitCollectionMode())) {
375+
return;
376+
}
377+
378+
try {
379+
cp.setVisitCollectionMode(CollectionProtocol.VisitCollectionMode.valueOf(input.getVisitCollectionMode()));
380+
} catch (IllegalArgumentException iae) {
381+
ose.addError(CpErrorCode.INVALID_VISIT_COLL_MODE, input.getVisitCollectionMode());
382+
}
383+
}
384+
372385
private void setVisitNamePrintMode(CollectionProtocolDetail input, CollectionProtocol cp, OpenSpecimenException ose) {
373386
if (cp.isSpecimenCentric() || StringUtils.isBlank(input.getVisitNamePrintMode())) {
374387
return;

WEB-INF/src/com/krishagni/catissueplus/core/biospecimen/events/CollectionProtocolDetail.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public class CollectionProtocolDetail extends CollectionProtocolSummary {
5555

5656
private Boolean aliquotsInSameContainer;
5757

58+
private String visitCollectionMode;
59+
5860
private String visitNamePrintMode;
5961

6062
private Integer visitNamePrintCopies;
@@ -236,6 +238,14 @@ public void setAliquotsInSameContainer(Boolean aliquotsInSameContainer) {
236238
this.aliquotsInSameContainer = aliquotsInSameContainer;
237239
}
238240

241+
public String getVisitCollectionMode() {
242+
return visitCollectionMode;
243+
}
244+
245+
public void setVisitCollectionMode(String visitCollectionMode) {
246+
this.visitCollectionMode = visitCollectionMode;
247+
}
248+
239249
public String getVisitNamePrintMode() {
240250
return visitNamePrintMode;
241251
}
@@ -336,6 +346,7 @@ public static CollectionProtocolDetail from(CollectionProtocol cp, boolean fullO
336346
result.setBarcodingEnabled(cp.isBarcodingEnabled());
337347
result.setContainerSelectionStrategy(cp.getContainerSelectionStrategy());
338348
result.setAliquotsInSameContainer(cp.getAliquotsInSameContainer());
349+
result.setVisitCollectionMode(cp.getVisitCollectionMode().name());
339350
result.setVisitNamePrintMode(cp.getVisitNamePrintMode().name());
340351
result.setVisitNamePrintCopies(cp.getVisitNamePrintCopies());
341352
result.setSpmnLabelPrePrintMode(cp.getSpmnLabelPrePrintMode().name());

www/app/modules/biospecimen/cp/label-settings.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,14 @@
7070
{{settingCtx.cp.barcodingEnabled | osBoolValue: 'common.enabled': 'common.disabled': 'common.not_specified'}}
7171
</span>
7272
</li>
73+
74+
<li class="item" ng-if="!cp.specimenCentric">
75+
<strong class="key key-sm" translate="cp.on_visit_completion">On Visit Completion</strong>
76+
<span class="value value-md" ng-switch on="settingCtx.cp.visitCollectionMode">
77+
<span ng-switch-when="PRIMARY_SPMNS" translate="cp.coll_primary_spmns">Collect Primary Specimens</span>
78+
<span ng-switch-when="ALL_SPMNS" translate="cp.coll_all_spmns">Collect All Specimens</span>
79+
</span>
80+
</li>
7381
</ul>
7482

7583
<div class="os-section os-line-section" ng-if="!cp.specimenCentric">
@@ -245,6 +253,22 @@
245253
</div>
246254
</div>
247255

256+
<div class="form-group" ng-if="!cp.specimenCentric">
257+
<label class="control-label col-xs-3">
258+
<span translate="cp.on_visit_completion">On Visit Completion</span>
259+
</label>
260+
<div class="col-xs-6">
261+
<label class="radio-inline">
262+
<input type="radio" name="onVisitCompl" ng-model="settingCtx.cp.visitCollectionMode" ng-value="'PRIMARY_SPMNS'">
263+
<span translate="cp.coll_primary_spmns">Collect Primary Specimens</span>
264+
</label>
265+
<label class="radio-inline">
266+
<input type="radio" name="onVisitCompl" ng-model="settingCtx.cp.visitCollectionMode" ng-value="'ALL_SPMNS'">
267+
<span translate="cp.coll_all_spmns">Collect All Specimens</span>
268+
</label>
269+
</div>
270+
</div>
271+
248272
<div class="os-section-divider" ng-if="!cp.specimenCentric">
249273
<span translate="cp.visit_print_settings">Visit Print Settings</span>
250274
</div>

www/app/modules/i18n/en.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@
186186
"visit_name_fmt": "Visit Name Format",
187187
"manual_enabled_for": "User Inputs Allowed For",
188188
"bulk_part_reg_allowed": "Bulk Registrations",
189+
"on_visit_completion": "On Visit Completion",
190+
"coll_primary_spmns": "Collect Primary Specimens",
191+
"coll_all_spmns": "Collect All Specimens",
189192
"pre_print_spmn_labels": "Pre-print Labels",
190193
"ppids": "Participant Protocol IDs",
191194
"visit_names": "Visit Names",

0 commit comments

Comments
 (0)