Skip to content

Commit

Permalink
Add implication identifiers
Browse files Browse the repository at this point in the history
Also remove them from the variants
  • Loading branch information
mihaitodor committed Apr 4, 2024
1 parent 622edc5 commit ebc6e5a
Show file tree
Hide file tree
Showing 16 changed files with 8,690 additions and 7,579 deletions.
17 changes: 0 additions & 17 deletions app/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -805,23 +805,6 @@ def create_genotype_profile(genotype, subject, gids):
return resource


def add_variation_id(resource, variation_id):
spdi_index = next((i for i, item in enumerate(resource["component"]) if item["code"]["coding"][0]["code"] == "81252-9"), None)

for var_id in variation_id:
if spdi_index is not None:
resource["component"][spdi_index]["valueCodeableConcept"]["coding"].append(
{"system": f'{var_id["system"]}',
"code": f'{var_id["code"]}'})
else:
resource["component"].append(
{"code": {"coding": [{"system": "http://loinc.org",
"code": "81252-9",
"display": "Discrete genetic variant"}]},
"valueCodeableConcept": {"coding": [{"system": f'{var_id["system"]}',
"code": f'{var_id["code"]}'}]}})


def create_sequence_phase_relationship(subject, sequence_phase_data):
resource = OrderedDict()
resource["resourceType"] = "Observation"
Expand Down
58 changes: 45 additions & 13 deletions app/endpoints.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from flask import abort, jsonify
from collections import OrderedDict

from flask import abort, jsonify

from app import common


Expand Down Expand Up @@ -876,8 +878,13 @@ def find_subject_tx_implications(
if res["txImplicationMatches"]:
ref_seq = common.get_ref_seq_by_chrom_and_build(res['genomicBuild'], res['CHROM'])
for implication in res["txImplicationMatches"]:

implication_profile = common.create_tx_implication_profile_civic(implication, subject, [str(res['_id'])])
if "variationID" in implication:
implication_profile["identifier"] = []
for var_id in implication["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -887,7 +894,6 @@ def find_subject_tx_implications(
resource = common.create_fhir_variant_resource(
res, ref_seq, subject)

common.add_variation_id(resource, implication["variationID"])
variant_param = {
"name": "variant",
"resource": resource
Expand All @@ -908,6 +914,12 @@ def find_subject_tx_implications(
for implication in res["txImplicationMatches"]:

implication_profile = common.create_tx_implication_profile_pharmgkb(implication, subject, [str(res['_id'])])
if "variationID" in implication:
implication_profile["identifier"] = []
for var_id in implication["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -923,8 +935,6 @@ def find_subject_tx_implications(

genotype_profile = common.create_genotype_profile(res, subject, [str(res['_id'])])

common.add_variation_id(
genotype_profile, implication["variationID"])
geno_param = {
"name": "genotype",
"resource": genotype_profile
Expand All @@ -943,6 +953,12 @@ def find_subject_tx_implications(
for res in query_results_PGKB:

implication_profile = common.create_tx_implication_profile_pharmgkb(res, subject, [str(i['_id']) for i in res["patientMatches"]])
if "variationID" in res:
implication_profile["identifier"] = []
for var_id in res["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -960,8 +976,6 @@ def find_subject_tx_implications(

genotype_profile = common.create_genotype_profile(genItem, subject, [str(genItem['_id'])])

common.add_variation_id(genotype_profile, res["variationID"])

genotype_profiles.append(genotype_profile)

if genotype_profiles:
Expand All @@ -977,6 +991,12 @@ def find_subject_tx_implications(
for res in query_results_CIViC:

implication_profile = common.create_tx_implication_profile_civic(res, subject, [str(i['_id']) for i in res["patientMatches"]])
if "variationID" in res:
implication_profile["identifier"] = []
for var_id in res["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -988,8 +1008,6 @@ def find_subject_tx_implications(
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)

common.add_variation_id(resource, res["variationID"])

variant_fhir_profiles.append(resource)

if variant_fhir_profiles:
Expand All @@ -1011,6 +1029,12 @@ def find_subject_tx_implications(
for res in query_results:

implication_profile = common.create_tx_implication_profile_civic(res, subject, [str(i['_id']) for i in res["patientMatches"]])
if "variationID" in res:
implication_profile["identifier"] = []
for var_id in res["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -1022,8 +1046,6 @@ def find_subject_tx_implications(
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)

common.add_variation_id(resource, res["variationID"])

variant_fhir_profiles.append(resource)

if variant_fhir_profiles:
Expand Down Expand Up @@ -1134,6 +1156,12 @@ def find_subject_dx_implications(
for implication in res["dxImplicationMatches"]:

implication_profile = common.create_dx_implication_profile(implication, subject, [str(res['_id'])])
if "variationID" in implication:
implication_profile["identifier"] = []
for var_id in implication["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -1142,7 +1170,6 @@ def find_subject_dx_implications(

resource = common.create_fhir_variant_resource(
res, ref_seq, subject)
common.add_variation_id(resource, implication["variationID"])
variant_param = {
"name": "variant",
"resource": resource
Expand All @@ -1161,6 +1188,12 @@ def find_subject_dx_implications(
for res in query_results:

implication_profile = common.create_dx_implication_profile(res, subject, [str(i['_id']) for i in res["patientMatches"]])
if "variationID" in res:
implication_profile["identifier"] = []
for var_id in res["variationID"]:
implication_profile["identifier"].append(
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})

impl_param = {
"name": "implication",
"resource": implication_profile
Expand All @@ -1171,7 +1204,6 @@ def find_subject_dx_implications(
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)

common.add_variation_id(resource, res["variationID"])
variant_param = {
"name": "variant",
"resource": resource
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
{
"name": "denominator",
"valueQuantity": {
"value": 1115
"value": 1116
}
}
]
Expand All @@ -38,7 +38,7 @@
{
"name": "denominator",
"valueQuantity": {
"value": 1115
"value": 1116
}
}
]
Expand All @@ -59,7 +59,7 @@
{
"name": "denominator",
"valueQuantity": {
"value": 1115
"value": 1116
}
}
]
Expand Down
18 changes: 10 additions & 8 deletions tests/expected_outputs/find_subject_dx_implications/1.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,16 @@
"text": "criteria provided, single submitter"
}
}
],
"identifier": [
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"value": "873683"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"value": "SCV001252233.1"
}
]
}
},
Expand Down Expand Up @@ -214,14 +224,6 @@
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
"code": "NC_000001.10:161333381:C:T",
"display": "NC_000001.10:161333381:C:T"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"code": "873683"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"code": "SCV001252233.1"
}
]
}
Expand Down
36 changes: 20 additions & 16 deletions tests/expected_outputs/find_subject_dx_implications/2.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,16 @@
"text": "criteria provided, single submitter"
}
}
],
"identifier": [
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"value": "873683"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"value": "SCV001252233.1"
}
]
}
},
Expand Down Expand Up @@ -214,14 +224,6 @@
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
"code": "NC_000001.10:161333381:C:T",
"display": "NC_000001.10:161333381:C:T"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"code": "873683"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"code": "SCV001252233.1"
}
]
}
Expand Down Expand Up @@ -413,6 +415,16 @@
"text": "criteria provided, single submitter"
}
}
],
"identifier": [
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"value": "44641"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"value": "SCV000351450.3"
}
]
}
},
Expand Down Expand Up @@ -534,14 +546,6 @@
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
"code": "NC_000001.10:17380496:G:T",
"display": "NC_000001.10:17380496:G:T"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
"code": "44641"
},
{
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
"code": "SCV000351450.3"
}
]
}
Expand Down
Loading

0 comments on commit ebc6e5a

Please sign in to comment.