Skip to content

Commit

Permalink
Fix FHIR structure
Browse files Browse the repository at this point in the history
  • Loading branch information
mihaitodor committed Jun 13, 2024
1 parent dc67db0 commit a8e326b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 30 deletions.
17 changes: 0 additions & 17 deletions app/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -879,23 +879,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 @@ -862,8 +864,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 @@ -873,7 +880,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 @@ -894,6 +900,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 @@ -909,8 +921,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 @@ -929,6 +939,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 @@ -946,8 +962,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 @@ -963,6 +977,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 @@ -974,8 +994,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 @@ -997,6 +1015,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 @@ -1008,8 +1032,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 @@ -1110,6 +1132,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 @@ -1118,7 +1146,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 @@ -1137,6 +1164,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 @@ -1147,7 +1180,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

0 comments on commit a8e326b

Please sign in to comment.