extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/release/BloodWriter.java

Code
Comments
Other
Rev Date Author Line
5138 22 Nov 18 nicklas 1 package net.sf.basedb.reggie.plugins.release;
5138 22 Nov 18 nicklas 2
5138 22 Nov 18 nicklas 3 import java.util.List;
5138 22 Nov 18 nicklas 4
5138 22 Nov 18 nicklas 5 import org.json.simple.JSONArray;
5138 22 Nov 18 nicklas 6 import org.json.simple.JSONObject;
5138 22 Nov 18 nicklas 7
5138 22 Nov 18 nicklas 8 import net.sf.basedb.core.BioSource;
5138 22 Nov 18 nicklas 9 import net.sf.basedb.core.DbControl;
5138 22 Nov 18 nicklas 10 import net.sf.basedb.core.Item;
5138 22 Nov 18 nicklas 11 import net.sf.basedb.core.Sample;
5138 22 Nov 18 nicklas 12 import net.sf.basedb.reggie.dao.Annotationtype;
5138 22 Nov 18 nicklas 13 import net.sf.basedb.reggie.dao.Blood;
5138 22 Nov 18 nicklas 14 import net.sf.basedb.reggie.json.FilteredJSONArray;
5138 22 Nov 18 nicklas 15 import net.sf.basedb.util.filter.NotNullFilter;
5138 22 Nov 18 nicklas 16
5138 22 Nov 18 nicklas 17 /**
5138 22 Nov 18 nicklas 18   Cohort writer implementation for Blood items.
5138 22 Nov 18 nicklas 19   @since 4.21
5138 22 Nov 18 nicklas 20 */
5138 22 Nov 18 nicklas 21 public class BloodWriter 
5138 22 Nov 18 nicklas 22   extends CohortWriter 
5138 22 Nov 18 nicklas 23 {
5138 22 Nov 18 nicklas 24
5138 22 Nov 18 nicklas 25   
5138 22 Nov 18 nicklas 26   public BloodWriter(DbControl dc, ReleaseWriterOptions options)
5138 22 Nov 18 nicklas 27   {
5138 22 Nov 18 nicklas 28     super(dc, options);
5138 22 Nov 18 nicklas 29   }
5138 22 Nov 18 nicklas 30   
5138 22 Nov 18 nicklas 31   @Override
5138 22 Nov 18 nicklas 32   public JSONArray toJSONObjects(CohortItem item)
5138 22 Nov 18 nicklas 33   {
5138 22 Nov 18 nicklas 34     List<Blood> bloodList = item.getBlood();
5138 22 Nov 18 nicklas 35     if (bloodList.size() == 0) return null;
5138 22 Nov 18 nicklas 36     
5138 22 Nov 18 nicklas 37     BioSource patient = item.getPatient().getItem();    
5138 22 Nov 18 nicklas 38     JSONArray json = new JSONArray();
5138 22 Nov 18 nicklas 39     for (Blood b : bloodList)
5138 22 Nov 18 nicklas 40     {
5138 22 Nov 18 nicklas 41       Sample blood = b.getItem();
5138 22 Nov 18 nicklas 42       
5142 22 Nov 18 nicklas 43       JSONObject jsonBlood = new JSONObject();
5142 22 Nov 18 nicklas 44       jsonBlood.put("name", blood.getExternalId());
5142 22 Nov 18 nicklas 45       jsonBlood.put("type", blood.getType().name());
5142 22 Nov 18 nicklas 46       jsonBlood.put("subtype", getName(blood.getItemSubtype()));
5142 22 Nov 18 nicklas 47       jsonBlood.put("parent", patient.getExternalId());
5138 22 Nov 18 nicklas 48   
5138 22 Nov 18 nicklas 49       JSONArray jsonAnnotations = new FilteredJSONArray(new NotNullFilter<>(false));
5138 22 Nov 18 nicklas 50       jsonAnnotations.add(item.getAnnotationJSON(Annotationtype.CONSENT, blood, null));
5218 10 Jan 19 nicklas 51       jsonAnnotations.add(item.getAnnotationJSON(Annotationtype.BLOOD_SAMPLE, blood, null));
5142 22 Nov 18 nicklas 52       jsonBlood.put("annotations", jsonAnnotations);
5142 22 Nov 18 nicklas 53       json.add(jsonBlood);
5138 22 Nov 18 nicklas 54     }
5138 22 Nov 18 nicklas 55     
5138 22 Nov 18 nicklas 56     return json;
5138 22 Nov 18 nicklas 57   }
5138 22 Nov 18 nicklas 58
5138 22 Nov 18 nicklas 59   @Override
5138 22 Nov 18 nicklas 60   public List<CohortTypeDef> getTypeDefsInJSON()
5138 22 Nov 18 nicklas 61   {
5138 22 Nov 18 nicklas 62     DbControl dc = getDbControl();
5218 10 Jan 19 nicklas 63     CohortTypeDefFactory bloodFactory = new CohortTypeDefFactory(dc, Item.SAMPLE, "Blood");
5138 22 Nov 18 nicklas 64     
5138 22 Nov 18 nicklas 65     // Only allow "Yes" on the receiving end
5218 10 Jan 19 nicklas 66     bloodFactory.createAnnotationType(Annotationtype.CONSENT).setEnumeration("Yes");
5218 10 Jan 19 nicklas 67     bloodFactory.createAnnotationType(Annotationtype.BLOOD_SAMPLE);
5138 22 Nov 18 nicklas 68
5218 10 Jan 19 nicklas 69     return bloodFactory.allCreated();
5138 22 Nov 18 nicklas 70   }
5138 22 Nov 18 nicklas 71
5138 22 Nov 18 nicklas 72 }