// Path: rsterminology-core/src/main/java/com/eldrix/terminology/snomedct/auto/_Relationship.java
// public abstract class _Relationship extends CayenneDataObject {
// 
//     private static final long serialVersionUID = 1L; 
// 
//     public static final String RELATIONSHIP_ID_PK_COLUMN = "relationship_id";
// 
//     public static final Property<Integer> CHARACTERISTIC_TYPE = new Property<Integer>("characteristicType");
//     public static final Property<Date> DATE_UPDATED = new Property<Date>("dateUpdated");
//     public static final Property<Integer> REFINABILITY = new Property<Integer>("refinability");
//     public static final Property<String> RELATIONSHIP_GROUP = new Property<String>("relationshipGroup");
//     public static final Property<Long> RELATIONSHIP_ID = new Property<Long>("relationshipId");
//     public static final Property<Concept> RELATIONSHIP_TYPE_CONCEPT = new Property<Concept>("relationshipTypeConcept");
//     public static final Property<Concept> SOURCE_CONCEPT = new Property<Concept>("sourceConcept");
//     public static final Property<Concept> TARGET_CONCEPT = new Property<Concept>("targetConcept");
// 
//     public void setCharacteristicType(Integer characteristicType) {
//         writeProperty("characteristicType", characteristicType);
//     }
//     public Integer getCharacteristicType() {
//         return (Integer)readProperty("characteristicType");
//     }
// 
//     public void setDateUpdated(Date dateUpdated) {
//         writeProperty("dateUpdated", dateUpdated);
//     }
//     public Date getDateUpdated() {
//         return (Date)readProperty("dateUpdated");
//     }
// 
//     public void setRefinability(Integer refinability) {
//         writeProperty("refinability", refinability);
//     }
//     public Integer getRefinability() {
//         return (Integer)readProperty("refinability");
//     }
// 
//     public void setRelationshipGroup(String relationshipGroup) {
//         writeProperty("relationshipGroup", relationshipGroup);
//     }
//     public String getRelationshipGroup() {
//         return (String)readProperty("relationshipGroup");
//     }
// 
//     public void setRelationshipId(Long relationshipId) {
//         writeProperty("relationshipId", relationshipId);
//     }
//     public Long getRelationshipId() {
//         return (Long)readProperty("relationshipId");
//     }
// 
//     public void setRelationshipTypeConcept(Concept relationshipTypeConcept) {
//         setToOneTarget("relationshipTypeConcept", relationshipTypeConcept, true);
//     }
// 
//     public Concept getRelationshipTypeConcept() {
//         return (Concept)readProperty("relationshipTypeConcept");
//     }
// 
// 
//     public void setSourceConcept(Concept sourceConcept) {
//         setToOneTarget("sourceConcept", sourceConcept, true);
//     }
// 
//     public Concept getSourceConcept() {
//         return (Concept)readProperty("sourceConcept");
//     }
// 
// 
//     public void setTargetConcept(Concept targetConcept) {
//         setToOneTarget("targetConcept", targetConcept, true);
//     }
// 
//     public Concept getTargetConcept() {
//         return (Concept)readProperty("targetConcept");
//     }
// 
// 
// }
// 
// Path: rsterminology-core/src/main/java/com/eldrix/terminology/snomedct/semantic/RelationType.java
// public enum RelationType {
// 	IS_A(116680003L),
// 	HAS_ACTIVE_INGREDIENT(127489000L),
// 	HAS_AMP(10362701000001108L),
// 	HAS_ARP(12223201000001101L),
// 	HAS_BASIS_OF_STRENGTH(10363001000001101L),
// 	HAS_DISPENSED_DOSE_FORM(10362901000001105L),
// 	HAS_DOSE_FORM(411116001L),
// 	HAS_EXCIPIENT(8653101000001104L),
// 	HAS_SPECIFIC_ACTIVE_INGREDIENT(10362801000001104L),
// 	HAS_TRADE_FAMILY_GROUP(9191701000001107L),
// 	HAS_VMP(10362601000001103L),
// 	VMP_NON_AVAILABILITY_INDICATOR(8940601000001102L), 
// 	VMP_PRESCRIBING_STATUS(8940001000001105L),
// 	VRP_PRESCRIBING_STATUS(12223501000001103L);
// 
// 	public final long conceptId;
// 
// 	private final static HashMap<Long, RelationType> _lookup = new HashMap<Long, RelationType>();
// 	static {
// 		for (RelationType type : RelationType.values()) {
// 			_lookup.put(type.conceptId, type);
// 		}
// 	}
// 	RelationType(long conceptId) {
// 		this.conceptId = conceptId;
// 	}
// 	public static RelationType relationTypeForConceptId(long conceptId) {
// 		return _lookup.get(conceptId);
// 	}
// }


import java.util.Optional;
import com.eldrix.terminology.snomedct.auto._Relationship;
import com.eldrix.terminology.snomedct.semantic.RelationType;
package com.eldrix.terminology.snomedct;



public class Relationship extends _Relationship {
	private static final long serialVersionUID = 1L; 

// Path: rsterminology-core/src/main/java/com/eldrix/terminology/snomedct/auto/_Relationship.java
// public abstract class _Relationship extends CayenneDataObject {
// 
//     private static final long serialVersionUID = 1L; 
// 
//     public static final String RELATIONSHIP_ID_PK_COLUMN = "relationship_id";
// 
//     public static final Property<Integer> CHARACTERISTIC_TYPE = new Property<Integer>("characteristicType");
//     public static final Property<Date> DATE_UPDATED = new Property<Date>("dateUpdated");
//     public static final Property<Integer> REFINABILITY = new Property<Integer>("refinability");
//     public static final Property<String> RELATIONSHIP_GROUP = new Property<String>("relationshipGroup");
//     public static final Property<Long> RELATIONSHIP_ID = new Property<Long>("relationshipId");
//     public static final Property<Concept> RELATIONSHIP_TYPE_CONCEPT = new Property<Concept>("relationshipTypeConcept");
//     public static final Property<Concept> SOURCE_CONCEPT = new Property<Concept>("sourceConcept");
//     public static final Property<Concept> TARGET_CONCEPT = new Property<Concept>("targetConcept");
// 
//     public void setCharacteristicType(Integer characteristicType) {
//         writeProperty("characteristicType", characteristicType);
//     }
//     public Integer getCharacteristicType() {
//         return (Integer)readProperty("characteristicType");
//     }
// 
//     public void setDateUpdated(Date dateUpdated) {
//         writeProperty("dateUpdated", dateUpdated);
//     }
//     public Date getDateUpdated() {
//         return (Date)readProperty("dateUpdated");
//     }
// 
//     public void setRefinability(Integer refinability) {
//         writeProperty("refinability", refinability);
//     }
//     public Integer getRefinability() {
//         return (Integer)readProperty("refinability");
//     }
// 
//     public void setRelationshipGroup(String relationshipGroup) {
//         writeProperty("relationshipGroup", relationshipGroup);
//     }
//     public String getRelationshipGroup() {
//         return (String)readProperty("relationshipGroup");
//     }
// 
//     public void setRelationshipId(Long relationshipId) {
//         writeProperty("relationshipId", relationshipId);
//     }
//     public Long getRelationshipId() {
//         return (Long)readProperty("relationshipId");
//     }
// 
//     public void setRelationshipTypeConcept(Concept relationshipTypeConcept) {
//         setToOneTarget("relationshipTypeConcept", relationshipTypeConcept, true);
//     }
// 
//     public Concept getRelationshipTypeConcept() {
//         return (Concept)readProperty("relationshipTypeConcept");
//     }
// 
// 
//     public void setSourceConcept(Concept sourceConcept) {
//         setToOneTarget("sourceConcept", sourceConcept, true);
//     }
// 
//     public Concept getSourceConcept() {
//         return (Concept)readProperty("sourceConcept");
//     }
// 
// 
//     public void setTargetConcept(Concept targetConcept) {
//         setToOneTarget("targetConcept", targetConcept, true);
//     }
// 
//     public Concept getTargetConcept() {
//         return (Concept)readProperty("targetConcept");
//     }
// 
// 
// }
// 
// Path: rsterminology-core/src/main/java/com/eldrix/terminology/snomedct/semantic/RelationType.java
// public enum RelationType {
// 	IS_A(116680003L),
// 	HAS_ACTIVE_INGREDIENT(127489000L),
// 	HAS_AMP(10362701000001108L),
// 	HAS_ARP(12223201000001101L),
// 	HAS_BASIS_OF_STRENGTH(10363001000001101L),
// 	HAS_DISPENSED_DOSE_FORM(10362901000001105L),
// 	HAS_DOSE_FORM(411116001L),
// 	HAS_EXCIPIENT(8653101000001104L),
// 	HAS_SPECIFIC_ACTIVE_INGREDIENT(10362801000001104L),
// 	HAS_TRADE_FAMILY_GROUP(9191701000001107L),
// 	HAS_VMP(10362601000001103L),
// 	VMP_NON_AVAILABILITY_INDICATOR(8940601000001102L), 
// 	VMP_PRESCRIBING_STATUS(8940001000001105L),
// 	VRP_PRESCRIBING_STATUS(12223501000001103L);
// 
// 	public final long conceptId;
// 
// 	private final static HashMap<Long, RelationType> _lookup = new HashMap<Long, RelationType>();
// 	static {
// 		for (RelationType type : RelationType.values()) {
// 			_lookup.put(type.conceptId, type);
// 		}
// 	}
// 	RelationType(long conceptId) {
// 		this.conceptId = conceptId;
// 	}
// 	public static RelationType relationTypeForConceptId(long conceptId) {
// 		return _lookup.get(conceptId);
// 	}
// }


// Path: rsterminology-core/src/main/java/com/eldrix/terminology/snomedct/Relationship.java
import java.util.Optional;
import com.eldrix.terminology.snomedct.auto._Relationship;
import com.eldrix.terminology.snomedct.semantic.RelationType;

package com.eldrix.terminology.snomedct;



public class Relationship extends _Relationship {
	private static final long serialVersionUID = 1L; 

	public Optional<RelationType> getRelationType() {