diff --git a/api/src/main/java/org/openmrs/Drug.java b/api/src/main/java/org/openmrs/Drug.java index 1fd5adb86668..b9564dd5dddd 100644 --- a/api/src/main/java/org/openmrs/Drug.java +++ b/api/src/main/java/org/openmrs/Drug.java @@ -22,38 +22,73 @@ import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; import org.openmrs.api.context.Context; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; /** * Drug */ @Indexed @Audited +@Entity +@Table(name = "drug") public class Drug extends BaseChangeableOpenmrsMetadata { public static final long serialVersionUID = 285L; // Fields @DocumentId + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "drug_id_seq") + @GenericGenerator( + name = "drug_id_seq", + strategy = "native", + parameters = @Parameter(name = "sequence", value = "drug_drug_id_seq") + ) + @Column(name = "drug_id", nullable = false) private Integer drugId; + @Column(name = "combination", length = 1, nullable = false) private Boolean combination = false; + @ManyToOne + @JoinColumn(name = "dosage_form", nullable = true) private Concept dosageForm; + @Column(name = "maximum_daily_dose", length = 22) private Double maximumDailyDose; + @Column(name = "minimum_daily_dose", length = 22) private Double minimumDailyDose; + @Column(name = "strength", length = 255) private String strength; + @ManyToOne + @JoinColumn(name = "dose_limit_units", nullable = true) private Concept doseLimitUnits; @IndexedEmbedded(includeEmbeddedObjectId = true) + @ManyToOne + @JoinColumn(name = "concept_id", nullable = false) private Concept concept; @IndexedEmbedded(includeEmbeddedObjectId = true) + @OneToMany(mappedBy = "drug", cascade = CascadeType.ALL, orphanRemoval = true) private Set drugReferenceMaps; + @OneToMany(mappedBy = "drug", fetch = FetchType.LAZY) private Collection ingredients; // Constructors diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index 2bd3c6ad8dc1..b3cce97d08ef 100644 --- a/api/src/main/resources/hibernate.cfg.xml +++ b/api/src/main/resources/hibernate.cfg.xml @@ -42,7 +42,6 @@ - diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/Drug.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/Drug.hbm.xml deleted file mode 100644 index dfbf404db43c..000000000000 --- a/api/src/main/resources/org/openmrs/api/db/hibernate/Drug.hbm.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - drug_drug_id_seq - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java index 6d553c038256..9a787a6ec471 100644 --- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java +++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java @@ -2740,6 +2740,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th .addAnnotatedClass(ProgramAttributeType.class) .addAnnotatedClass(HL7InError.class) .addAnnotatedClass(OrderType.class) + .addAnnotatedClass(Drug.class) .getMetadataBuilder().build();