Skip to content

Commit ebc6e5a

Browse files
committed
Add implication identifiers
Also remove them from the variants
1 parent 622edc5 commit ebc6e5a

File tree

16 files changed

+8690
-7579
lines changed

16 files changed

+8690
-7579
lines changed

app/common.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -805,23 +805,6 @@ def create_genotype_profile(genotype, subject, gids):
805805
return resource
806806

807807

808-
def add_variation_id(resource, variation_id):
809-
spdi_index = next((i for i, item in enumerate(resource["component"]) if item["code"]["coding"][0]["code"] == "81252-9"), None)
810-
811-
for var_id in variation_id:
812-
if spdi_index is not None:
813-
resource["component"][spdi_index]["valueCodeableConcept"]["coding"].append(
814-
{"system": f'{var_id["system"]}',
815-
"code": f'{var_id["code"]}'})
816-
else:
817-
resource["component"].append(
818-
{"code": {"coding": [{"system": "http://loinc.org",
819-
"code": "81252-9",
820-
"display": "Discrete genetic variant"}]},
821-
"valueCodeableConcept": {"coding": [{"system": f'{var_id["system"]}',
822-
"code": f'{var_id["code"]}'}]}})
823-
824-
825808
def create_sequence_phase_relationship(subject, sequence_phase_data):
826809
resource = OrderedDict()
827810
resource["resourceType"] = "Observation"

app/endpoints.py

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from flask import abort, jsonify
21
from collections import OrderedDict
2+
3+
from flask import abort, jsonify
4+
35
from app import common
46

57

@@ -876,8 +878,13 @@ def find_subject_tx_implications(
876878
if res["txImplicationMatches"]:
877879
ref_seq = common.get_ref_seq_by_chrom_and_build(res['genomicBuild'], res['CHROM'])
878880
for implication in res["txImplicationMatches"]:
879-
880881
implication_profile = common.create_tx_implication_profile_civic(implication, subject, [str(res['_id'])])
882+
if "variationID" in implication:
883+
implication_profile["identifier"] = []
884+
for var_id in implication["variationID"]:
885+
implication_profile["identifier"].append(
886+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
887+
881888
impl_param = {
882889
"name": "implication",
883890
"resource": implication_profile
@@ -887,7 +894,6 @@ def find_subject_tx_implications(
887894
resource = common.create_fhir_variant_resource(
888895
res, ref_seq, subject)
889896

890-
common.add_variation_id(resource, implication["variationID"])
891897
variant_param = {
892898
"name": "variant",
893899
"resource": resource
@@ -908,6 +914,12 @@ def find_subject_tx_implications(
908914
for implication in res["txImplicationMatches"]:
909915

910916
implication_profile = common.create_tx_implication_profile_pharmgkb(implication, subject, [str(res['_id'])])
917+
if "variationID" in implication:
918+
implication_profile["identifier"] = []
919+
for var_id in implication["variationID"]:
920+
implication_profile["identifier"].append(
921+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
922+
911923
impl_param = {
912924
"name": "implication",
913925
"resource": implication_profile
@@ -923,8 +935,6 @@ def find_subject_tx_implications(
923935

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

926-
common.add_variation_id(
927-
genotype_profile, implication["variationID"])
928938
geno_param = {
929939
"name": "genotype",
930940
"resource": genotype_profile
@@ -943,6 +953,12 @@ def find_subject_tx_implications(
943953
for res in query_results_PGKB:
944954

945955
implication_profile = common.create_tx_implication_profile_pharmgkb(res, subject, [str(i['_id']) for i in res["patientMatches"]])
956+
if "variationID" in res:
957+
implication_profile["identifier"] = []
958+
for var_id in res["variationID"]:
959+
implication_profile["identifier"].append(
960+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
961+
946962
impl_param = {
947963
"name": "implication",
948964
"resource": implication_profile
@@ -960,8 +976,6 @@ def find_subject_tx_implications(
960976

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

963-
common.add_variation_id(genotype_profile, res["variationID"])
964-
965979
genotype_profiles.append(genotype_profile)
966980

967981
if genotype_profiles:
@@ -977,6 +991,12 @@ def find_subject_tx_implications(
977991
for res in query_results_CIViC:
978992

979993
implication_profile = common.create_tx_implication_profile_civic(res, subject, [str(i['_id']) for i in res["patientMatches"]])
994+
if "variationID" in res:
995+
implication_profile["identifier"] = []
996+
for var_id in res["variationID"]:
997+
implication_profile["identifier"].append(
998+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
999+
9801000
impl_param = {
9811001
"name": "implication",
9821002
"resource": implication_profile
@@ -988,8 +1008,6 @@ def find_subject_tx_implications(
9881008
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
9891009
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)
9901010

991-
common.add_variation_id(resource, res["variationID"])
992-
9931011
variant_fhir_profiles.append(resource)
9941012

9951013
if variant_fhir_profiles:
@@ -1011,6 +1029,12 @@ def find_subject_tx_implications(
10111029
for res in query_results:
10121030

10131031
implication_profile = common.create_tx_implication_profile_civic(res, subject, [str(i['_id']) for i in res["patientMatches"]])
1032+
if "variationID" in res:
1033+
implication_profile["identifier"] = []
1034+
for var_id in res["variationID"]:
1035+
implication_profile["identifier"].append(
1036+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
1037+
10141038
impl_param = {
10151039
"name": "implication",
10161040
"resource": implication_profile
@@ -1022,8 +1046,6 @@ def find_subject_tx_implications(
10221046
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
10231047
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)
10241048

1025-
common.add_variation_id(resource, res["variationID"])
1026-
10271049
variant_fhir_profiles.append(resource)
10281050

10291051
if variant_fhir_profiles:
@@ -1134,6 +1156,12 @@ def find_subject_dx_implications(
11341156
for implication in res["dxImplicationMatches"]:
11351157

11361158
implication_profile = common.create_dx_implication_profile(implication, subject, [str(res['_id'])])
1159+
if "variationID" in implication:
1160+
implication_profile["identifier"] = []
1161+
for var_id in implication["variationID"]:
1162+
implication_profile["identifier"].append(
1163+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
1164+
11371165
impl_param = {
11381166
"name": "implication",
11391167
"resource": implication_profile
@@ -1142,7 +1170,6 @@ def find_subject_dx_implications(
11421170

11431171
resource = common.create_fhir_variant_resource(
11441172
res, ref_seq, subject)
1145-
common.add_variation_id(resource, implication["variationID"])
11461173
variant_param = {
11471174
"name": "variant",
11481175
"resource": resource
@@ -1161,6 +1188,12 @@ def find_subject_dx_implications(
11611188
for res in query_results:
11621189

11631190
implication_profile = common.create_dx_implication_profile(res, subject, [str(i['_id']) for i in res["patientMatches"]])
1191+
if "variationID" in res:
1192+
implication_profile["identifier"] = []
1193+
for var_id in res["variationID"]:
1194+
implication_profile["identifier"].append(
1195+
{"system": f'{var_id["system"]}', "value": f'{var_id["code"]}'})
1196+
11641197
impl_param = {
11651198
"name": "implication",
11661199
"resource": implication_profile
@@ -1171,7 +1204,6 @@ def find_subject_dx_implications(
11711204
ref_seq = common.get_ref_seq_by_chrom_and_build(varItem['genomicBuild'], varItem['CHROM'])
11721205
resource = common.create_fhir_variant_resource(varItem, ref_seq, subject)
11731206

1174-
common.add_variation_id(resource, res["variationID"])
11751207
variant_param = {
11761208
"name": "variant",
11771209
"resource": resource

tests/expected_outputs/find_population_specific_variants/3.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
{
1818
"name": "denominator",
1919
"valueQuantity": {
20-
"value": 1115
20+
"value": 1116
2121
}
2222
}
2323
]
@@ -38,7 +38,7 @@
3838
{
3939
"name": "denominator",
4040
"valueQuantity": {
41-
"value": 1115
41+
"value": 1116
4242
}
4343
}
4444
]
@@ -59,7 +59,7 @@
5959
{
6060
"name": "denominator",
6161
"valueQuantity": {
62-
"value": 1115
62+
"value": 1116
6363
}
6464
}
6565
]

tests/expected_outputs/find_subject_dx_implications/1.json

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@
9393
"text": "criteria provided, single submitter"
9494
}
9595
}
96+
],
97+
"identifier": [
98+
{
99+
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
100+
"value": "873683"
101+
},
102+
{
103+
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
104+
"value": "SCV001252233.1"
105+
}
96106
]
97107
}
98108
},
@@ -214,14 +224,6 @@
214224
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
215225
"code": "NC_000001.10:161333381:C:T",
216226
"display": "NC_000001.10:161333381:C:T"
217-
},
218-
{
219-
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
220-
"code": "873683"
221-
},
222-
{
223-
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
224-
"code": "SCV001252233.1"
225227
}
226228
]
227229
}

tests/expected_outputs/find_subject_dx_implications/2.json

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@
9393
"text": "criteria provided, single submitter"
9494
}
9595
}
96+
],
97+
"identifier": [
98+
{
99+
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
100+
"value": "873683"
101+
},
102+
{
103+
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
104+
"value": "SCV001252233.1"
105+
}
96106
]
97107
}
98108
},
@@ -214,14 +224,6 @@
214224
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
215225
"code": "NC_000001.10:161333381:C:T",
216226
"display": "NC_000001.10:161333381:C:T"
217-
},
218-
{
219-
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
220-
"code": "873683"
221-
},
222-
{
223-
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
224-
"code": "SCV001252233.1"
225227
}
226228
]
227229
}
@@ -413,6 +415,16 @@
413415
"text": "criteria provided, single submitter"
414416
}
415417
}
418+
],
419+
"identifier": [
420+
{
421+
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
422+
"value": "44641"
423+
},
424+
{
425+
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
426+
"value": "SCV000351450.3"
427+
}
416428
]
417429
}
418430
},
@@ -534,14 +546,6 @@
534546
"system": "https://api.ncbi.nlm.nih.gov/variation/v0/",
535547
"code": "NC_000001.10:17380496:G:T",
536548
"display": "NC_000001.10:17380496:G:T"
537-
},
538-
{
539-
"system": "http://www.ncbi.nlm.nih.gov/clinvar",
540-
"code": "44641"
541-
},
542-
{
543-
"system": "http://www.ncbi.nlm.nih.gov/clinvar/scv",
544-
"code": "SCV000351450.3"
545549
}
546550
]
547551
}

0 commit comments

Comments
 (0)