All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nedap.archie.base.terminology.TerminologyCode Maven / Gradle / Ivy

package com.nedap.archie.base.terminology;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.nedap.archie.rm.support.identification.TerminologyId;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import java.net.URI;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by pieter.bos on 15/10/15.
 */
@XmlType(name="TERMINOLOGY_CODE")
@XmlAccessorType(XmlAccessType.FIELD)
public class TerminologyCode {

    @XmlElement(name="terminology_id")
    private TerminologyId terminologyId;
    @XmlElement(name="terminology_version")
    private String terminologyVersion;
    @XmlElement(name="code_string")
    private String codeString;

    private URI uri;

    @JsonCreator
    public static TerminologyCode createFromString(String terminologyString) {
        if(terminologyString.isEmpty()) {
            return null;
        }
        //'[' NAME_CHAR+ ( '(' NAME_CHAR+ ')' )? '::' NAME_CHAR+ ']' ;
        Pattern pattern = Pattern.compile("\\[(?.+)(\\((?.+)\\))?::(?.+)\\]");
        Matcher matcher = pattern.matcher(terminologyString);
        TerminologyCode result = new TerminologyCode();
        if(matcher.matches()) {
            result.setTerminologyId(matcher.group("terminologyId"));
            result.setCodeString(matcher.group("codeString"));
            result.setTerminologyVersion(matcher.group("terminologyVersion"));

        } else {
            result.setCodeString(terminologyString);
        }
        return result;
    }

    @JsonCreator
    public static TerminologyCode createFromString(@JsonProperty("terminology_id") TerminologyId terminologyId,
                                                   @JsonProperty("terminology_version") String terminologyVersion,
                                                   @JsonProperty("code_string") String codeString) {
        TerminologyCode result = new TerminologyCode();
        result.terminologyId = terminologyId;
        result.terminologyVersion = terminologyVersion;
        result.codeString = codeString;
        return result;
    }

    public void setTerminologyId(String terminologyIdString) {
        TerminologyId terminologyId = new TerminologyId();
        terminologyId.setValue(terminologyIdString);
        setTerminologyId(terminologyId);
    }

    public String getTerminologyVersion() {
        return terminologyVersion;
    }

    public void setTerminologyVersion(String terminologyVersion) {
        this.terminologyVersion = terminologyVersion;
    }

    public String getTerminologyIdString() {
        TerminologyId terminologyId = getTerminologyId();
        return terminologyId == null ? null : terminologyId.getValue();
    }

    public String toString() {
        return terminologyVersion == null ?
                "[" + getTerminologyId() + "::" + getCodeString() + "]" :
                "[" + getTerminologyId() + "(" + terminologyVersion + ")::" + getCodeString() + "]";
    }

    public TerminologyId getTerminologyId() {
        return terminologyId;
    }

    public void setTerminologyId(TerminologyId terminologyId) {
        this.terminologyId = terminologyId;
    }

    public String getCodeString() {
        return codeString;
    }

    public void setCodeString(String codeString) {
        this.codeString = codeString;
    }

    public URI getUri() {
        return uri;
    }

    public void setUri(URI uri) {
        this.uri = uri;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy