Open allisonheath opened 3 years ago
Do you have a list of fields from your source data? Some idea of prevalence and importance would also be helpful to review the fit!
https://www.hl7.org/fhir/valueset-body-site.html points at snomed codes. This is an important item for consensus. Likewise for collection method. https://www.hl7.org/fhir/valueset-specimen-collection-method.html
Tumor/normal is a common use case. Is this supported?
Hi @bwalsh - Those are "Example" bindings, which means there is no weight given to the provided valuesets. You can tell because of the (Example) listed after the valueset links on the Specimen resource page. More info is available here: https://www.hl7.org/fhir/terminologies.html#strength
Re consensus, we may provide a list of our own in the IG, but it's not strictly necessary. This is where I expect we'll need to provide some of the terminology services you brought up on the call- there are likely structured links among common vocabs.
Re tumor/normal- nothing obvious stands out to me here, but it seems like it really ought to exist. Not sure if I'm missing something.
Right now we've been using NCIt for specimen terminologies, as we reused a lot from the GDC. We have also done some light mapping to Uberon for anatomical site for comparative/model organism work. Not opposed to snomed (other than the licensing issues that pop up from time to time), especially as we're likely going to start getting data from clinically sequenced samples.
Also I guess to note - we keep the consent linked to the specific specimen, this is the level that dbGaP keeps it at and helps to distinguish if different specimens were take from the same person under different consents.
On a per-specimen basis, yes it can handle normal samples and tumor samples. But @bwalsh are you talking about knowing what specimen pairs were (or should be) used for analysis? Or being able to query to find availability of tumor/normal pairs? Or something else?
And here are our current list of fields:
entity | property |
---|---|
biospecimen | age_at_event_days |
biospecimen | composition |
biospecimen | concentration_mg_per_ml |
biospecimen | consent_type |
biospecimen | dbgap_consent_code |
biospecimen | external_sample_id |
biospecimen | kf_id |
biospecimen | method_of_sample_procurement |
biospecimen | ncit_id_anatomical_site |
biospecimen | ncit_id_tissue_type |
biospecimen | participant_id |
biospecimen | sequencing_center_id |
biospecimen | source_text_anatomical_site |
biospecimen | source_text_tissue_type |
biospecimen | source_text_tumor_descriptor |
biospecimen | spatial_descriptor |
biospecimen | uberon_id_anatomical_site |
biospecimen | visible |
biospecimen | volume_ul |
aliquot | analyte_type |
aliquot | concentration_mg_per_ml |
aliquot | external_aliquot_id |
aliquot | external_sample_id |
aliquot | shipment_date |
aliquot | shipment_origin |
aliquot | volume_ul |
aliquot | kf_id |
For CMG, we advocated for UBERON codes.
@allisonheath I think the question was "How do you indicate in FHIR if a Specimen
is tumor or normal?".
Here is an example of a KFDRC specimen using FHIR:
{
"resourceType": "Specimen",
"id": "bs-001-no-phi",
"meta": {
"profile": [
"http://fhir.kids-first.io/StructureDefinition/kfdrc-specimen-no-phi"
],
"versionId": "0.1.0",
"lastUpdated": "2020-07-20T20:58:16.025096+00:00"
},
"extension": [
{
"url": "http://fhir.kids-first.io/StructureDefinition/age-at-event",
"valueAge": {
"value": 2750,
"unit": "d",
"system": "http://unitsofmeasure.org",
"code": "days"
}
},
{
"url": "http://fhir.kids-first.io/StructureDefinition/concentration",
"valueQuantity": {
"value": 0.05,
"unit": "mg/mL"
}
}
],
"identifier": [
{
"system": "https://kf-api-dataservice.kidsfirstdrc.org/biospecimens?study_id=SD_BHJXBDQK",
"value": "571312"
}
],
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0487",
"code": "TISS",
"display": "Tissue"
}
],
"text": "Solid Tissue"
},
"subject": {
"reference": "Patient/pt-001-no-phi"
},
"collection": {
"quantity": {
"value": 50.0,
"unit": "uL"
},
"bodySite": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "21483005",
"display": "Structure of central nervous system"
}
],
"text": "Central Nervous System"
},
"method": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "129314006",
"display": "Biopsy - action"
}
],
"text": "Biopsy"
}
}
}
We've added two extensions:
age-at-event
: For the X01 studies, we receive de-identified collection dates (e.g. in days), so we had to either expand the collected[x]
attribute or create a new extension. Given we don't usually receive identified dates for diagnoses and phenotypes as well, we decided to create this extension to be used for Specimen as well as other profiles such as Condition and Observation.concentration
: This is a different metric from collection.quantity
, so we had to create itRe collection.bodySite
: Given the use of SNOMED CT is an example (not required) and the attribute's data type is CodeableConcept
, I am down for putting as many codes from authoritative ontologies as possible. So, the above example can be:
{
"collection": {
"bodySite": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "21483005",
"display": "Structure of central nervous system"
},
{
"system": "http://purl.obolibrary.org/obo/ncit.owl",
"code": "NCIT:C12438",
"display": "Central Nervous System"
},
{
"system": "http://purl.obolibrary.org/obo/uberon.owl",
"code": "UBERON:0001017",
"display": "central nervous system"
}
],
"text": "Central Nervous System"
}
}
}
Re tumor/normal: Specimen has a type
attribute which is pre-bound to a v2 Specimen Type ValuetSet. Again, the use of this ValueSet is not required, but it is pretty inclusive. The above example also use this ValueSet to code TISS
. This ValueSet also includes:
{
"code": "TUMOR",
"display": "Tumor"
}
But, it doesn't have a code for Normal. We can do something like the followings:
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0487",
"code": "TISS",
"display": "Tissue"
},
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0487",
"code": "TUMOR",
"display": "Tumor"
}
],
"text": "Tumor Tissue"
}
}
{
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0487",
"code": "TISS",
"display": "Tissue"
}
],
"text": "Normal Tissue"
}
}
Ah, thanks. Type
makes sense. I didn't think about it further after seeing it included things like blood!
Requester information
Please provide the following information:
Request Details
Please provide the following information about what you wanting to accomplish with your model change request:
cc @liberaliscomputing @nicholasvk @youngnm @baileyckelly