commit c7386f1dc26777531a67a189e50619cc7fec5b97 Author: Paul-Christian Volkmer Date: Tue Jul 9 16:36:24 2024 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f35ca9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..0ff54b0 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Paul-Christian Volkmer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..64d46af --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# DNPM:DIP MTB Data-Transfer-Objects for Java + +Serialization and deserialization of DNPM:DIP MTB DTOs for the Java programming language. + +This library provides DNPM:DIP data model for use with "Modellvorhaben gem. §64e SGB V" + +## Usage notices + +Since this library is also intended to be used with Onkostar, the default Java version is limited to Java 11 +and all date-time objects do not use JSR 310 types but `java.util.Date`. + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..4785192 --- /dev/null +++ b/build.gradle @@ -0,0 +1,21 @@ +plugins { + id 'java-library' +} + +group = 'dev.pcvolkmer.mv64e' +version = '0.1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + api 'com.fasterxml.jackson.core:jackson-databind:2.12.7.2' + + testImplementation platform('org.junit:junit-bom:5.10.0') + testImplementation 'org.junit.jupiter:junit-jupiter' +} + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..249e583 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..5bfd434 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Jul 09 16:02:43 CEST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..1b6c787 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1070329 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'mtb-dto' + diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/AddendumCode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/AddendumCode.java new file mode 100644 index 0000000..7b36a77 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/AddendumCode.java @@ -0,0 +1,34 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum AddendumCode { + IS, IV, R, Z; + + @JsonValue + public String toValue() { + switch (this) { + case IS: return "is"; + case IV: return "iv"; + case R: return "R"; + case Z: return "Z"; + } + return null; + } + + @JsonCreator + public static AddendumCode forValue(String value) throws IOException { + switch (value) { + case "is": + return IS; + case "iv": + return IV; + case "R": + return R; + case "Z": + return Z; + } + throw new IOException("Cannot deserialize AddendumCode"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Address.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Address.java new file mode 100644 index 0000000..ccf286d --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Address.java @@ -0,0 +1,12 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Address { + private String municipalityCode; + + @JsonProperty("municipalityCode") + public String getMunicipalityCode() { return municipalityCode; } + @JsonProperty("municipalityCode") + public void setMunicipalityCode(String value) { this.municipalityCode = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Chromosome.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Chromosome.java new file mode 100644 index 0000000..241bb3f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Chromosome.java @@ -0,0 +1,94 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum Chromosome { + CHR1, CHR10, CHR11, CHR12, CHR13, CHR14, CHR15, CHR16, CHR17, CHR18, CHR19, CHR2, CHR20, CHR21, CHR22, CHR3, CHR4, CHR5, CHR6, CHR7, CHR8, CHR9, CHR_X, CHR_Y; + + @JsonValue + public String toValue() { + switch (this) { + case CHR1: return "chr1"; + case CHR10: return "chr10"; + case CHR11: return "chr11"; + case CHR12: return "chr12"; + case CHR13: return "chr13"; + case CHR14: return "chr14"; + case CHR15: return "chr15"; + case CHR16: return "chr16"; + case CHR17: return "chr17"; + case CHR18: return "chr18"; + case CHR19: return "chr19"; + case CHR2: return "chr2"; + case CHR20: return "chr20"; + case CHR21: return "chr21"; + case CHR22: return "chr22"; + case CHR3: return "chr3"; + case CHR4: return "chr4"; + case CHR5: return "chr5"; + case CHR6: return "chr6"; + case CHR7: return "chr7"; + case CHR8: return "chr8"; + case CHR9: return "chr9"; + case CHR_X: return "chrX"; + case CHR_Y: return "chrY"; + } + return null; + } + + @JsonCreator + public static Chromosome forValue(String value) throws IOException { + switch (value) { + case "chr1": + return CHR1; + case "chr10": + return CHR10; + case "chr11": + return CHR11; + case "chr12": + return CHR12; + case "chr13": + return CHR13; + case "chr14": + return CHR14; + case "chr15": + return CHR15; + case "chr16": + return CHR16; + case "chr17": + return CHR17; + case "chr18": + return CHR18; + case "chr19": + return CHR19; + case "chr2": + return CHR2; + case "chr20": + return CHR20; + case "chr21": + return CHR21; + case "chr22": + return CHR22; + case "chr3": + return CHR3; + case "chr4": + return CHR4; + case "chr5": + return CHR5; + case "chr6": + return CHR6; + case "chr7": + return CHR7; + case "chr8": + return CHR8; + case "chr9": + return CHR9; + case "chrX": + return CHR_X; + case "chrY": + return CHR_Y; + } + throw new IOException("Cannot deserialize Chromosome"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Claim.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Claim.java new file mode 100644 index 0000000..a182eff --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Claim.java @@ -0,0 +1,33 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class Claim { + private String id; + private Date issuedOn; + private Patient patient; + private String therapy; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("therapy") + public String getTherapy() { return therapy; } + @JsonProperty("therapy") + public void setTherapy(String value) { this.therapy = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponse.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponse.java new file mode 100644 index 0000000..55af191 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponse.java @@ -0,0 +1,45 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class ClaimResponse { + private ClaimResponseClaim claim; + private String id; + private Date issuedOn; + private Patient patient; + private ClaimResponseStatusReason reason; + private CodingClaimResponseStatus status; + + @JsonProperty("claim") + public ClaimResponseClaim getClaim() { return claim; } + @JsonProperty("claim") + public void setClaim(ClaimResponseClaim value) { this.claim = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("reason") + public ClaimResponseStatusReason getReason() { return reason; } + @JsonProperty("reason") + public void setReason(ClaimResponseStatusReason value) { this.reason = value; } + + @JsonProperty("status") + public CodingClaimResponseStatus getStatus() { return status; } + @JsonProperty("status") + public void setStatus(CodingClaimResponseStatus value) { this.status = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaim.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaim.java new file mode 100644 index 0000000..53bd5d6 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaim.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class ClaimResponseClaim { + private String id; + private ClaimResponseClaimType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public ClaimResponseClaimType getType() { return type; } + @JsonProperty("type") + public void setType(ClaimResponseClaimType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaimType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaimType.java new file mode 100644 index 0000000..e0f132e --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseClaimType.java @@ -0,0 +1,22 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum ClaimResponseClaimType { + CLAIM; + + @JsonValue + public String toValue() { + switch (this) { + case CLAIM: return "Claim"; + } + return null; + } + + @JsonCreator + public static ClaimResponseClaimType forValue(String value) throws IOException { + if (value.equals("Claim")) return CLAIM; + throw new IOException("Cannot deserialize ClaimResponseClaimType"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatus.java new file mode 100644 index 0000000..6e9c34c --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatus.java @@ -0,0 +1,31 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum ClaimResponseStatus { + ACCEPTED, REJECTED, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case ACCEPTED: return "accepted"; + case REJECTED: return "rejected"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static ClaimResponseStatus forValue(String value) throws IOException { + switch (value) { + case "accepted": + return ACCEPTED; + case "rejected": + return REJECTED; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize ClaimResponseStatus"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatusReason.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatusReason.java new file mode 100644 index 0000000..1cf35ab --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ClaimResponseStatusReason.java @@ -0,0 +1,46 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum ClaimResponseStatusReason { + APPROVAL_REVOCATION, FORMAL_REASONS, INCLUSION_IN_STUDY, INSUFFICIENT_EVIDENCE, OTHER, OTHER_THERAPY_RECOMMENDED, STANDARD_THERAPY_NOT_EXHAUSTED, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case APPROVAL_REVOCATION: return "approval-revocation"; + case FORMAL_REASONS: return "formal-reasons"; + case INCLUSION_IN_STUDY: return "inclusion-in-study"; + case INSUFFICIENT_EVIDENCE: return "insufficient-evidence"; + case OTHER: return "other"; + case OTHER_THERAPY_RECOMMENDED: return "other-therapy-recommended"; + case STANDARD_THERAPY_NOT_EXHAUSTED: return "standard-therapy-not-exhausted"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static ClaimResponseStatusReason forValue(String value) throws IOException { + switch (value) { + case "approval-revocation": + return APPROVAL_REVOCATION; + case "formal-reasons": + return FORMAL_REASONS; + case "inclusion-in-study": + return INCLUSION_IN_STUDY; + case "insufficient-evidence": + return INSUFFICIENT_EVIDENCE; + case "other": + return OTHER; + case "other-therapy-recommended": + return OTHER_THERAPY_RECOMMENDED; + case "standard-therapy-not-exhausted": + return STANDARD_THERAPY_NOT_EXHAUSTED; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize ClaimResponseStatusReason"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Cnv.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Cnv.java new file mode 100644 index 0000000..72f293f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Cnv.java @@ -0,0 +1,79 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.List; + +public class Cnv { + private Chromosome chromosome; + private Double cnA; + private Double cnB; + private List copyNumberNeutralLoH; + private EndRange endRange; + private String id; + private Double relativeCopyNumber; + private List reportedAffectedGenes; + private String reportedFocality; + private StartRange startRange; + private Long totalCopyNumber; + private CnvType type; + + @JsonProperty("chromosome") + public Chromosome getChromosome() { return chromosome; } + @JsonProperty("chromosome") + public void setChromosome(Chromosome value) { this.chromosome = value; } + + @JsonProperty("cnA") + public Double getCnA() { return cnA; } + @JsonProperty("cnA") + public void setCnA(Double value) { this.cnA = value; } + + @JsonProperty("cnB") + public Double getCnB() { return cnB; } + @JsonProperty("cnB") + public void setCnB(Double value) { this.cnB = value; } + + @JsonProperty("copyNumberNeutralLoH") + public List getCopyNumberNeutralLoH() { return copyNumberNeutralLoH; } + @JsonProperty("copyNumberNeutralLoH") + public void setCopyNumberNeutralLoH(List value) { this.copyNumberNeutralLoH = value; } + + @JsonProperty("endRange") + public EndRange getEndRange() { return endRange; } + @JsonProperty("endRange") + public void setEndRange(EndRange value) { this.endRange = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("relativeCopyNumber") + public Double getRelativeCopyNumber() { return relativeCopyNumber; } + @JsonProperty("relativeCopyNumber") + public void setRelativeCopyNumber(Double value) { this.relativeCopyNumber = value; } + + @JsonProperty("reportedAffectedGenes") + public List getReportedAffectedGenes() { return reportedAffectedGenes; } + @JsonProperty("reportedAffectedGenes") + public void setReportedAffectedGenes(List value) { this.reportedAffectedGenes = value; } + + @JsonProperty("reportedFocality") + public String getReportedFocality() { return reportedFocality; } + @JsonProperty("reportedFocality") + public void setReportedFocality(String value) { this.reportedFocality = value; } + + @JsonProperty("startRange") + public StartRange getStartRange() { return startRange; } + @JsonProperty("startRange") + public void setStartRange(StartRange value) { this.startRange = value; } + + @JsonProperty("totalCopyNumber") + public Long getTotalCopyNumber() { return totalCopyNumber; } + @JsonProperty("totalCopyNumber") + public void setTotalCopyNumber(Long value) { this.totalCopyNumber = value; } + + @JsonProperty("type") + public CnvType getType() { return type; } + @JsonProperty("type") + public void setType(CnvType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CnvType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CnvType.java new file mode 100644 index 0000000..e7866e8 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CnvType.java @@ -0,0 +1,31 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum CnvType { + HIGH_LEVEL_GAIN, LOSS, LOW_LEVEL_GAIN; + + @JsonValue + public String toValue() { + switch (this) { + case HIGH_LEVEL_GAIN: return "high-level-gain"; + case LOSS: return "loss"; + case LOW_LEVEL_GAIN: return "low-level-gain"; + } + return null; + } + + @JsonCreator + public static CnvType forValue(String value) throws IOException { + switch (value) { + case "high-level-gain": + return HIGH_LEVEL_GAIN; + case "loss": + return LOSS; + case "low-level-gain": + return LOW_LEVEL_GAIN; + } + throw new IOException("Cannot deserialize CNVType"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Code.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Code.java new file mode 100644 index 0000000..24e7777 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Code.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Code { + private String code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public String getCode() { return code; } + @JsonProperty("code") + public void setCode(String value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Coding.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Coding.java new file mode 100644 index 0000000..78d2b20 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Coding.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Coding { + private String code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public String getCode() { return code; } + @JsonProperty("code") + public void setCode(String value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingClaimResponseStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingClaimResponseStatus.java new file mode 100644 index 0000000..beff73d --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingClaimResponseStatus.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingClaimResponseStatus { + private ClaimResponseStatus code; + private String display; + private String system; + + @JsonProperty("code") + public ClaimResponseStatus getCode() { return code; } + @JsonProperty("code") + public void setCode(ClaimResponseStatus value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingEcog.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingEcog.java new file mode 100644 index 0000000..956717a --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingEcog.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingEcog { + private PurpleCode code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public PurpleCode getCode() { return code; } + @JsonProperty("code") + public void setCode(PurpleCode value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingGender.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingGender.java new file mode 100644 index 0000000..9f67221 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingGender.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingGender { + private Gender code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public Gender getCode() { return code; } + @JsonProperty("code") + public void setCode(Gender value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceAddendum.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceAddendum.java new file mode 100644 index 0000000..4efe15e --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceAddendum.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingLevelOfEvidenceAddendum { + private AddendumCode code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public AddendumCode getCode() { return code; } + @JsonProperty("code") + public void setCode(AddendumCode value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceGrading.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceGrading.java new file mode 100644 index 0000000..f797266 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingLevelOfEvidenceGrading.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingLevelOfEvidenceGrading { + private GradingCode code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public GradingCode getCode() { return code; } + @JsonProperty("code") + public void setCode(GradingCode value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingRecist.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingRecist.java new file mode 100644 index 0000000..67db26b --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingRecist.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingRecist { + private FluffyCode code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public FluffyCode getCode() { return code; } + @JsonProperty("code") + public void setCode(FluffyCode value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTherapyStatusReason.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTherapyStatusReason.java new file mode 100644 index 0000000..8d093e2 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTherapyStatusReason.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingTherapyStatusReason { + private NotDoneReasonCode code; + private String display; + private String system; + private String version; + + @JsonProperty("code") + public NotDoneReasonCode getCode() { return code; } + @JsonProperty("code") + public void setCode(NotDoneReasonCode value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } + + @JsonProperty("version") + public String getVersion() { return version; } + @JsonProperty("version") + public void setVersion(String value) { this.version = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionLocalization.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionLocalization.java new file mode 100644 index 0000000..31b0888 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionLocalization.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingTumorSpecimenCollectionLocalization { + private TumorSpecimenCollectionLocalization code; + private String display; + private String system; + + @JsonProperty("code") + public TumorSpecimenCollectionLocalization getCode() { return code; } + @JsonProperty("code") + public void setCode(TumorSpecimenCollectionLocalization value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionMethod.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionMethod.java new file mode 100644 index 0000000..9a44fdd --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenCollectionMethod.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingTumorSpecimenCollectionMethod { + private TumorSpecimenCollectionMethod code; + private String display; + private String system; + + @JsonProperty("code") + public TumorSpecimenCollectionMethod getCode() { return code; } + @JsonProperty("code") + public void setCode(TumorSpecimenCollectionMethod value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenType.java new file mode 100644 index 0000000..ff9ef3d --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CodingTumorSpecimenType.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CodingTumorSpecimenType { + private TumorSpecimenType code; + private String display; + private String system; + + @JsonProperty("code") + public TumorSpecimenType getCode() { return code; } + @JsonProperty("code") + public void setCode(TumorSpecimenType value) { this.code = value; } + + @JsonProperty("display") + public String getDisplay() { return display; } + @JsonProperty("display") + public void setDisplay(String value) { this.display = value; } + + @JsonProperty("system") + public String getSystem() { return system; } + @JsonProperty("system") + public void setSystem(String value) { this.system = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Collection.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Collection.java new file mode 100644 index 0000000..c45b7cb --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Collection.java @@ -0,0 +1,27 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class Collection { + private Date date; + private CodingTumorSpecimenCollectionLocalization localization; + private CodingTumorSpecimenCollectionMethod method; + + @JsonProperty("date") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getDate() { return date; } + @JsonProperty("date") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setDate(Date value) { this.date = value; } + + @JsonProperty("localization") + public CodingTumorSpecimenCollectionLocalization getLocalization() { return localization; } + @JsonProperty("localization") + public void setLocalization(CodingTumorSpecimenCollectionLocalization value) { this.localization = value; } + + @JsonProperty("method") + public CodingTumorSpecimenCollectionMethod getMethod() { return method; } + @JsonProperty("method") + public void setMethod(CodingTumorSpecimenCollectionMethod value) { this.method = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Consent.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Consent.java new file mode 100644 index 0000000..3aba7d1 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Consent.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Consent { + private String id; + private Patient patient; + private ConsentStatus status; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("status") + public ConsentStatus getStatus() { return status; } + @JsonProperty("status") + public void setStatus(ConsentStatus value) { this.status = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ConsentStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ConsentStatus.java new file mode 100644 index 0000000..f2894fc --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ConsentStatus.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum ConsentStatus { + ACTIVE, REJECTED; + + @JsonValue + public String toValue() { + switch (this) { + case ACTIVE: return "active"; + case REJECTED: return "rejected"; + } + return null; + } + + @JsonCreator + public static ConsentStatus forValue(String value) throws IOException { + if (value.equals("active")) return ACTIVE; + if (value.equals("rejected")) return REJECTED; + throw new IOException("Cannot deserialize ConsentStatus"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Converter.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Converter.java new file mode 100644 index 0000000..5260392 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Converter.java @@ -0,0 +1,107 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.module.SimpleModule; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class Converter { + // Date-time helpers + + private static final String[] DATE_TIME_FORMATS = { + "yyyy-MM-dd'T'HH:mm:ss.SX", + "yyyy-MM-dd'T'HH:mm:ss.S", + "yyyy-MM-dd'T'HH:mm:ssX", + "yyyy-MM-dd'T'HH:mm:ss", + "yyyy-MM-dd HH:mm:ss.SX", + "yyyy-MM-dd HH:mm:ss.S", + "yyyy-MM-dd HH:mm:ssX", + "yyyy-MM-dd HH:mm:ss", + "HH:mm:ss.SZ", + "HH:mm:ss.S", + "HH:mm:ssZ", + "HH:mm:ss", + "yyyy-MM-dd", + }; + + public static Date parseAllDateTimeString(String str) { + for (String format : DATE_TIME_FORMATS) { + try { + return new SimpleDateFormat(format).parse(str); + } catch (Exception ex) { + // Ignored + } + } + return null; + } + + public static String serializeDateTime(Date datetime) { + return new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ").format(datetime); + } + + public static String serializeDate(Date datetime) { + return new SimpleDateFormat("yyyy-MM-dd").format(datetime); + } + + public static String serializeTime(Date datetime) { + return new SimpleDateFormat("hh:mm:ssZ").format(datetime); + } + // Serialize/deserialize helpers + + public static Mtb fromJsonString(String json) throws IOException { + return getObjectReader().readValue(json); + } + + public static String toJsonString(Mtb obj) throws JsonProcessingException { + return getObjectWriter().writeValueAsString(obj); + } + + private static ObjectReader reader; + private static ObjectWriter writer; + + private static void instantiateMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.findAndRegisterModules(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); + SimpleModule module = new SimpleModule(); + module.addDeserializer(Date.class, new JsonDeserializer<>() { + @Override + public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + String value = jsonParser.getText(); + return Converter.parseAllDateTimeString(value); + } + }); + module.addDeserializer(Date.class, new JsonDeserializer<>() { + @Override + public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + String value = jsonParser.getText(); + return Converter.parseAllDateTimeString(value); + } + }); + module.addDeserializer(Date.class, new JsonDeserializer<>() { + @Override + public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + String value = jsonParser.getText(); + return Converter.parseAllDateTimeString(value); + } + }); + mapper.registerModule(module); + reader = mapper.readerFor(Mtb.class); + writer = mapper.writerFor(Mtb.class); + } + + private static ObjectReader getObjectReader() { + if (reader == null) instantiateMapper(); + return reader; + } + + private static ObjectWriter getObjectWriter() { + if (writer == null) instantiateMapper(); + return writer; + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/CopyNumberNeutralLoH.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/CopyNumberNeutralLoH.java new file mode 100644 index 0000000..88dd27b --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/CopyNumberNeutralLoH.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class CopyNumberNeutralLoH { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusion.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusion.java new file mode 100644 index 0000000..a4c5dbb --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusion.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class DnaFusion { + private DnaFusionFusionPartner3Prime fusionPartner3Prime; + private DnaFusionFusionPartner5Prime fusionPartner5Prime; + private String id; + private long reportedNumReads; + + @JsonProperty("fusionPartner3prime") + public DnaFusionFusionPartner3Prime getFusionPartner3Prime() { return fusionPartner3Prime; } + @JsonProperty("fusionPartner3prime") + public void setFusionPartner3Prime(DnaFusionFusionPartner3Prime value) { this.fusionPartner3Prime = value; } + + @JsonProperty("fusionPartner5prime") + public DnaFusionFusionPartner5Prime getFusionPartner5Prime() { return fusionPartner5Prime; } + @JsonProperty("fusionPartner5prime") + public void setFusionPartner5Prime(DnaFusionFusionPartner5Prime value) { this.fusionPartner5Prime = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("reportedNumReads") + public long getReportedNumReads() { return reportedNumReads; } + @JsonProperty("reportedNumReads") + public void setReportedNumReads(long value) { this.reportedNumReads = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner3Prime.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner3Prime.java new file mode 100644 index 0000000..71d65ab --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner3Prime.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class DnaFusionFusionPartner3Prime { + private Chromosome chromosome; + private PurpleGene gene; + private double position; + + @JsonProperty("chromosome") + public Chromosome getChromosome() { return chromosome; } + @JsonProperty("chromosome") + public void setChromosome(Chromosome value) { this.chromosome = value; } + + @JsonProperty("gene") + public PurpleGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(PurpleGene value) { this.gene = value; } + + @JsonProperty("position") + public double getPosition() { return position; } + @JsonProperty("position") + public void setPosition(double value) { this.position = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner5Prime.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner5Prime.java new file mode 100644 index 0000000..57fb8b5 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/DnaFusionFusionPartner5Prime.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class DnaFusionFusionPartner5Prime { + private Chromosome chromosome; + private FluffyGene gene; + private double position; + + @JsonProperty("chromosome") + public Chromosome getChromosome() { return chromosome; } + @JsonProperty("chromosome") + public void setChromosome(Chromosome value) { this.chromosome = value; } + + @JsonProperty("gene") + public FluffyGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(FluffyGene value) { this.gene = value; } + + @JsonProperty("position") + public double getPosition() { return position; } + @JsonProperty("position") + public void setPosition(double value) { this.position = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/EndRange.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/EndRange.java new file mode 100644 index 0000000..4b0ace1 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/EndRange.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class EndRange { + private Double end; + private double start; + + @JsonProperty("end") + public Double getEnd() { return end; } + @JsonProperty("end") + public void setEnd(Double value) { this.end = value; } + + @JsonProperty("start") + public double getStart() { return start; } + @JsonProperty("start") + public void setStart(double value) { this.start = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ExtId.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ExtId.java new file mode 100644 index 0000000..b8c5a7b --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ExtId.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class ExtId { + private SystemEnum system; + private String value; + + @JsonProperty("system") + public SystemEnum getSystem() { return system; } + @JsonProperty("system") + public void setSystem(SystemEnum value) { this.system = value; } + + @JsonProperty("value") + public String getValue() { return value; } + @JsonProperty("value") + public void setValue(String value) { this.value = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyCode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyCode.java new file mode 100644 index 0000000..09cade6 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyCode.java @@ -0,0 +1,43 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum FluffyCode { + CR, MR, NA, NYA, PD, PR, SD; + + @JsonValue + public String toValue() { + switch (this) { + case CR: return "CR"; + case MR: return "MR"; + case NA: return "NA"; + case NYA: return "NYA"; + case PD: return "PD"; + case PR: return "PR"; + case SD: return "SD"; + } + return null; + } + + @JsonCreator + public static FluffyCode forValue(String value) throws IOException { + switch (value) { + case "CR": + return CR; + case "MR": + return MR; + case "NA": + return NA; + case "NYA": + return NYA; + case "PD": + return PD; + case "PR": + return PR; + case "SD": + return SD; + } + throw new IOException("Cannot deserialize FluffyCode"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyGene.java new file mode 100644 index 0000000..d5435db --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/FluffyGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class FluffyGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Gender.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Gender.java new file mode 100644 index 0000000..aa8970f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Gender.java @@ -0,0 +1,34 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum Gender { + FEMALE, MALE, OTHER, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case FEMALE: return "female"; + case MALE: return "male"; + case OTHER: return "other"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static Gender forValue(String value) throws IOException { + switch (value) { + case "female": + return FEMALE; + case "male": + return MALE; + case "other": + return OTHER; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize Gender"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/GeneticCounselingRecommendation.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/GeneticCounselingRecommendation.java new file mode 100644 index 0000000..eed3a2c --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/GeneticCounselingRecommendation.java @@ -0,0 +1,31 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class GeneticCounselingRecommendation { + private String id; + private Date issuedOn; + private Patient patient; + private String reason; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("reason") + public String getReason() { return reason; } + @JsonProperty("reason") + public void setReason(String value) { this.reason = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/GradingCode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/GradingCode.java new file mode 100644 index 0000000..4fd92f7 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/GradingCode.java @@ -0,0 +1,49 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum GradingCode { + M1_A, M1_B, M1_C, M2_A, M2_B, M2_C, M3, M4, UNDEFINED; + + @JsonValue + public String toValue() { + switch (this) { + case M1_A: return "m1A"; + case M1_B: return "m1B"; + case M1_C: return "m1C"; + case M2_A: return "m2A"; + case M2_B: return "m2B"; + case M2_C: return "m2C"; + case M3: return "m3"; + case M4: return "m4"; + case UNDEFINED: return "undefined"; + } + return null; + } + + @JsonCreator + public static GradingCode forValue(String value) throws IOException { + switch (value) { + case "m1A": + return M1_A; + case "m1B": + return M1_B; + case "m1C": + return M1_C; + case "m2A": + return M2_A; + case "m2B": + return M2_B; + case "m2C": + return M2_C; + case "m3": + return M3; + case "m4": + return M4; + case "undefined": + return UNDEFINED; + } + throw new IOException("Cannot deserialize GradingCode"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/GuidelineTreatmentStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/GuidelineTreatmentStatus.java new file mode 100644 index 0000000..5d64e0f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/GuidelineTreatmentStatus.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum GuidelineTreatmentStatus { + EXHAUSTED, IMPOSSIBLE, NON_EXHAUSTED, NO_GUIDELINES_AVAILABLE, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case EXHAUSTED: return "exhausted"; + case IMPOSSIBLE: return "impossible"; + case NON_EXHAUSTED: return "non-exhausted"; + case NO_GUIDELINES_AVAILABLE: return "no-guidelines-available"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static GuidelineTreatmentStatus forValue(String value) throws IOException { + switch (value) { + case "exhausted": + return EXHAUSTED; + case "impossible": + return IMPOSSIBLE; + case "non-exhausted": + return NON_EXHAUSTED; + case "no-guidelines-available": + return NO_GUIDELINES_AVAILABLE; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize GuidelineTreatmentStatus"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReport.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReport.java new file mode 100644 index 0000000..f58ee64 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReport.java @@ -0,0 +1,45 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class HistologyReport { + private String id; + private Date issuedOn; + private Patient patient; + private HistologyReportSpecimen specimen; + private TumorCellContent tumorCellContent; + private TumorMorphology tumorMorphology; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("specimen") + public HistologyReportSpecimen getSpecimen() { return specimen; } + @JsonProperty("specimen") + public void setSpecimen(HistologyReportSpecimen value) { this.specimen = value; } + + @JsonProperty("tumorCellContent") + public TumorCellContent getTumorCellContent() { return tumorCellContent; } + @JsonProperty("tumorCellContent") + public void setTumorCellContent(TumorCellContent value) { this.tumorCellContent = value; } + + @JsonProperty("tumorMorphology") + public TumorMorphology getTumorMorphology() { return tumorMorphology; } + @JsonProperty("tumorMorphology") + public void setTumorMorphology(TumorMorphology value) { this.tumorMorphology = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReportSpecimen.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReportSpecimen.java new file mode 100644 index 0000000..9f08941 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/HistologyReportSpecimen.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class HistologyReportSpecimen { + private String id; + private SpecimenType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public SpecimenType getType() { return type; } + @JsonProperty("type") + public void setType(SpecimenType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/LevelOfEvidence.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/LevelOfEvidence.java new file mode 100644 index 0000000..6e3e79f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/LevelOfEvidence.java @@ -0,0 +1,25 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.List; + +public class LevelOfEvidence { + private List addendums; + private CodingLevelOfEvidenceGrading grading; + private List publications; + + @JsonProperty("addendums") + public List getAddendums() { return addendums; } + @JsonProperty("addendums") + public void setAddendums(List value) { this.addendums = value; } + + @JsonProperty("grading") + public CodingLevelOfEvidenceGrading getGrading() { return grading; } + @JsonProperty("grading") + public void setGrading(CodingLevelOfEvidenceGrading value) { this.grading = value; } + + @JsonProperty("publications") + public List getPublications() { return publications; } + @JsonProperty("publications") + public void setPublications(List value) { this.publications = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Metadatum.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Metadatum.java new file mode 100644 index 0000000..010cf44 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Metadatum.java @@ -0,0 +1,36 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Metadatum { + private String kitManufacturer; + private String kitType; + private String pipeline; + private String referenceGenome; + private String sequencer; + + @JsonProperty("kitManufacturer") + public String getKitManufacturer() { return kitManufacturer; } + @JsonProperty("kitManufacturer") + public void setKitManufacturer(String value) { this.kitManufacturer = value; } + + @JsonProperty("kitType") + public String getKitType() { return kitType; } + @JsonProperty("kitType") + public void setKitType(String value) { this.kitType = value; } + + @JsonProperty("pipeline") + public String getPipeline() { return pipeline; } + @JsonProperty("pipeline") + public void setPipeline(String value) { this.pipeline = value; } + + @JsonProperty("referenceGenome") + public String getReferenceGenome() { return referenceGenome; } + @JsonProperty("referenceGenome") + public void setReferenceGenome(String value) { this.referenceGenome = value; } + + @JsonProperty("sequencer") + public String getSequencer() { return sequencer; } + @JsonProperty("sequencer") + public void setSequencer(String value) { this.sequencer = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MolecularTherapy.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MolecularTherapy.java new file mode 100644 index 0000000..b2f4967 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MolecularTherapy.java @@ -0,0 +1,13 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.List; + +public class MolecularTherapy { + private List history; + + @JsonProperty("history") + public List getHistory() { return history; } + @JsonProperty("history") + public void setHistory(List value) { this.history = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Mtb.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Mtb.java new file mode 100644 index 0000000..6ad6e93 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Mtb.java @@ -0,0 +1,115 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.List; + +public class Mtb { + private List carePlans; + private List claimResponses; + private List claims; + private Consent consent; + private List diagnoses; + private List ecogStatus; + private MtbEpisode episode; + private List geneticCounsellingRequests; + private List histologyReports; + private List lastGuidelineTherapies; + private List molecularTherapies; + private List ngsReports; + private MtbPatient patient; + private List previousGuidelineTherapies; + private List recommendations; + private List responses; + private List specimens; + private List studyInclusionRequests; + + @JsonProperty("carePlans") + public List getCarePlans() { return carePlans; } + @JsonProperty("carePlans") + public void setCarePlans(List value) { this.carePlans = value; } + + @JsonProperty("claimResponses") + public List getClaimResponses() { return claimResponses; } + @JsonProperty("claimResponses") + public void setClaimResponses(List value) { this.claimResponses = value; } + + @JsonProperty("claims") + public List getClaims() { return claims; } + @JsonProperty("claims") + public void setClaims(List value) { this.claims = value; } + + @JsonProperty("consent") + public Consent getConsent() { return consent; } + @JsonProperty("consent") + public void setConsent(Consent value) { this.consent = value; } + + @JsonProperty("diagnoses") + public List getDiagnoses() { return diagnoses; } + @JsonProperty("diagnoses") + public void setDiagnoses(List value) { this.diagnoses = value; } + + @JsonProperty("ecogStatus") + public List getEcogStatus() { return ecogStatus; } + @JsonProperty("ecogStatus") + public void setEcogStatus(List value) { this.ecogStatus = value; } + + @JsonProperty("episode") + public MtbEpisode getEpisode() { return episode; } + @JsonProperty("episode") + public void setEpisode(MtbEpisode value) { this.episode = value; } + + @JsonProperty("geneticCounsellingRequests") + public List getGeneticCounsellingRequests() { return geneticCounsellingRequests; } + @JsonProperty("geneticCounsellingRequests") + public void setGeneticCounsellingRequests(List value) { this.geneticCounsellingRequests = value; } + + @JsonProperty("histologyReports") + public List getHistologyReports() { return histologyReports; } + @JsonProperty("histologyReports") + public void setHistologyReports(List value) { this.histologyReports = value; } + + @JsonProperty("lastGuidelineTherapies") + public List getLastGuidelineTherapies() { return lastGuidelineTherapies; } + @JsonProperty("lastGuidelineTherapies") + public void setLastGuidelineTherapies(List value) { this.lastGuidelineTherapies = value; } + + @JsonProperty("molecularTherapies") + public List getMolecularTherapies() { return molecularTherapies; } + @JsonProperty("molecularTherapies") + public void setMolecularTherapies(List value) { this.molecularTherapies = value; } + + @JsonProperty("ngsReports") + public List getNgsReports() { return ngsReports; } + @JsonProperty("ngsReports") + public void setNgsReports(List value) { this.ngsReports = value; } + + @JsonProperty("patient") + public MtbPatient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(MtbPatient value) { this.patient = value; } + + @JsonProperty("previousGuidelineTherapies") + public List getPreviousGuidelineTherapies() { return previousGuidelineTherapies; } + @JsonProperty("previousGuidelineTherapies") + public void setPreviousGuidelineTherapies(List value) { this.previousGuidelineTherapies = value; } + + @JsonProperty("recommendations") + public List getRecommendations() { return recommendations; } + @JsonProperty("recommendations") + public void setRecommendations(List value) { this.recommendations = value; } + + @JsonProperty("responses") + public List getResponses() { return responses; } + @JsonProperty("responses") + public void setResponses(List value) { this.responses = value; } + + @JsonProperty("specimens") + public List getSpecimens() { return specimens; } + @JsonProperty("specimens") + public void setSpecimens(List value) { this.specimens = value; } + + @JsonProperty("studyInclusionRequests") + public List getStudyInclusionRequests() { return studyInclusionRequests; } + @JsonProperty("studyInclusionRequests") + public void setStudyInclusionRequests(List value) { this.studyInclusionRequests = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbCarePlan.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbCarePlan.java new file mode 100644 index 0000000..566de3e --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbCarePlan.java @@ -0,0 +1,62 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; +import java.util.List; + +public class MtbCarePlan { + private String description; + private String diagnosis; + private String geneticCounsellingRequest; + private String id; + private Date issuedOn; + private NoTargetFinding noTargetFinding; + private Patient patient; + private List recommendations; + private List studyInclusionRequests; + + @JsonProperty("description") + public String getDescription() { return description; } + @JsonProperty("description") + public void setDescription(String value) { this.description = value; } + + @JsonProperty("diagnosis") + public String getDiagnosis() { return diagnosis; } + @JsonProperty("diagnosis") + public void setDiagnosis(String value) { this.diagnosis = value; } + + @JsonProperty("geneticCounsellingRequest") + public String getGeneticCounsellingRequest() { return geneticCounsellingRequest; } + @JsonProperty("geneticCounsellingRequest") + public void setGeneticCounsellingRequest(String value) { this.geneticCounsellingRequest = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("noTargetFinding") + public NoTargetFinding getNoTargetFinding() { return noTargetFinding; } + @JsonProperty("noTargetFinding") + public void setNoTargetFinding(NoTargetFinding value) { this.noTargetFinding = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("recommendations") + public List getRecommendations() { return recommendations; } + @JsonProperty("recommendations") + public void setRecommendations(List value) { this.recommendations = value; } + + @JsonProperty("studyInclusionRequests") + public List getStudyInclusionRequests() { return studyInclusionRequests; } + @JsonProperty("studyInclusionRequests") + public void setStudyInclusionRequests(List value) { this.studyInclusionRequests = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosis.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosis.java new file mode 100644 index 0000000..5341a88 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosis.java @@ -0,0 +1,62 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; +import java.util.List; + +public class MtbDiagnosis { + private Coding code; + private Coding guidelineTreatmentStatus; + private List histologyResults; + private Coding icdO3T; + private String id; + private Patient patient; + private Date recordedOn; + private List statusHistory; + private Coding whoGrade; + + @JsonProperty("code") + public Coding getCode() { return code; } + @JsonProperty("code") + public void setCode(Coding value) { this.code = value; } + + @JsonProperty("guidelineTreatmentStatus") + public Coding getGuidelineTreatmentStatus() { return guidelineTreatmentStatus; } + @JsonProperty("guidelineTreatmentStatus") + public void setGuidelineTreatmentStatus(Coding value) { this.guidelineTreatmentStatus = value; } + + @JsonProperty("histologyResults") + public List getHistologyResults() { return histologyResults; } + @JsonProperty("histologyResults") + public void setHistologyResults(List value) { this.histologyResults = value; } + + @JsonProperty("icdO3T") + public Coding getIcdO3T() { return icdO3T; } + @JsonProperty("icdO3T") + public void setIcdO3T(Coding value) { this.icdO3T = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("recordedOn") + public Date getRecordedOn() { return recordedOn; } + @JsonProperty("recordedOn") + public void setRecordedOn(Date value) { this.recordedOn = value; } + + @JsonProperty("statusHistory") + public List getStatusHistory() { return statusHistory; } + @JsonProperty("statusHistory") + public void setStatusHistory(List value) { this.statusHistory = value; } + + @JsonProperty("whoGrade") + public Coding getWhoGrade() { return whoGrade; } + @JsonProperty("whoGrade") + public void setWhoGrade(Coding value) { this.whoGrade = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosisTumorSpread.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosisTumorSpread.java new file mode 100644 index 0000000..55b3211 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbDiagnosisTumorSpread.java @@ -0,0 +1,34 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum MtbDiagnosisTumorSpread { + LOCAL, METASTASIZED, TUMOR_FREE, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case LOCAL: return "local"; + case METASTASIZED: return "metastasized"; + case TUMOR_FREE: return "tumor-free"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static MtbDiagnosisTumorSpread forValue(String value) throws IOException { + switch (value) { + case "local": + return LOCAL; + case "metastasized": + return METASTASIZED; + case "tumor-free": + return TUMOR_FREE; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize MTBDiagnosisTumorSpread"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbEpisode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbEpisode.java new file mode 100644 index 0000000..7ed7705 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbEpisode.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class MtbEpisode { + private String id; + private Patient patient; + private PeriodLocalDate period; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("period") + public PeriodLocalDate getPeriod() { return period; } + @JsonProperty("period") + public void setPeriod(PeriodLocalDate value) { this.period = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationRecommendation.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationRecommendation.java new file mode 100644 index 0000000..b309aac --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationRecommendation.java @@ -0,0 +1,62 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; +import java.util.List; + +public class MtbMedicationRecommendation { + private String diagnosis; + private String id; + private Date issuedOn; + private LevelOfEvidence levelOfEvidence; + private List medication; + private String ngsReport; + private Patient patient; + private TherapyRecommendationPriority priority; + private List supportingVariants; + + @JsonProperty("diagnosis") + public String getDiagnosis() { return diagnosis; } + @JsonProperty("diagnosis") + public void setDiagnosis(String value) { this.diagnosis = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("levelOfEvidence") + public LevelOfEvidence getLevelOfEvidence() { return levelOfEvidence; } + @JsonProperty("levelOfEvidence") + public void setLevelOfEvidence(LevelOfEvidence value) { this.levelOfEvidence = value; } + + @JsonProperty("medication") + public List getMedication() { return medication; } + @JsonProperty("medication") + public void setMedication(List value) { this.medication = value; } + + @JsonProperty("ngsReport") + public String getNgsReport() { return ngsReport; } + @JsonProperty("ngsReport") + public void setNgsReport(String value) { this.ngsReport = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("priority") + public TherapyRecommendationPriority getPriority() { return priority; } + @JsonProperty("priority") + public void setPriority(TherapyRecommendationPriority value) { this.priority = value; } + + @JsonProperty("supportingVariants") + public List getSupportingVariants() { return supportingVariants; } + @JsonProperty("supportingVariants") + public void setSupportingVariants(List value) { this.supportingVariants = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationTherapy.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationTherapy.java new file mode 100644 index 0000000..e5ddf1d --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbMedicationTherapy.java @@ -0,0 +1,80 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; +import java.util.List; + +public class MtbMedicationTherapy { + private String basedOn; + private String diagnosis; + private String id; + private List medication; + private CodingTherapyStatusReason notDoneReason; + private String note; + private Patient patient; + private PeriodLocalDate period; + private CodingTherapyStatusReason reasonStopped; + private Date recordedOn; + private TherapyStatus status; + private Long therapyLine; + + @JsonProperty("basedOn") + public String getBasedOn() { return basedOn; } + @JsonProperty("basedOn") + public void setBasedOn(String value) { this.basedOn = value; } + + @JsonProperty("diagnosis") + public String getDiagnosis() { return diagnosis; } + @JsonProperty("diagnosis") + public void setDiagnosis(String value) { this.diagnosis = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("medication") + public List getMedication() { return medication; } + @JsonProperty("medication") + public void setMedication(List value) { this.medication = value; } + + @JsonProperty("notDoneReason") + public CodingTherapyStatusReason getNotDoneReason() { return notDoneReason; } + @JsonProperty("notDoneReason") + public void setNotDoneReason(CodingTherapyStatusReason value) { this.notDoneReason = value; } + + @JsonProperty("note") + public String getNote() { return note; } + @JsonProperty("note") + public void setNote(String value) { this.note = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("period") + public PeriodLocalDate getPeriod() { return period; } + @JsonProperty("period") + public void setPeriod(PeriodLocalDate value) { this.period = value; } + + @JsonProperty("reasonStopped") + public CodingTherapyStatusReason getReasonStopped() { return reasonStopped; } + @JsonProperty("reasonStopped") + public void setReasonStopped(CodingTherapyStatusReason value) { this.reasonStopped = value; } + + @JsonProperty("recordedOn") + public Date getRecordedOn() { return recordedOn; } + @JsonProperty("recordedOn") + public void setRecordedOn(Date value) { this.recordedOn = value; } + + @JsonProperty("status") + public TherapyStatus getStatus() { return status; } + @JsonProperty("status") + public void setStatus(TherapyStatus value) { this.status = value; } + + @JsonProperty("therapyLine") + public Long getTherapyLine() { return therapyLine; } + @JsonProperty("therapyLine") + public void setTherapyLine(Long value) { this.therapyLine = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbPatient.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbPatient.java new file mode 100644 index 0000000..2bf4c4a --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/MtbPatient.java @@ -0,0 +1,45 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class MtbPatient { + private Address address; + private Date birthDate; + private Date dateOfDeath; + private CodingGender gender; + private String id; + private String insurance; + + @JsonProperty("address") + public Address getAddress() { return address; } + @JsonProperty("address") + public void setAddress(Address value) { this.address = value; } + + @JsonProperty("birthDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getBirthDate() { return birthDate; } + @JsonProperty("birthDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setBirthDate(Date value) { this.birthDate = value; } + + @JsonProperty("dateOfDeath") + public Date getDateOfDeath() { return dateOfDeath; } + @JsonProperty("dateOfDeath") + public void setDateOfDeath(Date value) { this.dateOfDeath = value; } + + @JsonProperty("gender") + public CodingGender getGender() { return gender; } + @JsonProperty("gender") + public void setGender(CodingGender value) { this.gender = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("insurance") + public String getInsurance() { return insurance; } + @JsonProperty("insurance") + public void setInsurance(String value) { this.insurance = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/NgsReportSpecimen.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/NgsReportSpecimen.java new file mode 100644 index 0000000..efb64ce --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/NgsReportSpecimen.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class NgsReportSpecimen { + private String id; + private SpecimenType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public SpecimenType getType() { return type; } + @JsonProperty("type") + public void setType(SpecimenType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/NoTargetFinding.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/NoTargetFinding.java new file mode 100644 index 0000000..91eacd3 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/NoTargetFinding.java @@ -0,0 +1,25 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class NoTargetFinding { + private String diagnosis; + private Date issuedOn; + private Patient patient; + + @JsonProperty("diagnosis") + public String getDiagnosis() { return diagnosis; } + @JsonProperty("diagnosis") + public void setDiagnosis(String value) { this.diagnosis = value; } + + @JsonProperty("issuedOn") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/NotDoneReasonCode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/NotDoneReasonCode.java new file mode 100644 index 0000000..281c11d --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/NotDoneReasonCode.java @@ -0,0 +1,73 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum NotDoneReasonCode { + CHRONIC_REMISSION, CONTINUED_EXTERNALLY, DETERIORATION, LOST_TO_FU, MEDICAL_REASON, NO_INDICATION, OTHER, OTHER_THERAPY_CHOSEN, PATIENT_DEATH, PATIENT_REFUSAL, PATIENT_WISH, PAYMENT_ENDED, PAYMENT_PENDING, PAYMENT_REFUSED, PROGRESSION, TOXICITY, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case CHRONIC_REMISSION: return "chronic-remission"; + case CONTINUED_EXTERNALLY: return "continued-externally"; + case DETERIORATION: return "deterioration"; + case LOST_TO_FU: return "lost-to-fu"; + case MEDICAL_REASON: return "medical-reason"; + case NO_INDICATION: return "no-indication"; + case OTHER: return "other"; + case OTHER_THERAPY_CHOSEN: return "other-therapy-chosen"; + case PATIENT_DEATH: return "patient-death"; + case PATIENT_REFUSAL: return "patient-refusal"; + case PATIENT_WISH: return "patient-wish"; + case PAYMENT_ENDED: return "payment-ended"; + case PAYMENT_PENDING: return "payment-pending"; + case PAYMENT_REFUSED: return "payment-refused"; + case PROGRESSION: return "progression"; + case TOXICITY: return "toxicity"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static NotDoneReasonCode forValue(String value) throws IOException { + switch (value) { + case "chronic-remission": + return CHRONIC_REMISSION; + case "continued-externally": + return CONTINUED_EXTERNALLY; + case "deterioration": + return DETERIORATION; + case "lost-to-fu": + return LOST_TO_FU; + case "medical-reason": + return MEDICAL_REASON; + case "no-indication": + return NO_INDICATION; + case "other": + return OTHER; + case "other-therapy-chosen": + return OTHER_THERAPY_CHOSEN; + case "patient-death": + return PATIENT_DEATH; + case "patient-refusal": + return PATIENT_REFUSAL; + case "patient-wish": + return PATIENT_WISH; + case "payment-ended": + return PAYMENT_ENDED; + case "payment-pending": + return PAYMENT_PENDING; + case "payment-refused": + return PAYMENT_REFUSED; + case "progression": + return PROGRESSION; + case "toxicity": + return TOXICITY; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize NotDoneReasonCode"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Patient.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Patient.java new file mode 100644 index 0000000..2f6abcd --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Patient.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Patient { + private String id; + private PatientType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public PatientType getType() { return type; } + @JsonProperty("type") + public void setType(PatientType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/PatientType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/PatientType.java new file mode 100644 index 0000000..e992e68 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/PatientType.java @@ -0,0 +1,22 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum PatientType { + PATIENT; + + @JsonValue + public String toValue() { + switch (this) { + case PATIENT: return "Patient"; + } + return null; + } + + @JsonCreator + public static PatientType forValue(String value) throws IOException { + if (value.equals("Patient")) return PATIENT; + throw new IOException("Cannot deserialize PatientType"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/PerformanceStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/PerformanceStatus.java new file mode 100644 index 0000000..24d0e82 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/PerformanceStatus.java @@ -0,0 +1,33 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class PerformanceStatus { + private Date effectiveDate; + private String id; + private Patient patient; + private CodingEcog value; + + @JsonProperty("effectiveDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getEffectiveDate() { return effectiveDate; } + @JsonProperty("effectiveDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setEffectiveDate(Date value) { this.effectiveDate = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("value") + public CodingEcog getValue() { return value; } + @JsonProperty("value") + public void setValue(CodingEcog value) { this.value = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/PeriodLocalDate.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/PeriodLocalDate.java new file mode 100644 index 0000000..1175184 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/PeriodLocalDate.java @@ -0,0 +1,21 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class PeriodLocalDate { + private Date end; + private Date start; + + @JsonProperty("end") + public Date getEnd() { return end; } + @JsonProperty("end") + public void setEnd(Date value) { this.end = value; } + + @JsonProperty("start") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getStart() { return start; } + @JsonProperty("start") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setStart(Date value) { this.start = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleCode.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleCode.java new file mode 100644 index 0000000..be0790f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleCode.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum PurpleCode { + THE_0, THE_1, THE_2, THE_3, THE_4; + + @JsonValue + public String toValue() { + switch (this) { + case THE_0: return "0"; + case THE_1: return "1"; + case THE_2: return "2"; + case THE_3: return "3"; + case THE_4: return "4"; + } + return null; + } + + @JsonCreator + public static PurpleCode forValue(String value) throws IOException { + switch (value) { + case "0": + return THE_0; + case "1": + return THE_1; + case "2": + return THE_2; + case "3": + return THE_3; + case "4": + return THE_4; + } + throw new IOException("Cannot deserialize PurpleCode"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleGene.java new file mode 100644 index 0000000..1e2646f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/PurpleGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class PurpleGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RNAFusion.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RNAFusion.java new file mode 100644 index 0000000..7152835 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RNAFusion.java @@ -0,0 +1,42 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class RNAFusion { + private String cosmicId; + private String effect; + private RnaFusionFusionPartner3Prime fusionPartner3Prime; + private RnaFusionFusionPartner5Prime fusionPartner5Prime; + private String id; + private long reportedNumReads; + + @JsonProperty("cosmicId") + public String getCosmicId() { return cosmicId; } + @JsonProperty("cosmicId") + public void setCosmicId(String value) { this.cosmicId = value; } + + @JsonProperty("effect") + public String getEffect() { return effect; } + @JsonProperty("effect") + public void setEffect(String value) { this.effect = value; } + + @JsonProperty("fusionPartner3prime") + public RnaFusionFusionPartner3Prime getFusionPartner3Prime() { return fusionPartner3Prime; } + @JsonProperty("fusionPartner3prime") + public void setFusionPartner3Prime(RnaFusionFusionPartner3Prime value) { this.fusionPartner3Prime = value; } + + @JsonProperty("fusionPartner5prime") + public RnaFusionFusionPartner5Prime getFusionPartner5Prime() { return fusionPartner5Prime; } + @JsonProperty("fusionPartner5prime") + public void setFusionPartner5Prime(RnaFusionFusionPartner5Prime value) { this.fusionPartner5Prime = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("reportedNumReads") + public long getReportedNumReads() { return reportedNumReads; } + @JsonProperty("reportedNumReads") + public void setReportedNumReads(long value) { this.reportedNumReads = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ReferencePublication.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ReferencePublication.java new file mode 100644 index 0000000..4af27ae --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ReferencePublication.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class ReferencePublication { + private ExtId extId; + private String type; + private String uri; + + @JsonProperty("extId") + public ExtId getExtId() { return extId; } + @JsonProperty("extId") + public void setExtId(ExtId value) { this.extId = value; } + + @JsonProperty("type") + public String getType() { return type; } + @JsonProperty("type") + public void setType(String value) { this.type = value; } + + @JsonProperty("uri") + public String getUri() { return uri; } + @JsonProperty("uri") + public void setUri(String value) { this.uri = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ReportedAffectedGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ReportedAffectedGene.java new file mode 100644 index 0000000..1127c22 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ReportedAffectedGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class ReportedAffectedGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Response.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Response.java new file mode 100644 index 0000000..3cf56b3 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Response.java @@ -0,0 +1,39 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class Response { + private Date effectiveDate; + private String id; + private Patient patient; + private ResponseTherapy therapy; + private CodingRecist value; + + @JsonProperty("effectiveDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getEffectiveDate() { return effectiveDate; } + @JsonProperty("effectiveDate") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setEffectiveDate(Date value) { this.effectiveDate = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("therapy") + public ResponseTherapy getTherapy() { return therapy; } + @JsonProperty("therapy") + public void setTherapy(ResponseTherapy value) { this.therapy = value; } + + @JsonProperty("value") + public CodingRecist getValue() { return value; } + @JsonProperty("value") + public void setValue(CodingRecist value) { this.value = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapy.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapy.java new file mode 100644 index 0000000..a2a304b --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapy.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class ResponseTherapy { + private String id; + private ResponseTherapyType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public ResponseTherapyType getType() { return type; } + @JsonProperty("type") + public void setType(ResponseTherapyType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapyType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapyType.java new file mode 100644 index 0000000..bdfcd08 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/ResponseTherapyType.java @@ -0,0 +1,22 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum ResponseTherapyType { + MTB_MEDICATION_THERAPY; + + @JsonValue + public String toValue() { + switch (this) { + case MTB_MEDICATION_THERAPY: return "MTBMedicationTherapy"; + } + return null; + } + + @JsonCreator + public static ResponseTherapyType forValue(String value) throws IOException { + if (value.equals("MTBMedicationTherapy")) return MTB_MEDICATION_THERAPY; + throw new IOException("Cannot deserialize ResponseTherapyType"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner3Prime.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner3Prime.java new file mode 100644 index 0000000..6857753 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner3Prime.java @@ -0,0 +1,36 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class RnaFusionFusionPartner3Prime { + private String exon; + private TentacledGene gene; + private double position; + private RnaFusionStrand strand; + private String transcriptId; + + @JsonProperty("exon") + public String getExon() { return exon; } + @JsonProperty("exon") + public void setExon(String value) { this.exon = value; } + + @JsonProperty("gene") + public TentacledGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(TentacledGene value) { this.gene = value; } + + @JsonProperty("position") + public double getPosition() { return position; } + @JsonProperty("position") + public void setPosition(double value) { this.position = value; } + + @JsonProperty("strand") + public RnaFusionStrand getStrand() { return strand; } + @JsonProperty("strand") + public void setStrand(RnaFusionStrand value) { this.strand = value; } + + @JsonProperty("transcriptId") + public String getTranscriptId() { return transcriptId; } + @JsonProperty("transcriptId") + public void setTranscriptId(String value) { this.transcriptId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner5Prime.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner5Prime.java new file mode 100644 index 0000000..24541d3 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionFusionPartner5Prime.java @@ -0,0 +1,36 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class RnaFusionFusionPartner5Prime { + private String exon; + private StickyGene gene; + private double position; + private RnaFusionStrand strand; + private String transcriptId; + + @JsonProperty("exon") + public String getExon() { return exon; } + @JsonProperty("exon") + public void setExon(String value) { this.exon = value; } + + @JsonProperty("gene") + public StickyGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(StickyGene value) { this.gene = value; } + + @JsonProperty("position") + public double getPosition() { return position; } + @JsonProperty("position") + public void setPosition(double value) { this.position = value; } + + @JsonProperty("strand") + public RnaFusionStrand getStrand() { return strand; } + @JsonProperty("strand") + public void setStrand(RnaFusionStrand value) { this.strand = value; } + + @JsonProperty("transcriptId") + public String getTranscriptId() { return transcriptId; } + @JsonProperty("transcriptId") + public void setTranscriptId(String value) { this.transcriptId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionStrand.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionStrand.java new file mode 100644 index 0000000..237b6af --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaFusionStrand.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum RnaFusionStrand { + EMPTY, RNA_FUSION_STRAND; + + @JsonValue + public String toValue() { + switch (this) { + case EMPTY: return "+"; + case RNA_FUSION_STRAND: return "-"; + } + return null; + } + + @JsonCreator + public static RnaFusionStrand forValue(String value) throws IOException { + if (value.equals("+")) return EMPTY; + if (value.equals("-")) return RNA_FUSION_STRAND; + throw new IOException("Cannot deserialize RNAFusionStrand"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeq.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeq.java new file mode 100644 index 0000000..ed6c568 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeq.java @@ -0,0 +1,72 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class RnaSeq { + private Long cohortRanking; + private String ensemblId; + private String entrezId; + private double fragmentsPerKilobaseMillion; + private boolean fromNgs; + private RnaSeqGene gene; + private String id; + private long librarySize; + private long rawCounts; + private boolean tissueCorrectedExpression; + private String transcriptId; + + @JsonProperty("cohortRanking") + public Long getCohortRanking() { return cohortRanking; } + @JsonProperty("cohortRanking") + public void setCohortRanking(Long value) { this.cohortRanking = value; } + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("entrezId") + public String getEntrezId() { return entrezId; } + @JsonProperty("entrezId") + public void setEntrezId(String value) { this.entrezId = value; } + + @JsonProperty("fragmentsPerKilobaseMillion") + public double getFragmentsPerKilobaseMillion() { return fragmentsPerKilobaseMillion; } + @JsonProperty("fragmentsPerKilobaseMillion") + public void setFragmentsPerKilobaseMillion(double value) { this.fragmentsPerKilobaseMillion = value; } + + @JsonProperty("fromNGS") + public boolean getFromNgs() { return fromNgs; } + @JsonProperty("fromNGS") + public void setFromNgs(boolean value) { this.fromNgs = value; } + + @JsonProperty("gene") + public RnaSeqGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(RnaSeqGene value) { this.gene = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("librarySize") + public long getLibrarySize() { return librarySize; } + @JsonProperty("librarySize") + public void setLibrarySize(long value) { this.librarySize = value; } + + @JsonProperty("rawCounts") + public long getRawCounts() { return rawCounts; } + @JsonProperty("rawCounts") + public void setRawCounts(long value) { this.rawCounts = value; } + + @JsonProperty("tissueCorrectedExpression") + public boolean getTissueCorrectedExpression() { return tissueCorrectedExpression; } + @JsonProperty("tissueCorrectedExpression") + public void setTissueCorrectedExpression(boolean value) { this.tissueCorrectedExpression = value; } + + @JsonProperty("transcriptId") + public String getTranscriptId() { return transcriptId; } + @JsonProperty("transcriptId") + public void setTranscriptId(String value) { this.transcriptId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeqGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeqGene.java new file mode 100644 index 0000000..681e537 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/RnaSeqGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class RnaSeqGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/SimpleVariantGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/SimpleVariantGene.java new file mode 100644 index 0000000..7696ec8 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/SimpleVariantGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class SimpleVariantGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Snv.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Snv.java new file mode 100644 index 0000000..f03bb85 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Snv.java @@ -0,0 +1,84 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Snv { + private double allelicFrequency; + private String altAllele; + private Coding aminoAcidChange; + private Chromosome chromosome; + private String cosmicId; + private String dbSnpId; + private Coding dnaChange; + private SimpleVariantGene gene; + private String id; + private Coding interpretation; + private long readDepth; + private String refAllele; + private StartEnd startEnd; + + @JsonProperty("allelicFrequency") + public double getAllelicFrequency() { return allelicFrequency; } + @JsonProperty("allelicFrequency") + public void setAllelicFrequency(double value) { this.allelicFrequency = value; } + + @JsonProperty("altAllele") + public String getAltAllele() { return altAllele; } + @JsonProperty("altAllele") + public void setAltAllele(String value) { this.altAllele = value; } + + @JsonProperty("aminoAcidChange") + public Coding getAminoAcidChange() { return aminoAcidChange; } + @JsonProperty("aminoAcidChange") + public void setAminoAcidChange(Coding value) { this.aminoAcidChange = value; } + + @JsonProperty("chromosome") + public Chromosome getChromosome() { return chromosome; } + @JsonProperty("chromosome") + public void setChromosome(Chromosome value) { this.chromosome = value; } + + @JsonProperty("cosmicId") + public String getCosmicId() { return cosmicId; } + @JsonProperty("cosmicId") + public void setCosmicId(String value) { this.cosmicId = value; } + + @JsonProperty("dbSNPId") + public String getDbSnpId() { return dbSnpId; } + @JsonProperty("dbSNPId") + public void setDbSnpId(String value) { this.dbSnpId = value; } + + @JsonProperty("dnaChange") + public Coding getDnaChange() { return dnaChange; } + @JsonProperty("dnaChange") + public void setDnaChange(Coding value) { this.dnaChange = value; } + + @JsonProperty("gene") + public SimpleVariantGene getGene() { return gene; } + @JsonProperty("gene") + public void setGene(SimpleVariantGene value) { this.gene = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("interpretation") + public Coding getInterpretation() { return interpretation; } + @JsonProperty("interpretation") + public void setInterpretation(Coding value) { this.interpretation = value; } + + @JsonProperty("readDepth") + public long getReadDepth() { return readDepth; } + @JsonProperty("readDepth") + public void setReadDepth(long value) { this.readDepth = value; } + + @JsonProperty("refAllele") + public String getRefAllele() { return refAllele; } + @JsonProperty("refAllele") + public void setRefAllele(String value) { this.refAllele = value; } + + @JsonProperty("startEnd") + public StartEnd getStartEnd() { return startEnd; } + @JsonProperty("startEnd") + public void setStartEnd(StartEnd value) { this.startEnd = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/SomaticNgsReport.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/SomaticNgsReport.java new file mode 100644 index 0000000..fdd20f8 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/SomaticNgsReport.java @@ -0,0 +1,98 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; +import java.util.List; + +public class SomaticNgsReport { + private Double brcaness; + private List copyNumberVariants; + private List dnaFusions; + private String id; + private Date issueDate; + private List metadata; + private Double msi; + private Patient patient; + private List rnaFusions; + private List rnaSeqs; + private Coding sequencingType; + private List simpleVariants; + private NgsReportSpecimen specimen; + private Double tmb; + private TumorCellContent tumorCellContent; + + @JsonProperty("brcaness") + public Double getBrcaness() { return brcaness; } + @JsonProperty("brcaness") + public void setBrcaness(Double value) { this.brcaness = value; } + + @JsonProperty("copyNumberVariants") + public List getCopyNumberVariants() { return copyNumberVariants; } + @JsonProperty("copyNumberVariants") + public void setCopyNumberVariants(List value) { this.copyNumberVariants = value; } + + @JsonProperty("dnaFusions") + public List getDnaFusions() { return dnaFusions; } + @JsonProperty("dnaFusions") + public void setDnaFusions(List value) { this.dnaFusions = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issueDate") + public Date getIssueDate() { return issueDate; } + @JsonProperty("issueDate") + public void setIssueDate(Date value) { this.issueDate = value; } + + @JsonProperty("metadata") + public List getMetadata() { return metadata; } + @JsonProperty("metadata") + public void setMetadata(List value) { this.metadata = value; } + + @JsonProperty("msi") + public Double getMsi() { return msi; } + @JsonProperty("msi") + public void setMsi(Double value) { this.msi = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("rnaFusions") + public List getRnaFusions() { return rnaFusions; } + @JsonProperty("rnaFusions") + public void setRnaFusions(List value) { this.rnaFusions = value; } + + @JsonProperty("rnaSeqs") + public List getRnaSeqs() { return rnaSeqs; } + @JsonProperty("rnaSeqs") + public void setRnaSeqs(List value) { this.rnaSeqs = value; } + + @JsonProperty("sequencingType") + public Coding getSequencingType() { return sequencingType; } + @JsonProperty("sequencingType") + public void setSequencingType(Coding value) { this.sequencingType = value; } + + @JsonProperty("simpleVariants") + public List getSimpleVariants() { return simpleVariants; } + @JsonProperty("simpleVariants") + public void setSimpleVariants(List value) { this.simpleVariants = value; } + + @JsonProperty("specimen") + public NgsReportSpecimen getSpecimen() { return specimen; } + @JsonProperty("specimen") + public void setSpecimen(NgsReportSpecimen value) { this.specimen = value; } + + @JsonProperty("tmb") + public Double getTmb() { return tmb; } + @JsonProperty("tmb") + public void setTmb(Double value) { this.tmb = value; } + + @JsonProperty("tumorCellContent") + public TumorCellContent getTumorCellContent() { return tumorCellContent; } + @JsonProperty("tumorCellContent") + public void setTumorCellContent(TumorCellContent value) { this.tumorCellContent = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/Specimen.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/Specimen.java new file mode 100644 index 0000000..ce66fde --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/Specimen.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class Specimen { + private String id; + private SpecimenType type; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("type") + public SpecimenType getType() { return type; } + @JsonProperty("type") + public void setType(SpecimenType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/SpecimenType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/SpecimenType.java new file mode 100644 index 0000000..7d3fb74 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/SpecimenType.java @@ -0,0 +1,22 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum SpecimenType { + TUMOR_SPECIMEN; + + @JsonValue + public String toValue() { + switch (this) { + case TUMOR_SPECIMEN: return "TumorSpecimen"; + } + return null; + } + + @JsonCreator + public static SpecimenType forValue(String value) throws IOException { + if (value.equals("TumorSpecimen")) return TUMOR_SPECIMEN; + throw new IOException("Cannot deserialize SpecimenType"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/StartEnd.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/StartEnd.java new file mode 100644 index 0000000..7109491 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/StartEnd.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class StartEnd { + private Double end; + private double start; + + @JsonProperty("end") + public Double getEnd() { return end; } + @JsonProperty("end") + public void setEnd(Double value) { this.end = value; } + + @JsonProperty("start") + public double getStart() { return start; } + @JsonProperty("start") + public void setStart(double value) { this.start = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/StartRange.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/StartRange.java new file mode 100644 index 0000000..6c4efd9 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/StartRange.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class StartRange { + private Double end; + private double start; + + @JsonProperty("end") + public Double getEnd() { return end; } + @JsonProperty("end") + public void setEnd(Double value) { this.end = value; } + + @JsonProperty("start") + public double getStart() { return start; } + @JsonProperty("start") + public void setStart(double value) { this.start = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/StatusHistory.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/StatusHistory.java new file mode 100644 index 0000000..cc97faa --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/StatusHistory.java @@ -0,0 +1,21 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class StatusHistory { + private Date date; + private MtbDiagnosisTumorSpread status; + + @JsonProperty("date") + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getDate() { return date; } + @JsonProperty("date") + @JsonFormat(pattern = "yyyy-MM-dd") + public void setDate(Date value) { this.date = value; } + + @JsonProperty("status") + public MtbDiagnosisTumorSpread getStatus() { return status; } + @JsonProperty("status") + public void setStatus(MtbDiagnosisTumorSpread value) { this.status = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/StickyGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/StickyGene.java new file mode 100644 index 0000000..bafb125 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/StickyGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class StickyGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/StudyEnrollmentRecommendation.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/StudyEnrollmentRecommendation.java new file mode 100644 index 0000000..a854c28 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/StudyEnrollmentRecommendation.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; +import java.util.Date; + +public class StudyEnrollmentRecommendation { + private String id; + private Date issuedOn; + private String nctNumber; + private Patient patient; + private String reason; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("issuedOn") + public Date getIssuedOn() { return issuedOn; } + @JsonProperty("issuedOn") + public void setIssuedOn(Date value) { this.issuedOn = value; } + + @JsonProperty("nctNumber") + public String getNctNumber() { return nctNumber; } + @JsonProperty("nctNumber") + public void setNctNumber(String value) { this.nctNumber = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("reason") + public String getReason() { return reason; } + @JsonProperty("reason") + public void setReason(String value) { this.reason = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/SystemEnum.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/SystemEnum.java new file mode 100644 index 0000000..d81a6d9 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/SystemEnum.java @@ -0,0 +1,22 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum SystemEnum { + HTTPS_PUBMED_NCBI_NLM_NIH_GOV; + + @JsonValue + public String toValue() { + switch (this) { + case HTTPS_PUBMED_NCBI_NLM_NIH_GOV: return "https://pubmed.ncbi.nlm.nih.gov/"; + } + return null; + } + + @JsonCreator + public static SystemEnum forValue(String value) throws IOException { + if (value.equals("https://pubmed.ncbi.nlm.nih.gov/")) return HTTPS_PUBMED_NCBI_NLM_NIH_GOV; + throw new IOException("Cannot deserialize SystemEnum"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TentacledGene.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TentacledGene.java new file mode 100644 index 0000000..254ed42 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TentacledGene.java @@ -0,0 +1,18 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class TentacledGene { + private String ensemblId; + private String hgncId; + + @JsonProperty("ensemblId") + public String getEnsemblId() { return ensemblId; } + @JsonProperty("ensemblId") + public void setEnsemblId(String value) { this.ensemblId = value; } + + @JsonProperty("hgncId") + public String getHgncId() { return hgncId; } + @JsonProperty("hgncId") + public void setHgncId(String value) { this.hgncId = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyRecommendationPriority.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyRecommendationPriority.java new file mode 100644 index 0000000..88eee99 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyRecommendationPriority.java @@ -0,0 +1,34 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TherapyRecommendationPriority { + PRIORITY_1, PRIORITY_2, PRIORITY_3, PRIORITY_4; + + @JsonValue + public String toValue() { + switch (this) { + case PRIORITY_1: return "1"; + case PRIORITY_2: return "2"; + case PRIORITY_3: return "3"; + case PRIORITY_4: return "4"; + } + return null; + } + + @JsonCreator + public static TherapyRecommendationPriority forValue(String value) throws IOException { + switch (value) { + case "1": + return PRIORITY_1; + case "2": + return PRIORITY_2; + case "3": + return PRIORITY_3; + case "4": + return PRIORITY_4; + } + throw new IOException("Cannot deserialize TherapyRecommendationPriority"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyStatus.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyStatus.java new file mode 100644 index 0000000..9379f04 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TherapyStatus.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TherapyStatus { + COMPLETED, NOT_DONE, ON_GOING, STOPPED, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case COMPLETED: return "completed"; + case NOT_DONE: return "not-done"; + case ON_GOING: return "on-going"; + case STOPPED: return "stopped"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static TherapyStatus forValue(String value) throws IOException { + switch (value) { + case "completed": + return COMPLETED; + case "not-done": + return NOT_DONE; + case "on-going": + return ON_GOING; + case "stopped": + return STOPPED; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize TherapyStatus"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContent.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContent.java new file mode 100644 index 0000000..f23fe52 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContent.java @@ -0,0 +1,30 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class TumorCellContent { + private String id; + private TumorCellContentMethod method; + private String specimen; + private double value; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("method") + public TumorCellContentMethod getMethod() { return method; } + @JsonProperty("method") + public void setMethod(TumorCellContentMethod value) { this.method = value; } + + @JsonProperty("specimen") + public String getSpecimen() { return specimen; } + @JsonProperty("specimen") + public void setSpecimen(String value) { this.specimen = value; } + + @JsonProperty("value") + public double getValue() { return value; } + @JsonProperty("value") + public void setValue(double value) { this.value = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContentMethod.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContentMethod.java new file mode 100644 index 0000000..f3f2a06 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorCellContentMethod.java @@ -0,0 +1,24 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TumorCellContentMethod { + BIOINFORMATIC, HISTOLOGIC; + + @JsonValue + public String toValue() { + switch (this) { + case BIOINFORMATIC: return "bioinformatic"; + case HISTOLOGIC: return "histologic"; + } + return null; + } + + @JsonCreator + public static TumorCellContentMethod forValue(String value) throws IOException { + if (value.equals("bioinformatic")) return BIOINFORMATIC; + if (value.equals("histologic")) return HISTOLOGIC; + throw new IOException("Cannot deserialize TumorCellContentMethod"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorMorphology.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorMorphology.java new file mode 100644 index 0000000..cff772c --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorMorphology.java @@ -0,0 +1,36 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class TumorMorphology { + private String id; + private String note; + private Patient patient; + private String specimen; + private Coding value; + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("note") + public String getNote() { return note; } + @JsonProperty("note") + public void setNote(String value) { this.note = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("specimen") + public String getSpecimen() { return specimen; } + @JsonProperty("specimen") + public void setSpecimen(String value) { this.specimen = value; } + + @JsonProperty("value") + public Coding getValue() { return value; } + @JsonProperty("value") + public void setValue(Coding value) { this.value = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimen.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimen.java new file mode 100644 index 0000000..3dce7db --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimen.java @@ -0,0 +1,36 @@ +package dev.pcvolkmer.mv64e.mtb; + +import com.fasterxml.jackson.annotation.*; + +public class TumorSpecimen { + private Collection collection; + private Coding icd10; + private String id; + private Patient patient; + private CodingTumorSpecimenType type; + + @JsonProperty("collection") + public Collection getCollection() { return collection; } + @JsonProperty("collection") + public void setCollection(Collection value) { this.collection = value; } + + @JsonProperty("icd10") + public Coding getIcd10() { return icd10; } + @JsonProperty("icd10") + public void setIcd10(Coding value) { this.icd10 = value; } + + @JsonProperty("id") + public String getId() { return id; } + @JsonProperty("id") + public void setId(String value) { this.id = value; } + + @JsonProperty("patient") + public Patient getPatient() { return patient; } + @JsonProperty("patient") + public void setPatient(Patient value) { this.patient = value; } + + @JsonProperty("type") + public CodingTumorSpecimenType getType() { return type; } + @JsonProperty("type") + public void setType(CodingTumorSpecimenType value) { this.type = value; } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionLocalization.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionLocalization.java new file mode 100644 index 0000000..2843b9c --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionLocalization.java @@ -0,0 +1,31 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TumorSpecimenCollectionLocalization { + METASTASIS, PRIMARY_TUMOR, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case METASTASIS: return "metastasis"; + case PRIMARY_TUMOR: return "primary-tumor"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static TumorSpecimenCollectionLocalization forValue(String value) throws IOException { + switch (value) { + case "metastasis": + return METASTASIS; + case "primary-tumor": + return PRIMARY_TUMOR; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize TumorSpecimenCollectionLocalization"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionMethod.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionMethod.java new file mode 100644 index 0000000..36ec4c9 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenCollectionMethod.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TumorSpecimenCollectionMethod { + BIOPSY, CYTOLOGY, LIQUID_BIOPSY, RESECTION, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case BIOPSY: return "biopsy"; + case CYTOLOGY: return "cytology"; + case LIQUID_BIOPSY: return "liquid-biopsy"; + case RESECTION: return "resection"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static TumorSpecimenCollectionMethod forValue(String value) throws IOException { + switch (value) { + case "biopsy": + return BIOPSY; + case "cytology": + return CYTOLOGY; + case "liquid-biopsy": + return LIQUID_BIOPSY; + case "resection": + return RESECTION; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize TumorSpecimenCollectionMethod"); + } +} diff --git a/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenType.java b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenType.java new file mode 100644 index 0000000..9c9b448 --- /dev/null +++ b/src/main/java/dev/pcvolkmer/mv64e/mtb/TumorSpecimenType.java @@ -0,0 +1,37 @@ +package dev.pcvolkmer.mv64e.mtb; + +import java.io.IOException; +import com.fasterxml.jackson.annotation.*; + +public enum TumorSpecimenType { + CRYO_FROZEN, FFPE, FRESH_TISSUE, LIQUID_BIOPSY, UNKNOWN; + + @JsonValue + public String toValue() { + switch (this) { + case CRYO_FROZEN: return "cryo-frozen"; + case FFPE: return "FFPE"; + case FRESH_TISSUE: return "fresh-tissue"; + case LIQUID_BIOPSY: return "liquid-biopsy"; + case UNKNOWN: return "unknown"; + } + return null; + } + + @JsonCreator + public static TumorSpecimenType forValue(String value) throws IOException { + switch (value) { + case "cryo-frozen": + return CRYO_FROZEN; + case "FFPE": + return FFPE; + case "fresh-tissue": + return FRESH_TISSUE; + case "liquid-biopsy": + return LIQUID_BIOPSY; + case "unknown": + return UNKNOWN; + } + throw new IOException("Cannot deserialize TumorSpecimenType"); + } +} diff --git a/src/test/java/dev/pcvolkmer/mv64e/mtb/ConverterTest.java b/src/test/java/dev/pcvolkmer/mv64e/mtb/ConverterTest.java new file mode 100644 index 0000000..efbc36e --- /dev/null +++ b/src/test/java/dev/pcvolkmer/mv64e/mtb/ConverterTest.java @@ -0,0 +1,16 @@ +package dev.pcvolkmer.mv64e.mtb; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +public class ConverterTest { + + @Test + void shouldDeserializeJsonString() throws IOException { + var ressource = getClass().getClassLoader().getResource("mv64e-mtb-fake-patient.json"); + + Converter.fromJsonString(new String(ressource.openStream().readAllBytes())); + } + +} diff --git a/src/test/resources/mv64e-mtb-fake-patient.json b/src/test/resources/mv64e-mtb-fake-patient.json new file mode 100644 index 0000000..ebe4439 --- /dev/null +++ b/src/test/resources/mv64e-mtb-fake-patient.json @@ -0,0 +1 @@ +{"patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","gender":{"code":"male","display":"Männlich","system":"Gender"},"birthDate":"1977-03-15","dateOfDeath":"2008-03-15","healthInsurance":{"extId":{"value":"aok-ik","system":"IK"},"display":"AOK","type":"Organization"},"age":{"value":31,"unit":"Years"},"vitalStatus":{"code":"deceased","display":"Verstorben","system":"dnpm-dip/patient/vital-status"}},"consent":{},"episodesOfCare":[{"id":"d0634bb6-83d9-4c19-beb5-206bddd7513a","transferTan":"cda64713-7b31-402e-89f9-8fa8f9809507","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"period":{"start":"2024-01-09"},"diagnoses":[{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","type":"MTBDiagnosis"}]}],"diagnoses":[{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"recordedOn":"2004-05-15","code":{"code":"C76.7","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","system":"http://fhir.de/CodeSystem/bfarm/icd-10-gm","version":"2024"},"topography":{"code":"C76.7","display":"Sonstiger mangelhaft bezeichneter Sitz","system":"urn:oid:2.16.840.1.113883.6.43.1","version":"Zweite Revision"},"tumorGrade":{"code":"G2","display":"G2 – mäßig differenziert","system":"dnpm-dip/mtb/tumor-grade"},"whoGrading":{"code":"2","display":"Diffuse astrocytoma","system":"dnpm-dip/mtb/who-grading-cns-tumors","version":"2021"},"stageHistory":[{"stage":{"code":"local","display":"Lokal","system":"dnpm-dip/mtb/diagnosis/tumor-spread"},"date":"2024-07-09"}],"guidelineTreatmentStatus":{"code":"impossible","display":"Leitlinientherapie nicht möglich","system":"dnpm-dip/diagnosis/guideline-therapy/status"}}],"guidelineTherapies":[{"id":"386ba653-0b20-4801-9eb0-f937ed8a54e9","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"therapyLine":3,"recordedOn":"2024-07-09","status":{"code":"stopped","display":"Abgebrochen","system":"dnpm-dip/therapy/status"},"statusReason":{"code":"progression","display":"Progression","system":"dnpm-dip/therapy/status-reason"},"period":{"start":"2022-08-09","end":"2023-02-14"},"medication":[{"code":"L01FX12","display":"Tafasitamab","system":"http://fhir.de/CodeSystem/bfarm/atc","version":"2024"}],"notes":"Notes on the therapy..."},{"id":"f3a7e152-0f86-4646-b671-29f083019783","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"therapyLine":6,"recordedOn":"2024-07-09","status":{"code":"stopped","display":"Abgebrochen","system":"dnpm-dip/therapy/status"},"statusReason":{"code":"progression","display":"Progression","system":"dnpm-dip/therapy/status-reason"},"period":{"start":"2023-02-09","end":"2023-08-10"},"medication":[{"code":"L01FX28","display":"Glofitamab","system":"http://fhir.de/CodeSystem/bfarm/atc","version":"2024"}],"notes":"Notes on the therapy..."}],"guidelineProcedures":[{"id":"43f81705-9e17-41d3-ae05-06958dd33d37","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"code":{"code":"radio-therapy","display":"Strahlen-Therapie","system":"dnpm-dip/mtb/procedure/type"},"status":{"code":"completed","display":"Abgeschlossen","system":"dnpm-dip/therapy/status"},"statusReason":{"code":"progression","display":"Progression","system":"dnpm-dip/therapy/status-reason"},"therapyLine":8,"recordedOn":"2024-07-09","period":{"start":"2024-01-09"},"notes":"Notes on the therapy..."},{"id":"89594d3d-0708-4620-8803-fa5de0e64a9d","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"code":{"code":"surgery","display":"OP","system":"dnpm-dip/mtb/procedure/type"},"status":{"code":"on-going","display":"Laufend","system":"dnpm-dip/therapy/status"},"statusReason":{"code":"continued-externally","display":"Weiterbehandlung extern","system":"dnpm-dip/therapy/status-reason"},"therapyLine":8,"recordedOn":"2024-07-09","period":{"start":"2024-01-09"},"notes":"Notes on the therapy..."}],"performanceStatus":[{"id":"99f246e6-fb8c-40c4-880c-1e2e5658cbf6","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"effectiveDate":"2024-07-09","value":{"code":"3","display":"ECOG 3","system":"ECOG-Performance-Status"}}],"specimens":[{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"diagnosis":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","type":"MTBDiagnosis"},"type":{"code":"fresh-tissue","display":"Frischgewebe","system":"dnpm-dip/mtb/tumor-specimen/type"},"collection":{"date":"2024-07-09","method":{"code":"liquid-biopsy","display":"Liquid Biopsy","system":"dnpm-dip/mtb/tumor-specimen/collection/method"},"localization":{"code":"metastasis","display":"Metastase","system":"dnpm-dip/mtb/tumor-specimen/collection/localization"}}}],"histologyReports":[{"id":"ac78c911-238b-46e5-9bd5-36304e70174a","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"issuedOn":"2024-07-09","results":{"tumorMorphology":{"id":"dc18063a-89b9-4eca-a485-557368450cf7","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"value":{"code":"8201/2","display":"Kribriformes Carcinoma in situ [C50.-]","system":"urn:oid:2.16.840.1.113883.6.43.1","version":"Zweite Revision"},"notes":"Notes..."},"tumorCellContent":{"id":"cc19e1bb-178b-4264-9afd-0ba62c35d95f","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"method":{"code":"histologic","display":"Histologisch","system":"dnpm-dip/mtb/tumor-cell-content/method"},"value":0.6964126464218567}}}],"ihcReports":[{"id":"2c97573a-f4dd-4c75-a630-7422cbe888f3","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"date":"2024-07-09","journalId":{"value":"de45bb4c-ef64-4028-a55e-8a3d73842e6d"},"blockId":{"value":"93a9a7d9-54b8-4182-9da9-320f1a7fae02"},"proteinExpressionResults":[{"id":"60b82433-c0a6-4d0f-85e9-40f63b28ca22","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"protein":{"code":"HGNC:11998","display":"TP53","system":"https://www.genenames.org/"},"value":{"code":"3+","display":"3+","system":"dnpm-dip/mtb/ihc/protein-expression/result"},"tpsScore":27,"icScore":{"code":"0","display":"< 1%","system":"dnpm-dip/mtb/ihc/protein-expression/ic-score"},"tcScore":{"code":"2","display":">= 5%","system":"dnpm-dip/mtb/ihc/protein-expression/tc-score"}},{"id":"ecfab030-b3e4-4c33-a50b-e8933c9b3593","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"protein":{"code":"HGNC:1097","display":"BRAF","system":"https://www.genenames.org/"},"value":{"code":"not-exp","display":"Nicht exprimiert","system":"dnpm-dip/mtb/ihc/protein-expression/result"},"tpsScore":87,"icScore":{"code":"2","display":">= 5%","system":"dnpm-dip/mtb/ihc/protein-expression/ic-score"},"tcScore":{"code":"1","display":">= 1%","system":"dnpm-dip/mtb/ihc/protein-expression/tc-score"}},{"id":"3eab7c68-bf01-462a-8c55-7306c4ce8ea6","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"protein":{"code":"HGNC:11998","display":"TP53","system":"https://www.genenames.org/"},"value":{"code":"3+","display":"3+","system":"dnpm-dip/mtb/ihc/protein-expression/result"},"tpsScore":88,"icScore":{"code":"2","display":">= 5%","system":"dnpm-dip/mtb/ihc/protein-expression/ic-score"},"tcScore":{"code":"4","display":">= 25%","system":"dnpm-dip/mtb/ihc/protein-expression/tc-score"}},{"id":"b0bb41e1-27a6-48c2-ae16-b3a40c463e68","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"protein":{"code":"HGNC:5173","display":"HRAS","system":"https://www.genenames.org/"},"value":{"code":"1+","display":"1+","system":"dnpm-dip/mtb/ihc/protein-expression/result"},"tpsScore":60,"icScore":{"code":"0","display":"< 1%","system":"dnpm-dip/mtb/ihc/protein-expression/ic-score"},"tcScore":{"code":"2","display":">= 5%","system":"dnpm-dip/mtb/ihc/protein-expression/tc-score"}}],"msiMmrResults":[]}],"ngsReports":[{"id":"4cbfc863-1977-4293-8141-96a4ef411fe9","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"issuedOn":"2024-07-09","sequencingType":{"code":"exome","display":"Exome","system":"dnpm-dip/ngs/sequencing-type"},"metadata":[{"kitType":"Kit Type","kitManufacturer":"Manufacturer","sequencer":"Sequencer","referenceGenome":"HG19","pipeline":"https://github.com/pipeline-project"}],"results":{"tumorCellContent":{"id":"0aaa088d-da71-498b-8f5b-67851642fc3b","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"method":{"code":"bioinformatic","display":"Bioinformatisch","system":"dnpm-dip/mtb/tumor-cell-content/method"},"value":0.8488462340782923},"tmb":{"id":"32008349-cf95-47a0-b5fe-0a692e96184f","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"value":{"value":298193,"unit":"Mutations per megabase"},"interpretation":{"code":"low","display":"Niedrig","system":"dnpm-dip/mtb/ngs/tmb/interpretation"}},"brcaness":{"id":"6fec2a4c-d354-441d-8bd1-51ceb0094abc","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"value":0.5,"confidenceRange":{"min":0.4,"max":0.6}},"hrdScore":{"id":"43a0f938-cb49-4f09-988e-4d7bdcafcd00","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"specimen":{"id":"5760dfb4-9012-454c-b315-5deafe999c8f","type":"TumorSpecimen"},"value":0.06698695819348954,"components":{"lst":0.3949619863732128,"loh":0.8542926541406639,"tai":0.5884686564371258},"interpretation":{"code":"low","display":"Niedrig","system":"dnpm-dip/mtb/ngs/hrd-score/interpretation"}},"simpleVariants":[{"id":"ab846e35-c4c1-4ead-a7ba-f070b03c155e","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"externalIds":[{"value":"70f5a7bb-9b7f-48ac-a236-fb7968a68f7d","system":"https://www.ncbi.nlm.nih.gov/snp/"},{"value":"afe100b1-375b-471c-ba0d-d11c578764e9","system":"https://cancer.sanger.ac.uk/cosmic"}],"chromosome":{"code":"chr2","display":"chr2","system":"chromosome"},"gene":{"code":"HGNC:6407","display":"KRAS","system":"https://www.genenames.org/"},"transcriptId":{"value":"9eedaa8a-085e-440c-8f2d-665830944ce9","system":"https://www.ensembl.org/index.html"},"position":{"start":497},"altAllele":"G","refAllele":"C","dnaChange":{"code":"c.497C>G","system":"https://hgvs-nomenclature.org"},"proteinChange":{"code":"p.Lys23_Val25del","system":"https://hgvs-nomenclature.org"},"readDepth":9,"allelicFrequency":0.14597505331005867,"interpretation":{"code":"3","display":"Uncertain significance","system":"https://www.ncbi.nlm.nih.gov/clinvar/"}},{"id":"546c0677-a7b7-4d55-b3d8-5151457b023d","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"externalIds":[{"value":"299b3cac-3ad2-4203-9754-a7613ee8dea5","system":"https://www.ncbi.nlm.nih.gov/snp/"},{"value":"22f767c3-b359-401e-a0b1-647adffe3ee9","system":"https://cancer.sanger.ac.uk/cosmic"}],"chromosome":{"code":"chr4","display":"chr4","system":"chromosome"},"gene":{"code":"HGNC:5173","display":"HRAS","system":"https://www.genenames.org/"},"transcriptId":{"value":"34357423-91b1-46c3-b9a4-b9e236d07d7d","system":"https://www.ensembl.org/index.html"},"position":{"start":449},"altAllele":"T","refAllele":"C","dnaChange":{"code":"c.449C>T","system":"https://hgvs-nomenclature.org"},"proteinChange":{"code":"p.Lys23_Val25del","system":"https://hgvs-nomenclature.org"},"readDepth":21,"allelicFrequency":0.929058459806847,"interpretation":{"code":"4","display":"Likely pathogenic","system":"https://www.ncbi.nlm.nih.gov/clinvar/"}},{"id":"30f5ad5a-ac59-4fc2-af19-9321d5aad4ea","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"externalIds":[{"value":"c27a1775-dbba-42af-9641-9c26c44c3866","system":"https://www.ncbi.nlm.nih.gov/snp/"},{"value":"a6fab5be-b2b5-4260-8a2c-681d9cfef100","system":"https://cancer.sanger.ac.uk/cosmic"}],"chromosome":{"code":"chr9","display":"chr9","system":"chromosome"},"gene":{"code":"HGNC:6407","display":"KRAS","system":"https://www.genenames.org/"},"transcriptId":{"value":"b82aafff-afc1-40fe-bde0-e5b7f3c06b9d","system":"https://www.ensembl.org/index.html"},"position":{"start":199},"altAllele":"G","refAllele":"T","dnaChange":{"code":"c.199T>G","system":"https://hgvs-nomenclature.org"},"proteinChange":{"code":"p.(Glu125_Ala132delinsGlyLeuHisArgPheIleValLeu)","system":"https://hgvs-nomenclature.org"},"readDepth":23,"allelicFrequency":0.6280972522555942,"interpretation":{"code":"0","display":"Not Applicable","system":"https://www.ncbi.nlm.nih.gov/clinvar/"}},{"id":"dffc6391-c2dd-4114-9b35-21048b16a5e8","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"externalIds":[{"value":"9c2af2ba-c400-4bdc-aa45-bcffa01b86c0","system":"https://www.ncbi.nlm.nih.gov/snp/"},{"value":"00be47f4-d2ac-4c90-9569-3909693e050b","system":"https://cancer.sanger.ac.uk/cosmic"}],"chromosome":{"code":"chr2","display":"chr2","system":"chromosome"},"gene":{"code":"HGNC:3690","display":"FGFR3","system":"https://www.genenames.org/"},"transcriptId":{"value":"bc9d7f41-1e33-44c6-8854-32ba14c7bc85","system":"https://www.ensembl.org/index.html"},"position":{"start":446},"altAllele":"A","refAllele":"C","dnaChange":{"code":"c.446C>A","system":"https://hgvs-nomenclature.org"},"proteinChange":{"code":"p.Cys28delinsTrpVal","system":"https://hgvs-nomenclature.org"},"readDepth":6,"allelicFrequency":0.8192427503946907,"interpretation":{"code":"2","display":"Likely benign","system":"https://www.ncbi.nlm.nih.gov/clinvar/"}},{"id":"97021fec-3038-4d40-a923-a7185f2dd45c","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"externalIds":[{"value":"b3e669b9-daec-4020-a876-fe8cd984ec07","system":"https://www.ncbi.nlm.nih.gov/snp/"},{"value":"5328e42e-bcd2-4dd2-ac2c-e52d860e7cdb","system":"https://cancer.sanger.ac.uk/cosmic"}],"chromosome":{"code":"chr4","display":"chr4","system":"chromosome"},"gene":{"code":"HGNC:391","display":"AKT1","system":"https://www.genenames.org/"},"transcriptId":{"value":"02e810a2-a8ee-48fa-98ee-c2555dedec2b","system":"https://www.ensembl.org/index.html"},"position":{"start":181},"altAllele":"C","refAllele":"G","dnaChange":{"code":"c.181G>C","system":"https://hgvs-nomenclature.org"},"proteinChange":{"code":"p.(His321Leufs*3)","system":"https://hgvs-nomenclature.org"},"readDepth":18,"allelicFrequency":0.9486252825502527,"interpretation":{"code":"0","display":"Not Applicable","system":"https://www.ncbi.nlm.nih.gov/clinvar/"}}],"copyNumberVariants":[{"id":"67f5f94a-7210-4298-832b-79cbd8c3f602","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chr19","display":"chr19","system":"chromosome"},"startRange":{"start":16044,"end":16086},"endRange":{"start":16189,"end":16239},"totalCopyNumber":1,"relativeCopyNumber":0.21581784365462364,"cnA":0.2529681162704943,"cnB":0.09643290658258796,"reportedAffectedGenes":[{"code":"HGNC:391","display":"AKT1","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"loss","display":"Loss","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:6407","display":"KRAS","system":"https://www.genenames.org/"}]},{"id":"81916886-c2bb-43c2-b3b1-8205b731aae5","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chr21","display":"chr21","system":"chromosome"},"startRange":{"start":39802,"end":39844},"endRange":{"start":40267,"end":40317},"totalCopyNumber":3,"relativeCopyNumber":0.6944561507132927,"cnA":0.7565931684718212,"cnB":0.7741518026256429,"reportedAffectedGenes":[{"code":"HGNC:6407","display":"KRAS","system":"https://www.genenames.org/"},{"code":"HGNC:1097","display":"BRAF","system":"https://www.genenames.org/"},{"code":"HGNC:1100","display":"BRCA1","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"low-level-gain","display":"Low-level-gain","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:3689","display":"FGFR2","system":"https://www.genenames.org/"}]},{"id":"1aaf355a-62ef-40ec-ac84-2ed6b64c25ce","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chr2","display":"chr2","system":"chromosome"},"startRange":{"start":7155,"end":7197},"endRange":{"start":7284,"end":7334},"totalCopyNumber":2,"relativeCopyNumber":0.11504463549534216,"cnA":0.6489287849115875,"cnB":0.13740853100802786,"reportedAffectedGenes":[{"code":"HGNC:391","display":"AKT1","system":"https://www.genenames.org/"},{"code":"HGNC:5173","display":"HRAS","system":"https://www.genenames.org/"},{"code":"HGNC:1100","display":"BRCA1","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"low-level-gain","display":"Low-level-gain","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:76","display":"ABL1","system":"https://www.genenames.org/"}]},{"id":"773f6c76-faaf-47bf-b554-709679935b9e","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chr19","display":"chr19","system":"chromosome"},"startRange":{"start":7321,"end":7363},"endRange":{"start":7867,"end":7917},"totalCopyNumber":1,"relativeCopyNumber":0.7259188532974242,"cnA":0.5950764310251827,"cnB":0.5384386131573586,"reportedAffectedGenes":[{"code":"HGNC:5173","display":"HRAS","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"loss","display":"Loss","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:3689","display":"FGFR2","system":"https://www.genenames.org/"},{"code":"HGNC:6407","display":"KRAS","system":"https://www.genenames.org/"}]},{"id":"4e7107e4-bbc6-41cc-b6fe-37e65b96ab57","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chr19","display":"chr19","system":"chromosome"},"startRange":{"start":16016,"end":16058},"endRange":{"start":16601,"end":16651},"totalCopyNumber":7,"relativeCopyNumber":0.20090926699505263,"cnA":0.022847976828443195,"cnB":0.4081382139537255,"reportedAffectedGenes":[{"code":"HGNC:1097","display":"BRAF","system":"https://www.genenames.org/"},{"code":"HGNC:76","display":"ABL1","system":"https://www.genenames.org/"},{"code":"HGNC:1100","display":"BRCA1","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"high-level-gain","display":"High-level-gain","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:5173","display":"HRAS","system":"https://www.genenames.org/"},{"code":"HGNC:3690","display":"FGFR3","system":"https://www.genenames.org/"}]},{"id":"d80eb862-7d46-453e-83e4-575c16d8a2f1","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"chromosome":{"code":"chrY","display":"chrY","system":"chromosome"},"startRange":{"start":12500,"end":12542},"endRange":{"start":12791,"end":12841},"totalCopyNumber":7,"relativeCopyNumber":0.6146868961350509,"cnA":0.05361036969744892,"cnB":0.7939811403382872,"reportedAffectedGenes":[{"code":"HGNC:6973","display":"MDM2","system":"https://www.genenames.org/"},{"code":"HGNC:391","display":"AKT1","system":"https://www.genenames.org/"},{"code":"HGNC:3689","display":"FGFR2","system":"https://www.genenames.org/"}],"reportedFocality":"partial q-arm","type":{"code":"high-level-gain","display":"High-level-gain","system":"dnpm-dip/mtb/ngs-report/cnv/type"},"copyNumberNeutralLoH":[{"code":"HGNC:6973","display":"MDM2","system":"https://www.genenames.org/"},{"code":"HGNC:391","display":"AKT1","system":"https://www.genenames.org/"}]}],"dnaFusions":[],"rnaFusions":[],"rnaSeqs":[]}}],"carePlans":[{"id":"6906ca1b-8169-471d-9156-e807654fae8a","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"issuedOn":"2024-07-09","statusReason":{"code":"no-target","display":"Keine Therapeutische Konsequenz","system":"dnpm-dip/mtb/careplan/status-reason"},"medicationRecommendations":[{"id":"dcb9b2c7-7311-4801-9675-948f00870070","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"issuedOn":"2024-07-09","levelOfEvidence":{"grading":{"code":"m4","display":"m4","system":"dnpm-dip/mtb/level-of-evidence/grading"},"addendums":[{"code":"R","display":"R","system":"dnpm-dip/mtb/level-of-evidence/addendum"}],"publications":[{"extId":{"value":"1173657729","system":"https://pubmed.ncbi.nlm.nih.gov/"},"type":"Publication"}]},"priority":{"code":"1","display":"1","system":"dnpm-dip/therapy-recommendation/priority"},"medication":[{"code":"L01EX08","display":"Lenvatinib","system":"http://fhir.de/CodeSystem/bfarm/atc","version":"2024"}],"supportingVariants":[{"id":"4e7107e4-bbc6-41cc-b6fe-37e65b96ab57","display":"CNV BRAF,ABL1,BRCA1 High-level-gain","type":"Variant"}]},{"id":"4478c7f1-cdcf-41f5-8245-7da7784279ef","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"issuedOn":"2024-07-09","levelOfEvidence":{"grading":{"code":"m2B","display":"m2B","system":"dnpm-dip/mtb/level-of-evidence/grading"},"addendums":[{"code":"R","display":"R","system":"dnpm-dip/mtb/level-of-evidence/addendum"}],"publications":[{"extId":{"value":"855039712","system":"https://pubmed.ncbi.nlm.nih.gov/"},"type":"Publication"}]},"priority":{"code":"4","display":"4","system":"dnpm-dip/therapy-recommendation/priority"},"medication":[{"code":"L01FX05","display":"Brentuximab vedotin","system":"http://fhir.de/CodeSystem/bfarm/atc","version":"2024"}],"supportingVariants":[{"id":"ab846e35-c4c1-4ead-a7ba-f070b03c155e","display":"SNV KRAS p.Lys23_Val25del","type":"Variant"}]}],"geneticCounselingRecommendation":{"id":"432f3ff8-ac56-4139-94c9-fa685bc37130","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"issuedOn":"2024-07-09","reason":{"code":"secondary-tumor","display":"Zweittumor","system":"dnpm-dip/mtb/recommendation/genetic-counseling/reason"}},"studyEnrollmentRecommendations":[{"id":"fac762fb-288f-4e26-a2f2-ccdf03c9804d","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"reason":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"issuedOn":"2024-07-09","levelOfEvidence":{"code":"m4","display":"m4","system":"dnpm-dip/mtb/level-of-evidence/grading"},"supportingVariants":[{"id":"4e7107e4-bbc6-41cc-b6fe-37e65b96ab57","display":"CNV BRAF,ABL1,BRCA1 High-level-gain","type":"Variant"}],"studies":[{"value":"NCT:21972101","system":"NCT"}]}],"notes":"Protocol of the MTB conference..."}],"claims":[{"id":"b5dd7735-0dfc-49c4-ac4d-f17ee5b3afe8","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"recommendation":{"id":"dcb9b2c7-7311-4801-9675-948f00870070","type":"MTBMedicationRecommendation"},"issuedOn":"2024-07-09","stage":{"code":"initial-claim","display":"Erstantrag","system":"dnpm-dip/mtb/claim/stage"}},{"id":"ba800730-ad27-4723-a4dc-dd02bfd96f79","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"recommendation":{"id":"4478c7f1-cdcf-41f5-8245-7da7784279ef","type":"MTBMedicationRecommendation"},"issuedOn":"2024-07-09","stage":{"code":"initial-claim","display":"Erstantrag","system":"dnpm-dip/mtb/claim/stage"}}],"claimResponses":[{"id":"4d70791b-1727-4a80-8afc-ee655acfdb77","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"claim":{"id":"b5dd7735-0dfc-49c4-ac4d-f17ee5b3afe8","type":"Claim"},"issuedOn":"2024-07-09","status":{"code":"rejected","display":"Abgelehnt","system":"dnpm-dip/mtb/claim-response/status"},"statusReason":{"code":"unknown","display":"Unbekant","system":"dnpm-dip/mtb/claim-response/status-reason"}},{"id":"82ecffc7-5ac8-47d7-9697-27061c1b1c53","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"claim":{"id":"ba800730-ad27-4723-a4dc-dd02bfd96f79","type":"Claim"},"issuedOn":"2024-07-09","status":{"code":"rejected","display":"Abgelehnt","system":"dnpm-dip/mtb/claim-response/status"},"statusReason":{"code":"unknown","display":"Unbekant","system":"dnpm-dip/mtb/claim-response/status-reason"}}],"therapies":[{"history":[{"id":"6f0f1bb5-7633-4834-8ed4-0efb43bcaf42","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"basedOn":{"id":"dcb9b2c7-7311-4801-9675-948f00870070","type":"MTBMedicationRecommendation"},"recordedOn":"2024-07-09","status":{"code":"on-going","display":"Laufend","system":"dnpm-dip/therapy/status"},"period":{"start":"2007-09-29","end":"2008-03-15"},"medication":[{"code":"L01EX08","display":"Lenvatinib","system":"http://fhir.de/CodeSystem/bfarm/atc","version":"2024"}],"notes":"Notes on the therapy..."}]},{"history":[{"id":"634aa031-a4a1-4137-8895-07dcb543e245","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"indication":{"id":"2b478ee3-f5c0-4429-8367-7215b1908a19","display":"Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen","type":"MTBDiagnosis"},"basedOn":{"id":"4478c7f1-cdcf-41f5-8245-7da7784279ef","type":"MTBMedicationRecommendation"},"recordedOn":"2024-07-09","status":{"code":"not-done","display":"Nicht umgesetzt","system":"dnpm-dip/therapy/status"},"statusReason":{"code":"payment-refused","display":"Kostenübernahme abgelehnt","system":"dnpm-dip/therapy/status-reason"},"notes":"Notes on the therapy..."}]}],"responses":[{"id":"f9e27ff2-0b65-4416-86cd-2b4085fd92a2","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"therapy":{"id":"6f0f1bb5-7633-4834-8ed4-0efb43bcaf42","type":"MTBMedicationTherapy"},"effectiveDate":"2008-01-12","value":{"code":"CR","display":"Complete Response","system":"RECIST"}},{"id":"9231408b-bc7e-482a-808b-3af09b212dad","patient":{"id":"fbd23d0b-f81b-4a2f-b53b-e93871069cfd","type":"Patient"},"therapy":{"id":"634aa031-a4a1-4137-8895-07dcb543e245","type":"MTBMedicationTherapy"},"effectiveDate":"2024-07-09","value":{"code":"SD","display":"Stable Disease","system":"RECIST"}}]} \ No newline at end of file